Bash-Magie und ein paar For-Schleifen

Ich stand kürzlich vor der Aufgabe mehrere DV-, WMV- und Mov-Videodateien in ein freies Format umwandeln zu wollen. Dazu wollte ich unbedingt Theora als Videocodec und Vorbis als Audiocodec verwenden.
Um nicht jede Datei einzeln umwandeln zu müssen, gibt es unter Linux eine schnelle und bequeme Möglichkeit - die bash. Grml Fans würden natürlich nach der zsh schreien. 😉
Mehrere Videos mit ffmpeg von WMV- in das MKV-Containerformat mit Theora und Vorbis konvertieren

for i in *.wmv; do ffmpeg -i "$i" -vcodec libtheora -acodec libvorbis "${i%.*}".mkv; done

Mehrere Videos mit ffmpeg2theora von Mov- in das Ogv-Containerformat mit Theora und Vorbis konvertieren, Abtastrate 32000 Hz, 64 kb/s Audiobitrate

for i in *.mov; do ffmpeg2theora -H 32000 -A 64 "$i"; done

Das Schema ist immer das Gleiche. Eine for Schleife durchläuft alle Dateien in einem Ordner, in diesem Fall mit den Endungen .wmv oder .mov. Dabei wird dann entweder das Programm ffmpeg oder ffmpeg2theora ausgeführt und der Dateiname "$i" übergeben. Die Anführungsstriche sind bei Sonderzeichen sinnvoll.
Bei ffmpeg wird duch die Konstruktion "${i%.*}".mkv, die Dateiendung .wmv durch .mkv substituiert. Bei ffmpeg2theora ist das nicht nötig.
Bei beiden Programmen gibt es sehr viele Optionen, um den Output zu beeinflussen. Beide scheinen auch unterschiedlich effizient bei der Umwandlung in das freie Format Theora zu sein.
Prinzipiell muss man bei schon stark komprimierten Dateien damit rechnen, dass bei einer weiteren Umwandlung die Qualitätsverluste zunehmen. Am besten ist es, immer mit einer nur gering komprimierten DV-Datei zu arbeiten.
Zu den vielfältigen Möglichkeiten der Konvertierung sollte man sich die Handbuchseite der Programme näher anschauen. Die Option -v 7 sorgt z.B. dafür, dass die Qualität der Videowiedergabe besser wird, die Dateigröße aber ungefähr verdoppelt wird. Die Standardeinstellung ist -v 5. Es gibt auch bequeme Voreinstellungen bei ffmpeg2theora, z.B. die Option -p pro.

Zu guter Letzt hier noch eine schnelle Möglichkeit um viele TGA-Bilder in PNG zu konvertieren, für alle, die vielleicht noch ein paar alte World-of-Warcraft-Screenshots auf der Festplatte haben. 😉
Das Programm convert befindet sich im ImageMagick Paket jeder Linuxdistribution.

for i in *.tga; do convert "$i" "${i%.*}".png; done

Ein einfach zu bedienendes GUI für ffmpeg existiert auch und nennt sich WinFF.


Viel Spass beim Umwandeln in freie Formate. 🙂

Den eigenen Debian-Kernel bauen

Es kommt nicht oft vor, dass ich den Linuxkernel selbst übersetzen muss. In der Regel bietet der generische Debian- oder Ubuntukernel alle Treiber, die man braucht und da die Module nur dann geladen werden, wenn sie tatsächlich benötigt werden, ist der Performancegewinn eines eigenen Kernel für mich auf neuer Hardware kaum spürbar.
Natürlich gibt es aber auch gute Gründe, warum ein eigener Kernel sinnvoll sein kann. Sei es nur um das letzte bisschen Leistung herauszukitzeln, ein neues Kernelfeature zu aktivieren oder unnötige zu deaktivieren.
Der Standardkernel 2.6.32 von Squeeze und auch der 2.6.26 von Lenny funktionieren beide nicht auf meinem Toshiba Satellite 220cs Laptop. Bei nur 16 MB RAM regt sich nach GRUB für gewöhnlich nichts mehr. Meine Versuche mit Slitaz hingegen waren sehr erfolgreich. Sowohl das Betriebssystem als auch der Kernel sind so angepasst, dass selbst 16 Jahre alte Hardware mit aktueller Software funktioniert.
Als Debian-Fan wollte ich unbedingt den Kernel anpassen, um auszuprobieren wie sich Debian auf dem alten Laptop schlägt. Natürlich stand ich wieder mal vor dem Problem, wie ging das eigentlich bei Debian mit dem Kernelkompilieren.
Debians Kernel Handbook zeigt schon die wichtigsten Schritte auf, doch am einfachsten und nachvollziehbarsten werden sie auf www.adminlife.net beschrieben.
Debian bringt nämlich schon ein Werkzeug mit, welches alle wichtigen Schritte der Kernelkompilierung übernimmt und den angepassten Kernel auch gleich in ein .deb Paket umwandelt, welches sich über Debians Apt dann problemlos verwalten lässt.
Die wichtigsten Schritte sind:

  • Notwendige Programme zum Kompilieren installieren
    aptitude install kernel-package build-essential
  • Gewünschte Kernel Quellen installieren. Entweder die Debian Kernel Sourcen nehmen oder direkt von www.kernel.org herunterladen und in /usr/src entpacken. Z.B.
    aptitude install linux-source-2.6.30
  • Symlink anlegen
    ln -s /usr/src/linux-2.6.30 /usr/src/linux
  • Kernelconfig kopieren. Für den Anfang genügt es die aktuelle config aus /boot zu nehmen. Allgemein geht auch zcat /proc/config.gz > kernel.cfg
    cp /boot/config-`uname -r` /usr/src/linux/.config
  • Kernel an die eigenen Bedürfnisse anpassen
    cd /usr/src/linux
    make oldconfig
    make menuconfig
    
  • Den Kernel kompilieren und ein .deb Paket erstellen
    make-kpkg kernel_image --revision 20110217 --initrd

Ich musste auf meinem im letzten Post vorgestellten Debian-Minimalsystem mit debootstrap noch das Paket lzma installieren, damit das Kompilieren erfolgreich war.
Als Kernelconfig hatte ich die Slitaz 2.6.30-loram config ausgewählt. Beim Übersetzen wurde zuerst ein Fehler mit dem Kernelmodul lguest gemeldet, dass ich danach aus der config gestrichen habe.
Erfreulicherweise lief danach die Kernelkompilierung erfolgreich durch. Das entstandene .deb Paket lässt sich bequem mit dpkg -i installieren.
Mit diesem Kernel ließ sich wie erhofft problemlos sowohl ein Squeeze als auch ein Lenny in Qemu booten. Möglichkeiten zum Optimieren gibt es noch einige. Z.B. benötige ich nicht wirklich das ReiserFS-Dateisystem und gefühlte 100 weitere Module auch nicht.
Vielleicht werde ich deswegen auch in Zukunft die Kernelconfig soweit anpassen, dass tatsächlich nur noch die absolut notwendigen Pakete übrig bleiben. Für den Anfang ist "the Debian way ™" und ein Minidebian in Ubuntu eine bequeme Möglichkeit um weiter herum zu experimentieren.
Wie sich der neue Kernel auf dem Toshiba 220cs geschlagen hat, dazu demnächst mehr.

Debian in Ubuntu installieren mit debootstrap

Neben der Netzinstallation von Debian existiert noch eine weitere Möglichkeit ein minimales Debian-System zu installieren. Diese Methode nennt sich debootstrap.
Damit lässt sich Debian von einem anderen Betriebssystem und sogar einer anderen Systemarchitektur aus einrichten. Es ist also möglich sich Debian aus einem laufenden Gentoo auf eine freie Partition zu installieren und danach in ein Dual-Boot-System zu starten.
Ganz so viel erwartete ich gar nicht als ich mir überlegt hatte, wie ich am einfachsten einen Debian-Kernel auf dem Dual-Core-Rechner kompilieren könnte, ohne dabei meine bestehende Ubuntu-Installation in irgendeiner Weise zu beeinträchtigen.
Ich entschied mich also mittels debootstrap Debian Squeeze in ein Verzeichnis namens debian in meinem Home-Ordner zu installieren. Alle Tests, Kernelkompilierungen und Veränderungen sollten in einer Chroot-Umgebung stattfinden.
Die ersten Schritte sind mit Ubuntu schnell erledigt:

aptitude install debootstrap
mkdir ~/debian
sudo debootstrap squeeze ~/debian http://ftp.de.debian.org/debian

Debootstrap ist im Prinzip nur ein besonders ausgereiftes Skript, welches beliebige Debian- oder Ubuntu-Versionen von einem Spiegelserver der Wahl installieren kann. Es werden hierbei nur die elementarsten Softwarepakete heruntergeladen.
Im Gegensatz zur Netzinstallation mit Debian müssen danach von Hand noch einige Konfigurationseinstellungen vorgenommen werden. Gut beschrieben wird das z.B. auf den folgenden Seiten:

Da mein Minidebian gar nicht bootfähig sein sollte und ich nur eine Testumgebung brauchte, waren aus dem Amateur Guide nur folgende Schritte notwendig:

mount –t proc none ~/debian/proc
mount –o bind /dev ~/debian/dev

In der ~/debian/etc/apt/sources.list noch die Quellen für die Sicherheitsupdates und die Sourcen eintragen und mit dem folgenden Befehl in die Chroot-Umgebung wechseln.
sudo chroot ~/debian
Danach wird Debian durch die Installation weiterer Pakete angepasst.

aptitude update
aptitude install locales
dpkg-reconfigure locales
aptitude install console-data
dpkg-reconfigure console-data
aptitude install linux-source-2.6.30

Das Ziel ist es mit Hilfe dieser Debootstrap-Installation einen Debian Kernel neu zu übersetzen und dafür die Kernel-Config der Slitaz-Loram-3.0-CD zu nehmen. Wenn alles glatt läuft, sollte sich damit irgendwann ein Debian auf dem Toshiba Satellite 220cs installieren und booten lassen.
Hoffentlich ist es auch in der Praxis so einfach wie in der Theorie. 😉

Unverhofft kommt oft

Manchmal ist es wie verhext. Man glaubt nichts anderes als beim letzten Mal gemacht zu haben und doch verhält sich das System anders als erwartet.
Da der Toshiba 220 CS wegen KolibriOS eine neue FAT32-Partition erhalten sollte, dachte ich, eine komplette Neuinstallation mit allen vorher entdeckten Optimierungen wäre eine gute Sache.
Also wurde wieder Qemu und das 8 MB große Slitaz-Base-ISO bemüht und alles in ein 300 MB großes Raw-Image geschrieben. Dieses Mal wählte ich Ext2 als Dateisystem, was auf solchen Oldies "gefühlt" schneller arbeitet als Ext3, ohne dass ich dafür irgendwelche Zahlen nennen könnte.
Auch im Hinblick auf den 16 MB großen RAM Speicher hielt ich es für sinnvoll mich auf ein Dateisystem zu konzentrieren.
Das vorgefertigte Muster-Slitaz musste nur noch mit dd auf die Festplatte geschrieben und der restliche verfügbare Speicherplatz mit fdisk zugewiesen werden.
So hatte ich schließlich eine Swap-, Root-, Dos- und Home-Partition und bis auf Dos waren alle mit Ext2 formatiert.
Nach einigen Neustarts, zuvor waren nur 3-4 Standardprogramme installiert worden, hing sich das System nach dem Neustart schon auf, so dass ein Kaltstart die letzte Lösung war.
Merkwürdigerweise passiert mir so etwas immer nur bei Ext2-Dateisystemen, die danach natürlich Fehler melden und in diesem Fall leider auch einen unreparierbaren Schaden.
Anscheinend war eine System- oder Gerätedatei beschädigt,auf jeden Fall gab es als fortlaufende Fehlermeldung "/dev/tty2 could not be opened". Der Fehler ließ sich reproduzieren und trat nur dann auf, wenn ich den restlichen Festplattenspeicher partitionierte.
Dank des vorher angefertigten Backups mit DD ist nun alles wieder beim alten inklusive Ext3 Root-Partition. Solche Fehler sind unheimlich schwer nachzuvollziehen und sind auch nichts, was ich tiefer untersuchen möchte.
Das Ende: Ich verkleinerte die Root-Partition mit resize2fs und habe nun eine ca. 200 MB große Partition für KolibriOS.
Auch wenn man am liebsten schreiben möchte, dass man Ubuntu auf einem 15 Jahre alten Rechner zum Laufen bekommen hat und dort gerade Youtube-Videos mit Flash (pfui) ansieht, während gleichzeitig der mit Blender erzeugte neue Zeichentrickfilm gerendert wird...es läuft nicht immer alles auf Anhieb rund.
Auch der USB-Port scheint nicht zu den zuverlässigsten zu gehören. Mal lässt sich auf den USB-Stick schreiben, dann wieder nicht. Dateisystem wechseln hilft nicht und an anderen Laptops funktioniert er einwandfrei.
Momentan kann ich dafür Slitaz nicht verantwortlich machen, da vieles mehr auf die Hardware zurückzuführen scheint als auf das Betriebssystem. Mal sehen was Debian sagt, sofern ich es schaffe einen Kernel zu erstellen, der mit 16 MB RAM umgehen kann. 😉

Slitaz tunen

Es klingt schon verrückt. Wie kann man eine Distribution, deren komplette Live-CD nur 78 MB im RAM einnimmt und selbst als slitaz-base in der Minimalinstallation gerade einmal 30 MB auf der Festplatte belegt, noch weiter optimieren? Stimmt, geht fast gar nicht. Folgende Optionen könnten dennoch interessant sein.

Framebuffer aktivieren

Für alle, die gerne auf der Konsole arbeiten oder sogar müssen, sollte zuerst der Framebuffer aktiviert werden. Slitaz nutzt noch Grub Legacy, weshalb man diese Einstellung leicht in der /boot/grub/menu.lst vornehmen kann. An die kernel Zeile muss noch vga=788 angehängt werden um eine Auflösung von 800x600x16 zu erreichen. Mehr ist leider mit dem Toshiba Satellite 220cs nicht drin. Slitaz lädt daraufhin automatisch den Kernel Treiber fbdev.

kernel /boot/vmlinuz-2.6.30.6-slitaz root=/dev/hda2 vga=788

Die folgende Tabelle verrät die weiteren Einstellungen für den Framebuffer.

Farbtiefe640x480800x6001024x7681280x10241400x10501600x1200
8 (256)769771773775
15 (32K)784787790793
16 (65K)785788791794834884
24 (16M)786789792795

Für Grub2 lässt sich diese Methode auch in /etc/default/grub benutzen und an GRUB_CMDLINE_LINUX anhängen. Aber Vorsicht diese Option ist überholt und könnte irgendwann ganz abgeschafft werden. Deswegen sollte man auch die Alternative GRUB_GFXMODE ausprobieren.

GRUB_GFXMODE=800x600x16
GRUB_GFXPAYLOAD_LINUX=keep

Um die Änderungen dauerhaft zu machen, muss noch

grub-mkconfig -o /boot/grub/grub.cfg

ausgeführt werden. Mehr Infos hierzu gibt es auch im englischen ArchWiki.

Fast Boot

Slitaz bringt eine Option "Fast Boot" mit, welche sich in der zentralen Konfigurationsdatei /etc/rcS.conf einstellen lässt. Einfach editieren und

FAST_BOOT_X="yes"

eintragen und dbus, hald und slim in RUN_DAEMONS entfernen.
Für die meisten sollte das eine deutliche Verbesserung bei der Bootzeit bringen. Für meinen 220cs sind das immer noch 25 Sekunden, aber für einen 15 Jahre alten Laptop mit einer 4200rpm Festplatte immer noch ein guter Wert. Vollkommen ausreichend für meine Zwecke 😉

Systemuhr synchronisieren

Für Laptop Oldies nicht ganz unwichtig: Die Systemzeit muss angepasst werden. Meistens sind die Batterien hoffnungslos am Ende, weswegen der Zeitabgleich mit einem Server im Internet sinnvoll ist.
Slitaz bringt hier das superkleine Programm ntpclient mit. Um die Systemzeit zu aktualisieren einfach

ntpclient -s -h pool.ntp.org

im Terminal eingeben und danach eine ausführbare Datei der Wahl mit diesem Befehl anlegen und beim Booten ausführen lassen.
Für Debian heißt die Alternative ntpdate.

Virtuelle Terminals reduzieren

Um wertvollen RAM frei zu machen, lohnt es sich die Anzahl der virtuellen Terminals tty in /etc/inittab zu reduzieren.

tty1::respawn:/sbin/getty 38400 tty1

In solcher Form finden sich mehrere Zeilen in der inittab. Für die Arbeit mit der Konsole reichen mir tty1 und tty2 und screen. Den Rest einfach mit der # kommentieren.
Das gleiche gilt auch für Arbeitsflächen in einer grafischen Umgebung. Meistens sind zwei Arbeitsflächen ausreichend.

Die richtigen Programme installieren

Slitaz hat schon eine sehr gute Auswahl für leichtgewichtige Software getroffen. Ich bezweifle, dass man auf einem Rechner mit mehr als 256 MB RAM überhaupt in Verlegenheit kommt oft über Alternativen nachzudenken. 🙂
Für den Satellite 220cs und für wirkliche RAM-Krücken zählt aber oft noch jedes KB an Speicher. Es klingt vielleicht merkwürdig bei Konsolenprogrammen, aber bei mir hat schon der Wechsel des Textbrowsers von elinks zu retawq geholfen.
Es muss aber nicht immer nur eine einzelne Anwendung sein. Auch der Wechsel des Fenstermanagers kann schon entscheidende Verbesserungen bringen. Für alle, die X benutzen aber einen Rechner mit wenig RAM besitzen (<=64 MB), könnte schon der Wechsel von Openbox auf DWM einiges herausholen. Grafische Programme mit Konsolenprogrammen austauschen ist ein weiterer Schlüssel zum Erfolg. Wie so oft, die Mischung machts.

Baobab ist auch ein Baum

Die 1 Millionen-Euro-Frage. Alle Joker sind weg. Nennen Sie ein Programm, mit dem es möglich ist, unter Ubuntu die Festplattenbelegung zu analysieren. Ist es Boabob, Boabab, Baobab oder doch Boaboa?
Wer hätte es gewusst? Ohne auf den Titel zu schielen... 😛 Und da hatte man dieses mal extra alle Deutschen Briefmarken auswendig gelernt und dann das. Was lernt man daraus? Briefmarken sind out und Ubuntu macht glücklich. 🙄
Ok, die Fragestellung des Moderators war auch ziemlich unfair. Baobab ist kein Ubuntu-Eigengewächs sondern gehört zur Gnome-Desktopumgebung, genauer gesagt den gnome-utils. Doch warum erzähl ich das eigentlich?
Es gibt Programme, die ich ziemlich selten benutze und Baobab ist so ein Kandidat. Baobab scannt die Festplatte oder einzelne Verzeichnisse, ermittelt den Speicherbedarf der Dateien und erstellt einen hübschen Ringgraphen, der Aufschluss über die Verteilung derselben gibt. Also nicht gerade das, was man jeden Tag drei Stunden an seinem PC macht.
Festplattenbelegung analysieren
Arbeitet man nun an einem anderen Rechner, auf dem zufälligerweise kein Gnome installiert ist, muss eine andere Lösung her. Man könnte natürlich baobab installieren...wenn da nicht so ein verrückter Kerl mit 5cm dicken Brillengläsern wäre, der einen mit dem Ausdruck verrückten Entsetzens anstarren würde, wenn man das Wort Gnome in den Mund nimmt.
*Notiz für Osmo, Spiegel an anderer Stelle aufhängen*
Natürlich das Terminal!

du -s -h /home/apo/* | sort -h

Mit du und sort, zwei Basisprogrammen, die auf jedem guten Linuxsystem zu finden sind, erhält man eine sortierte Liste mit den Verzeichnissen, die am meisten Platz im Home Ordner wegnehmen.
Möchte man auch die versteckten Verzeichnisse mit einbeziehen, geht das so.

du -s -h /home/apo/* /home/apo/.* | sort -h

Die Option -s bewirkt, dass Unterverzeichnisse nicht extra aufgeführt werden, sondern der Platzverbrauch insgesamt für die Hauptverzeichnisse in Home ermittelt werden und -h sorgt dafür, dass die ermittelten Zahlen leichter zu lesen sind.
Das ganze wird noch an sort übergeben und nach Platzverbrauch sortiert. Die größten Verschwender stehen ganz unten.
Lässt man die -s Option bei du weg, werden sogar die Unterverzeichnisse mit einbezogen. Noch mehr Infos.
Man kann auch ganz leicht Verzeichnisse wie z.B. /proc von der Festplattenbelegungsanalyse ausnehmen.

du -h / --exclude=/proc | sort -h

Was fehlt ist natürlich nun der Ringgraph, aber mal ehrlich, für mich ist damit die Frage beantwortet, wer den meisten Platz wegnimmt. Natürlich mein Dropbox-Ordner und der versteckte Cache-Ordner. Auch nicht vergessen ab und zu mal aptitude clean und aptitude autoclean einzugeben. 😉
Was bleibt sind eine schöne grafische Lösung und eine, die auf jedem Rechner funktioniert.
Baobab ist auch ein Baum. Wahre Geschichte. 🙂

Einfache Suchmuster mit Aptitude

Mich beschäftigte vor ein paar Tagen die Frage, welche und wie viele unfreie Pakete auf meinem Inspiron 4000 mit Debian und Openbox installiert sind und welche Möglichkeiten es gibt dies schnell herauszufinden.
Unter Gnome erledigt Synaptic meist den Job, wenn es eine grafische Oberfläche mit Suchfeld und Eingabemaske sein soll. Ubuntus neues Software Center bietet eine ähnliche, stärker visuell ausgerichtete, aber grobere Funktionalität.
Da es ein leichtgewichtiges System bleiben sollte, kamen sowohl Synaptic als auch das Software Center nicht in Frage.
Dann kommt aptitude ins Spiel, ein Frontend für Debians und Ubuntus Paketverwaltungssystem. Seit ich mit Debian angefangen habe, ist es für mich der bequemste Weg um schnell ein Paket zu installieren oder wieder zu entfernen.
Aptitude bietet aber noch zahlreiche andere Optionen, um mehr über Programme herauszufinden. Eines seiner Stärken ist die Option search.

aptitude search '(?section(contrib) ?installed)'

Bei Suchmuster mit search gibt es eine Lang- und eine Kurzform. Attribute für Suchmuster beginnen bei der Langform mit einem ? und dem Attribut. Der Suchbegriff folgt meist in Klammern danach.
Die Kurzform beginnt mit dem Tilde Symbol "~". Der Suchbegriff wird direkt an das Attribut angehängt.

aptitude search '(~scontrib ~i)'
oder
aptitude search '(~snon-free ~i)'

Die Suche im Bereich contrib und non-free und nach nur installierten Paketen ergab.

i A b43-fwcutter - Werkzeug zum Entnehmen der Broadcom 43xx Firmware
i firmware-b43-installer - Installer package for firmware for the b43 driver
i vice - The Versatile Commodore Emulator
i dropbox - secure backup, sync and sharing util
i firmware-linux-nonfree - Binary firmware for various drivers in the Linux kernel

Die b43 Pakete sind zwar freie Software, laden aber die unfreie Firmware für meine Linksys-WLAN-Karte herunter.
Dropbox ist als Backup- und Austauschwerkzeug von Dateien mit Mac- oder Windowsnutzern sehr nützlich und ohne firmware-linux-nonfree würde weder meine Maestro-Soundkarte noch das LAN-Kernel-Modul e100 funktionieren.
Der Rest ist Freie Software. 🙂
Wer wissen will, welche freien Spiele mit Debian angeboten werden, kann dies mit einer Suche im Bereich "games" herausfinden und die Suche mit bestimmten Begriffen auch auf die Paketbeschreibung erweitern. Das ! negiert wie in Programmiersprachen gewohnt das Attribut.

aptitude search '(~sgames !~i)'
aptitude search '(~sgames !~i ~dHammer)'

Mit search gibt es noch viel mehr Möglichkeiten, darunter z.B. auch die Suche nach bestimmten Paketverwaltern und Paketversionen.
Ein guter Einstieg zu den verschiedenen Optionen von Aptitude ist der Aptitude Reference Guide.

Audiowiedergabe mit dem Toshiba Satellite 220cs funktioniert

Endlich geschafft! Nachdem der alte Toshiba-Laptop sich beharrlich geweigert hatte auch nur eine Note abzuspielen, gibt es ab sofort Musik mit mplayer oder moc.
Seit ich Slitaz installiert hatte, wusste ich schon, dass sich eine ISA-Soundkarte mit dem Yamaha-Opl3sa2-Chipsatz im Inneren des Satellite 220cs befindet. Eine Suche nach alsa + opl3sa2 brachte mich dann der Lösung näher.
ISA-Soundkarten sind unter Linux etwas trickreich einzurichten. Meistens scheitert es daran, dass an den Linuxtreiber noch weitere Parameter übergeben werden müssen, die nicht zwingend auf jedem Computer gleich sind und auch im BIOS beliebig verstellt werden können.
In meinem Fall spuckte das BIOS folgende Informationen aus. (Man erreicht es übrigens, wenn man beim Start ESC gedrückt hält und danach F1 drückt, scheinbar ein Toshiba Feature)

wss/io = 530h
sb_port = 220h
synth(fm_port) = 388h
irq = 5
dma1 = 1
dma2 = 0
port = 370h
midi_port = 330h

Da ich immer noch mit der absoluten Slitaz-Minimalinstallation experimentiere, mussten die Pakete

linux-sound
alsa-utils

nachinstalliert werden, indem sich die Soundtreiber für Slitaz und wichtige Hilfsprogramme für Alsa befinden.
Der Rest ist ein Einzeiler.

modprobe snd_opl3sa2 index=0 id=CARD_0 port=0x370 sb_port=0x220 wss_port=0x530 midi_port=0x330 fm_port=0x388 irq=5 dma1=1 dma2=0 isapnp=0

Potentielle Fehlerquellen gibt es hier viele. Nicht nur müssen die Namen der Parameter und die Werte stimmen, auch der Bezeichner id darf nicht fehlen, damit die Karte später von alsa richtig angesprochen werden kann.
Das mitgelieferte soundconf-Programm nimmt diese Einstellungen leider nicht automatisch vor. Ebenso sollte man vorher mit lsmod überprüfen, ob der Treiber snd_opl3sa2 nicht schon vorher ohne Parameter geladen worden ist.
Startet man als root alsamixer können nun die verschiedenen Input/Output-Signale geregelt und die Lautstärke angepasst werden.
Dabei sollte man nicht vergessen durch Drücken der Taste "m" die einzelnen Kanäle zu "entmuten" 🙄
Die ganzen Einstellungen lassen sich danach mit dem Befehl

alsactl store CARD_0

dauerhaft in /etc/asound.state sichern und mit

alsactl restore CARD_0

wiederherstellen.
Normalerweise werden die Parameter in einer Datei im Ordner /etc/modprobe.d/ gespeichert und beim Bootvorgang dann automagisch mit an den Treiber übergeben. Dachte ich zumindest.
Slitaz lässt sich bisher von solchen Versuchen nicht beeindrucken. Auch der Eintrag des Treibers + Parametern in Slitaz zentraler Konfigurationsdatei /etc/rcS.conf bewirkte nichts.
Höchstwahrscheinlich ein Bedienungsfehler, weshalb ich nicht mehr lange weiterprobierte und den Modprobe- und Alsactl-Restore-Befehl in ein ausführbares Skript eingetragen habe, welches ich nach Start dann einmal als root aufrufe.
Nicht sehr elegant, aber wirkungsvoll.
Achja, die Musik klingt nach Anschluss an externe Boxen gar nicht so schlecht. Für den Wohnzimmer-Betrieb vollkommen ausreichend. Mplayer und Moc funktionieren problemlos.
Einziger Wermutstropfen ist das Abspielen von Musik über eine ssh Verbindung mit sshfs, meine bevorzugte Variante um Dateisysteme zu mounten. Nach kurzer Zeit friert der Rechner komplett ein und nur noch ein Kaltstart holt ihn wieder aus der Starre.
Da andere Dateioperationen scheinbar fehlerfrei funktionieren, könnte der Satellite 220cs damit einfach überfordert sein. Mal schaun, ob sich dafür noch eine Lösung finden lässt 😉

Slitaz: Minimalinstallation auf dem Toshiba Satellite 220cs

Nachdem ich mit Slitaz eine schnelle und effiziente Live-CD gefunden hatte, probierte ich die verschiedenen "flavor" Versionen aus, bei denen sich Slitaz selbst mit weniger als 16 MB RAM zufrieden gibt.
Mein Testobjekt war der Toshiba Satellite 220cs, ein Laptop aus dem Jahr 1996 mit PI 133 MHz CPU und 16 MB RAM. Bei diesem Alter geben alle großen Distributionen klein bei. Keine Chance mit Ubuntu, Fedora oder SuSe so einen Rechner aus dem Stand mit der Installations-CD zum Laufen zu bewegen. Und selbst für den debian-installer sind 16 MB RAM einfach zu wenig.
Als erstes probierte ich sowohl die Loram-Version des aktuellen stabilen Slitaz 3.0 aus als auch die alte 2.0 Ausgabe. Hauptgrund hierfür war ein Tip im Slitaz-Forum, dass damit eventuell ein Problem mit Ndiswrapper behoben werden könnte. Neben zwei PCMCIA-Cardbus-Slots besaß der alte Toshiba auch noch einen USB 1.0 Port, ungewöhnlich für diese Zeit als noch Windows 95 das Maß aller Dinge war.
Die Loram-cdrom-3.0 CD bootete ohne weitere Parameter und startete tatsächlich ohne Unterbrechung sofort in eine X-Umgebung mit Slim als Login- und Openbox als Fenstermanager. Hier war aber schon klar, dass diese Standardvorgabe für 16 MB RAM wirklich nur zum Vorführen reichte. Für eine sinnvolle Nutzung reagierten die voreingestellten Programme einfach zu langsam.
Da das Nachladen von CD-ROM auch viel Leistung kostete, kam nur eine Festplatteninstallation in Frage. Hierzu muss man als erstes die Festplatte mit fdisk partitionieren, da Slitaz diese Operation nicht automatisch beim Installieren ausführt. Nach der Partitionierung sollte die Swap-Partition (z.B. /dev/hda1) sofort mit

mkswap /dev/hda1
swapon /dev/hda1

aktiviert werden.
Anschließend genügt ein

slitaz-installer

als Root um die Installation zu starten. Diese ist im positiven Sinne sehr einfach gehalten. Man gibt lediglich die vorher partitionierte Root-Partition an, wählt Namen und Passwort der Systembenutzer und die Systemsprache aus. Der Rest geschieht automatisch.
Nach dem Neustart sollte man als erstes Openbox und slim mit dem Paketmanager Tazpkg entfernen und danach die Internetverbindung einrichten. Für den Laptop kamen für mich entweder mein USB-WLAN Stick oder die PCMCIA-WLAN-Karte WPC54G von Linksys in Frage. Letztere lässt sich ohne weiteres mit dem Kernelmodul b43 in Betrieb nehmen. Eine ausführliche Beschreibung für Slitaz gibt es sogar im englischen Forum.
Den USB-Stick mit Ndiswrapper und dem Windowstreiber zum Laufen zu bekommen scheiterte aber. Obwohl ich mit iwlist den Router "sah", konnte keine Verbindung aufgebaut werden egal ob mit oder ohne Verschlüsselung. Hinzu kamen seltsame Fehlermeldungen. Auch bei der alten Slitaz-2.0-Version gab es das gleiche Ergebnis. 🙁
Da die PCMCIA-Karte aber problemlos nach der manuellen Installation der richtigen Slitaz Pakete und der Firmware funktionierte, musste ich nicht mehr weitersuchen. Im übrigen lässt sich der WLAN-Zugang mit WPA bei Slitaz ohne GUI am einfachsten in der Datei /etc/network.conf einrichten und danach mit dem Ausführen von /etc/init.d/network.sh starten. Auf das zusätzliche Editieren der wpa_supplicant.conf kann man verzichten.
Danach genügte ein

tazpkg recharge
tazpkg get-install "Paketname"
oder tazpkg remove "Paketname"

um das System weiter anzupassen. Dabei fällt besonders auf, dass Slitaz eine sehr effiziente Lösung gefunden hat um die Software zu verwalten. Selbst auf einem alten Laptop funktioniert das De- und Installieren ohne Schwächeanfall.

Minimalinstallation mit der Slitaz-3.0-Base-Version

Das "Base-ISO" von Slitaz ist gerade einmal 8 MB groß, was geradezu verschwenderisch anmutet um es auf eine CD zu brennen. Ich habe mich deshalb auch entschieden diese Version mit Qemu auf meinem Dell Inspiron 4000 zu installieren und die notwendigen Pakete für die WLAN-Karte dieses mal bequem über eine bestehende Internetverbindung zu installieren.
Das tolle an Qemu ist die Möglichkeit ein Image im Raw-Format zu erstellen, welches sich wiederum problemlos mit dd wieder auf die Festplatte des Toshiba-220cs-Laptops schreiben lässt. Normalerweise halte ich den Ausbau der Festplatte für die letzte Lösung, mittlerweile denke ich aber, dass es sogar die einfachste war.
Die Festplatte lässt sich bei diesem speziellen Laptop direkt an der Frontseite einfach herausziehen, ohne dass man auch nur eine Schraube irgendwo lockern musste. Mit einem 10 € teuren IDE/S-ATA- zu USB-Adapter lässt sich die Festplatte dann per USB an jeden anderen Rechner anschließen und das vorher erstellte Qemu Image installieren.
Herauskommt eine Basisinstallation, die nicht einmal 30 MB Speicher auf der Festplatte belegt. Von hier aus lässt sich dann mit dem TAZ-Paketmanager weiter experimentieren.

To-Do

Eine grafische Desktopumgebung mit Xorg und Openbox ist für 16 MB RAM zu schwerfällig. Selbst dwm, einer der kleinsten und ressourcenschonendsten Fenstermanager, die ich kenne, holt hier auch nicht mehr heraus. Eine Alternative könnte Xvesa anstelle von Xorg sein.
Auf jedem Fall stehen einem schon heute alle Konsolenprogramme offen um den Toshiba 220cs produktiv zu nutzen. Unter anderem natürlich E-Mails schreiben mit Alpine, Chatten mit Irssi oder Centerim und Dateien verwalten mit dem Midnight-Commander. Dazu bietet sich Screen an, leider aber noch ohne den Patch für das vertikale Teilen des Bildschirms.
Hiermal ein erster (wenig beeindruckender) Screenshot, der eine Screen-Session über SSH auf meinem Dell-Laptop zeigt. Laut Htop werden 6 MB RAM benutzt. Vielleicht war dieser Schock auch der Grund, warum Htop sich nach wenigen Sekunden automatisch beendet..

Auch ein Upgrade von der stabilen auf die Cooking-Version ist eine weitere Alternative. Und dann wäre da noch die ISA-Soundkarte und der Opl3sa2-Treiber, die trotz ausreichender Informationen im Internet noch nicht richtig wollen.
Update
Mittlerweile finden sich hier Informationen zur Einrichtung der Audiowiedergabe auf dem Toshiba Satellite 220cs und noch ein paar Anmerkungen zur Installation von Slitaz in den Kommentaren.
Es gibt also noch einiges zum Testen bei Slitaz. Und danach..
Ich wollte schon immer mal das winzige KolibriOS ausprobieren. 😉

Rotierende Hintergrundbilder mit feh

Wer gerne reine Fenstermanager nutzt, stößt mitunter auf das Problem: "Wie lässt sich das Hintergrundbild einrichten?"
Hierzu gibt es unterschiedliche Lösungsmöglichkeiten. Eine Variante ist z.B. einen Terminal-Emulator wie eterm zu benutzen, eine Variante, die sich bei meinen ersten Schritten mit Fluxbox recht unkompliziert einrichten ließ.
Andererseits lassen sich auch schnelle Dateimanager wie Rox oder PCManFM zum Setzen des Wallpapers bewegen. Nicht zu vergessen erledigt das Gnome-Pendant Nautilus genau diese Aufgabe, ist auf Grund der vielen Abhängigkeiten mit der Gnome-Desktopumgebung aber nicht immer die erste Wahl für eine leichtgewichtige Linuxumgebung.
Und dann wäre da noch feh. Feh ist kleines, aber mächtiges Kommandozeilen-Programm, welches Bilder blitzschnell anzeigen und auch manipulieren kann. Dabei lässt es sich über die Tastatur steuern, bietet aber ebenfalls die Möglichkeit mit der Maus Optionen auszuführen.
Seine Stärken spielt es auch in grafischen Dateimanagern wie Thunar oder Feedreadern wie canto aus, wo ich es als Bildbetrachter voreingestellt habe.

Einzelnes Hintergrundbild

Um das Hintergrundbild zu zeichnen, erstellt man eine versteckte Textdatei namens .fehbg im Homeverzeichnis und fügt diesen Code dort ein:

feh --bg-scale '~/Bilder/mein-hintergrund-bild.jpg'

Damit das Hintergrundbild automatisch beim Start von X gezeichnet wird, ist es notwendig diesen Befehl entweder durch einen Eintrag in der Datei .xinitrc auszuführen oder wie z.B. beim Fenstermanager Openbox von der Datei autostart.sh auf .fehbg zu verweisen, die sich bei Debian in ~/.config/openbox/ befindet.
Neben anderen nützlichen Programmen zum Starten eines Panels oder Energieverwaltungsprogramms, sieht danach meine autostart.sh z.B. so aus:

sh ~/.fehbg
lxpanel&
xfce4-power-manager&

Rotierende Hintergrundbilder

Um mehrere Hintergrundbilder in einem Bilderverzeichnis nacheinander in einem Intervall von 15 Minuten anzuzeigen, kann man sich ein kleines Skript namens wallpaper anlegen und als versteckte Datei in Home abspeichern. Die Idee hierzu habe ich im englischen Archwiki gefunden.
Eine Do-While-Schleife durchsucht das Bilderverzeichnis nach Bildern mit der Dateiendung *.jpg und *.png. Nur die erste Zeile dieser Suche wird an xargs übergeben und man erhält den gleichen Befehl wie zuvor in .fehbg. Das Zeitintervall von 15 Minuten lässt sich natürlich genauso wie das Bilderverzeichnis frei anpassen.

#!/bin/sh
while true;
   do
   find $HOME/Bilder -type f -name '*.jpg' -o -name '*.png' | shuf -n 1 | xargs feh --bg-scale
   sleep 15m
done &

Indem man in der autostart.sh anstatt

sh ~/.fehbg

sh ~/.wallpaper

schreibt, hat man nun mehr Abwechslung auf seinem Desktop, z.B. mit den tollen Naturbildern von Ubuntu 10.10.