You are hereLinux

Linux


Een bug die maar niet gefixt geraakt

Aantal dagen sinds bug #32415 gemeld werd

Nog enkele maanden en er is een Ubuntu bug die 6 jaar oud is.
Ondanks de beschrijving, gaat het niet alleen om Apple Bluetooth keyboards, maar ook om Logitech MX900, MX5000, MX1000, Lenovo bluetooth,... Ik vermoed dat die keyboards en muizen allemaal dezelfde bluetooth dongle gebruiken.

En kom nu niet af dat het allemaal de schuld is van hardwarefabrikanten, want in Opensuse werkt dit wél zoals het hoort.

Ik vind dat erg. 6 jaar staat die bug open, users zitten daar logs te dumpen tot en met, en geen enkele developer die er naar omkijkt. En als er dan één user is die een extreem gecompliceerde workaround beschrijft (die zelfs niet voor iedereen werkt!), dan wordt de bug koudweg afgesloten.

Een mens zou voor minder overschakelen naar Apple of Microsoft.

Btrfs: het verdict

Btrfs is mooi op papier. Héél mooi. Copy-on-write. Snapshots. Vóór iedere apt-get upgrade automatisch een snapshot met apt-btrfs-snapshot. Geen zorgen meer over partities. Online devices verwijderen en weer toevoegen, een beetje zoals bij een Drobo, maar dan Free Software.

Echt waar, btrfs is fun.

MAAR!!!

Dan stel je plots vast dat je pc er 7 minuten over doet om te booten, in plaats van de gebruikelijke 20 seconden. Ik herhaal: ZE-VEN MI-NU-TEN. Bleek dat er een paar btrfs snapshots corrupt waren, en dat fsck.btrfs ze probeerde te herstellen bij het booten. Normaal is dat geen probleem, ware het niet dat fsck.btrfs nog niet af is en alleen read-only werkt. Fouten worden dus niet hersteld, bijgevolg gebeurt die fsck bij iedere reboot opnieuw.

Ik ben geen data kwijt, maar ik heb toch maar alles ge-rsync-t naar een externe schijf, de btrfs partitie geformatteerd naar ext4, en terug ge-rsync-t. Daarna bootte de pc terug onder de 20 seconden.

Btrfs gaat in de koelkast tot ze een deftige fsck hebben.

Zucht. Ik had beter moeten weten.

Weg met Unity, leve Gnome Shell!

Ik krijg het op mijn heupen van Unity, de nieuwe desktop van Ubuntu. Zodus:

sudo apt-get install gnome-shell gnome-theme* gnome-sushi gnome-contacts gnome-tweak-tool
sudo /usr/lib/lightdm/lightdm-set-defaults -s gnome-shell

Nah! Wink Nose

PS: Als ik een desktop wil zonder toeters en bellen, dan zal ik wel CTRL+ALT+F1 doen.

Audio troubleshooting na suspend/hibernate

(ter referentie voor mezelf)

Ik heb 2 audio outputs op mijn pc:

  • Internal Audio Analog Stereo
  • Logitech G30 Headset Digital Stereo (IEC958)

Na suspend werkte de Logitech headset niet meer. De oplossing heb ik gevonden op https://help.ubuntu.com/community/SoundTroubleshooting. Wanneer de pc uit suspend of hibernate komt, worden de scripts in /etc/pm/sleep.d/ uitgevoerd. Om audio opnieuw te laten werken, moet er een script aangemaakt worden om de pc te vertellen dat alsa herstart moet worden wanneer de pc uit suspend of hibernate komt.

sudo nano /etc/pm/sleep.d/50alsa
case "$1" in
        hibernate|suspend)
                # Stopping is not required
                ;;
        thaw|resume)
                /sbin/alsa force-reload
                ;;
        *) exit $NA
                ;;
esac

Maak het script uitvoerbaar:

sudo chmod +x /etc/pm/sleep.d/50alsa

Wuala

Ondertussen heeft iedereen al lang een Dropbox account. Indien niet: hier is een referral link, 2 GB storage in de cloud voor u en 250 MB extra voor mij: http://db.tt/AdWPVma.

De laatste tijd is er een en ander te doen over Dropbox, dat het by design niet zo veilig zou zijn, en dat Dropbox werknemers toegang hebben tot je bestanden. Ik wil al de argumenten voor en tegen hier niet oprakelen, maar omdat het sowieso geen goed idee is om alle eieren in één mandje te leggen, ben ik eens gaan rondkijken naar alternatieven.

Het Zwitserse Wuala, van hardeschijvenfabrikant LaCie, is zo'n alternatief. Er zijn nog *tig andere storage-in-the-cloud oplossingen zoals Sparkleshare (git-based, draait op uw eigen server(s)), Sugarsync (geen Linux support),... en de djoef van de week gaat naar de eerste commentator die er nog een paar andere opsomt. Nose Smile

Voor mij zijn dit de belangrijkste gelijkenissen en verschilpunten tussen Wuala en Dropbox:

  • Wuala claimt dat je bestanden versleuteld worden vóór ze naar hun systeem gaan. Bijgevolg kan het personeel van Wuala jouw bestanden nooit lezen. Dit in tegenstelling tot Dropbox, waar alleen de verbinding versleuteld is.
  • Beiden starten ze met een beperkte gratis ruimte (Dropbox 2GB, Wuala 1GB) die je kan uitbreiden door te betalen of via referrals. Bij deze geef ik mijn referral link voor Wuala:
    http://www.wuala.com/referral/BH73565NBBPN6CJCJF5M
  • Daarnaast kun je bij Wuala extra storage verdienen door te ruilen met andere Wuala-users, in een Wuala-cloud. Daarover later meer.
    Je kan het een beetje vergelijken met het uitwisselen van backupruimte met Crashplan.
    Je pc moet dan wel minstens 4 uur per dag aan staan en goed bereikbaar zijn. Een correcte router- en proxy-configuratie zijn dan noodzakelijk.
  • LaCie is het moederbedrijf van Wuala, dus als je een LaCie harde schijf koopt, dan zit daar tegenwoordig een code bij voor extra Wuala-storage.
  • Aangezien Dropbox zogezegd minder secure is dan Wuala, zou je de twee voor verschillende zaken kunnen gebruiken. Ik ga bijvoorbeeld mijn ebooks in Dropbox steken en mijn timesheets in Wuala. Mijn portable apps blijven voorlopig ook nog in Dropbox, zie blogpost: http://amedee.be/dropbox-portableapps-cloud-computing-ftw
  • Dropbox en Wuala werken allebei op Windows, Mac, Linux, headless Linux (servers yay!), Android.
    EDIT: Hans van Gent maakte er mij attent op dat Wuala ook compatibel is met iOS. Blijkbaar is iOS iets anders dan Mac. Tongue

De extra storage die je kan verdienen, wordt in principe berekend op basis van de gedeelde ruimte en hoe lang de pc online is. Bijvoorbeeld als je 10 GB aan de Wuala-cloud schenkt, en je pc staat 8 uur per dag aan, dan heb je 10 GB * 33% = 3,3 GB extra. De storage die je ter beschikking stelt, moet niet noodzakelijk allemaal op één pc zijn: de gedeelde storage wordt opgeteld. Bijvoorbeeld 10 GB 40% online en 20 GB 50% online geeft samen 14 GB extra. Wanneer je meer dan 20 GB deelt, wordt er ook rekening gehouden met hoeveel storage je effectief verbruikt.
Stel dat je een onderbenutte server hebt ergens in een datacenter, dan kan Wuala daar 24/7 op draaien. Als dat een Debian server is, dan vind je hier de installatie en een init script:

e-id werkt alweer niet

Het is weer die tijd van het jaar: de belastingsbrief moet ingevuld worden. En zoals gebruikelijk, zal ik weer een hele tijd zitten knoeien tot er niets anders op zit dan mijn e-id-lezer de allerlaatste dag mee te nemen naar mijn werk en op mijn werk-pc (met Windows XP) het nodige te doen. Meh.

Als er iemand mij uit de nood kan helpen: smijt het in de comments aub!
Ik heb:

Wanneer ik mijn e-id-lezer (ACR38U-CFC-ZET) inplug in een usb-poort, dan gaat de groene led knipperen met een frequentie van 1/seconde. Dat lijkt me in orde.

dmesg toont mij het volgende:

[ 3233.000038] usb 7-2: new full speed USB device using uhci_hcd and address 5
[ 3233.450040] usb 8-1: new low speed USB device using uhci_hcd and address 23
[ 3233.700031] usb 8-1: new low speed USB device using uhci_hcd and address 24
[ 3233.830032] usb 8-1: device descriptor read/64, error -71
[ 3234.190043] usb 8-1: new low speed USB device using uhci_hcd and address 25
[ 3234.610041] usb 8-1: device not accepting address 25, error -71
[ 3234.730030] usb 8-1: new low speed USB device using uhci_hcd and address 26
[ 3235.150037] usb 8-1: device not accepting address 26, error -71
[ 3235.150058] hub 8-0:1.0: unable to enumerate USB device on port 1

Lijkt me niet ok. De kaartlezer is nochtans aangesloten volgens lsusb:

Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 005: ID 072f:9000 Advanced Card Systems, Ltd ACR38 AC1038-based Smart Card Reader
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 003: ID 04ca:002f Lite-On Technology Corp.
Bus 005 Device 002: ID 046d:c054 Logitech, Inc.
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 046d:0a1f Logitech, Inc.
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 1307:0330 Transcend Information, Inc.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 045e:0728 Microsoft Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

En de e-id-viewer vraagt om een kaartlezer aan te sluiten:

't Werkt dus niet...

Post-Debian upgrade

Te fixen probleempjes na een Debian upgrade, voornamelijk als bookmark voor mezelf.

  • Restanten van MySQL 5.0 verwijderen + phpMyAdmin deed wat raar:
    sudo apt-get remove mysql-server-5.0
    sudo apt-get purge phpmyadmin
    sudo apt-get install phpmyadmin
  • SpamBayes spuwde een lelijke error:
    Traceback (most recent call last):
      File "/usr/bin/sb_filter.py", line 4, in <module>
        import pkg_resources
      File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2671, in
    <module>
        working_set.require(__requires__)
      File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 654, in
    require
        needed = self.resolve(parse_requirements(requirements))
      File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 552, in
    resolve
        raise DistributionNotFound(req)
    pkg_resources.DistributionNotFound: spambayes==1.1a6

    De oorzaak was een versiesprong van Python. Debian Lenny had 2.4, Debian Squeeze heeft 2.6.6.
    Oplossing: Spambayes 1.1a6 opnieuw downloaden van SourceForge, uitpakken, en installeren met:
    sudo python setup.py install

    Todo: blijkbaar is er al een versie 1.1b1 van SpamBayes
  • Ik had backup2l gepatcht, deze patchen waren weg door de upgrade. Door wat creatiever om te springen met find, zijn de patchen zelfs niet meer nodig.
    Dit is nu mijn nieuwe /etc/backup2l.conf (commentaren en lege lijnen weggelaten):
    FOR_VERSION=1.5
    VOLNAME="all"
    SRCLIST=(/bin /etc /home /lib /opt /root /sbin /srv /usr /var
                  -path '/home/amedee/download'    -prune
               -o -path '/home/backup/crashplan'   -prune
               -o -path '/home/backup/intrepid'    -prune
               -o -path '/home/*/Maildir'          -prune
               -o -path '*/home/*/Maildir/*.Trash' -prune
               -o -path '/lib/modules'             -prune
               -o -path '*lost+found'              -prune
               -o -path '*.nobackup*'              -prune
               -o -path '/usr/include'             -prune
               -o -path '/usr/share/zoneinfo'      -prune
               -o -path '/var/cache'               -prune
               -o -path '/var/lib/apt'             -prune
               -o -path '/var/lib/dpkg'            -prune
               -o -path '/var/lib/mysql'           -prune
               -o -path '/var/lock'                -prune
               -o -path '/var/log/apache2'         -prune
               -o -path '/var/mail'                -prune
               -o -path '/var/tmp'                 -prune
               -o -path '/var/run'                 -prune
               -o -path '/var/spool'               -prune
               -o -path '/var/www/squirrelmail'    -prune
               -o -path '/var/www/squid-reports'   -prune
               -o -path '*/.git'                   -prune
            )
    SKIPCOND=(
                  -type s
               -o -name "*~"
               -o -name "*.bak"
               -o -name "*.o"
               -o -name "*.old"
               -o -name "Thumbs.db"
               -o -wholename "*/home/*/Maildir/*dovecot*"
               -o -wholename "/var/log/mail*"
               -o -wholename "/var/www/sites/*/files/js/js_*.js"
             )
    BACKUP_DIR="/home/backup/intrepid"
    MAX_LEVEL=2
    MAX_PER_LEVEL=9
    MAX_FULL=8
    GENERATIONS=2
    CREATE_CHECK_FILE=1
    PRE_BACKUP ()
    {
            for script in /root/bin/hotcopy-*.sh
            do
                "$script" &
            done
            wait
    }
    POST_BACKUP ()
    {
            nice --adjustment=19 /usr/local/bin/timeout -t 3600 /usr/local/bin/hardlink.py -t /home > /dev/null
            /root/bin/clearswap.sh
            php /home/amedee/twitter/backup.php
    }
    AUTORUN=1
    SIZE_UNITS=""
    CREATE_DRIVER="DRIVER_MY_TAR_LZ"

    Mijn tar.lz-driver staat hier.
    TODO: sockets niet meenemen in de backup.
  • Drupal gebruikte geen Clean URLs meer.
    Oplossing: AllowOverride All aanzetten in /etc/apache2/sites-enabled/000-default, Apache herstarten en Clean URLs terug aanzetten in Drupal.
  • TODO: Apache status is niet meer bereikbaar op localhost/server-status (voor Munin).
  • Shorewall startte niet wegens iptables probleem wegens modules niet geladen. Opgelost met
    sudo apt-get purge linux-modules-2.6.26-2-xen-amd64
    sudo apt-get install linux-modules-2.6.32-5-xen-amd64

    Probleem en oplossing gevonden via
  • php5-imagick en php5-curl herinstalleren (deden een beetje lastig):
    sudo apt-get purge php5-imagick php5-curl
    sudo apt-get install php5-imagick php5-curl

Mijn plugins voor software development in Eclipse

[Oorspronkelijk geschreven op 2010-08-28]
[Aangevuld op 2010-09-12 op basis van de reacties]
[Aangevuld op 2011-05-22 met GitHub Mylyn Connector en Aptana Studio 3]

Ik heb me ingeschreven voor een cursus Java in avondschool. Om er direct al goed in te vliegen, installeer ik nu al Eclipse, nog voor de eerste les. En ja, ik weet 100% zeker dat Eclipse gaat gebruikt worden.

Vorig jaar heb ik wel eens EasyEclipse gebruikt, maar ik ga het nu houden bij een "standaard" Eclipse waarin ik alleen die plugins installeer die ik echt ga gebruiken. Voorlopig zijn dat de volgende:

Welke Eclipse plugins raden jullie mij nog aan? De comments staan open.

Grep met een kleurtje

Probleem

Je wil naar een bepaalde tekst zoeken in een bestand. Dat doe je met grep. Je wil de gezochte tekst in kleur zien. Dat doe je met grep --color. Maar dan zie je alleen de regels waar de gezochte tekst in staat. Wat als je alle regels wil zien, ook die zonder de gekleurde tekst?

Oplossing

grep --color "pattern|$"
grep gaat zoeken naar alle regels met daarin pattern OF alle regels met een regeleinde ($), waarbij zowel pattern als het regeleinde in kleur worden gezet. Aangezien een regeleinde geen printbaar karakter is, staat er geen kleurtje aan het einde van iedere regel. Maar iedere regel heeft wel een regeleinde, matcht dus met de expressie, en wordt dus getoond.

Ik gebruik dit bijvoorbeeld om mijn maillog in de gaten te houden, als ik email van een bepaalde afzender verwacht:
tail -F /var/log/mail.log | egrep --color=always "afzender|$"

(Her)installatie netbook

Waarin ik de installatie van Ubuntu op 2 Acer Aspire One's documenteer. Vooral voor mezelf, ter documentatie.


Blijkbaar is het niet mogelijk om met behulp van Unetbootin of USB Creator een LiveUSB te maken van Ubuntu 10.10 of 11.04. Wanneer je boot met de LiveUSB, krijg je volgende foutmelding:

No init found. Try passing init=bootarg

Meer info op Google: www.google.com/search?q=unetbootin+no+init+found

Met Ubuntu 10.04 lukt het wel, dus eerst moet die versie geïnstalleerd worden en daarna upgraden met sudo do-release-upgrade -d.

Checklist:

  • Taalkeuze: Engels
  • Tijdzone: Brussel
  • Toetsenbord: Belgisch
  • Partities: manueel (advanced)
    Device           Type   Mount point   Format?   Size      Used
    /dev/sda1        ext4   /             Ja        8068 MB   5106 MB
    /dev/mmcblk0p1   ext4   /home         Nee       7940 MB   3504 MB

    sda = interne HD, mmcblk1 = SD-kaart. Géén swap partitie.

  • Naam, usernaam, wachtwoord, computernaam
  • Installatie starten
  • Na installatie herstarten
  • Inloggen
  • Upgraden van Ubuntu 10.04 (Lynx) naar 10.10 (Meerkat):
    sudo do-release-upgrade -d
  • Upgrade laten lopen, na upgrade reboot. Opnieuw inloggen.
  • Upgraden van Ubuntu 10.10 (Meerkat) naar 11.04 (Narwhal):
    sudo do-release-upgrade -d
  • Upgrade laten lopen, na upgrade reboot. Opnieuw inloggen.
  • Software update:
    sudo aptitude update && sudo aptitude full-upgrade
  • /etc in git steken
  • Locales instellen in /etc/default/locale
    LANG="en_US.UTF-8"
    LANGUAGE="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_ALL="en_US.UTF-8"
  • Gewijzigd configuratiebestand committen met
    cd /etc && sudo git commit -am "change default locale to en_US.UTF-8"
  • Reboot, want dat is blijkbaar de enige manier om de locale-wijziging toe te passen.
  • Onmisbare console software installeren.
  • MySQL en phpMyAdmin installeren:
    sudo aptitude install mysql-server phpmyadmin
  • Oude kernels, headers en modules verwijderen:
    sudo -s
    apt-cache --installed -n search linux- | cut -d " " -f 1 | egrep 2.6 | egrep -v `uname -r | cut -c 1-9`
    aptitude purge # de pakketten die hierboven gevonden werden
    # TODO: dit op één regel krijgen
    # TODO: wat als kernelversie maar 8 karakters lang is?
  • Framebuffer aanzetten om een vervelende udev-melding tijdens het booten te verbergen (bug #647404):
    sudo -s
    echo FRAMEBUFFER=y >> /etc/initramfs-tools/conf.d/splash
    update-initramfs -u
  • /etc/fstab aanpassen, ik heb liever geen UUID's
    # <file system> <mount point>  <type> <options>           <dump>  <pass>
    proc            /proc          proc   nodev,noexec,nosuid 0       0
    /dev/sda1       /              ext4   defaults,relatime,errors=remount-ro   0       1
    /dev/mmcblk0p1  /home          ext4   defaults,relatime            0       2
  • Standaard reserveert Linux 5 % van de ruimte op een partitie die is geformatteerd in ext2/3/4 voor root. Op de SD-kaart is dat niet nodig.
    sudo -s
    umount /dev/mmcblk0p1
    fsck /dev/mmcblk0p1
    tune2fs -m 1 /dev/mmcblk0p1
    fsck /dev/mmcblk0p1
    mount /dev/mmcblk0p1
  • Gnome settings terug op de defaults zetten
    cd
    rm -rf .gnome .gnome2 .gconf .gconfd .metacity

Reclame... ;-)

Met dank aan
  • Jasmina
  • Celine
  • Pieter
  • Jeff
  • Hans
  • Jurgen
  • Jurgen
  • Marijke
  • Amedee
  • Erik
  • Danny
  • Sofie
  • Lars
  • Christophe
  • Peter
  • Jeroen
  • Jurgen
om mij een gratis herlading twv €15 te bezorgen!

Waar ben ik?