Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Opalix 2007:Opalix erstellen

Diese Anleitung basiert zu großen Teilen auf der Anleitung aus dem Vorjahr, wurde aber in mehrere Richtungen (KDE-Aussehen, VirtualBox) erweitert. Eine hilfreiche Sammlung an Tipps zum Remastern von Knoppix findet man hier: http://www.knoppix.net/wiki/Category:Remastering_Knoppix

Voraussetzungen

  • Eine vorhandene Linuxinstallation
  • 1 GB RAM (echter Speicher + Swap) vorhanden
  • 8 GB freier Festplattenspeicher auf einer Linux-Partition (Ext2/3, XFS, JFS, Reiser, o.ä., aber nicht FAT/NTFS)
  • optional externe Festplatte und virtuelle Maschine (VMWare, VirtualBox o.ä.)
  • Möglichst schneller Prozessor, auf einem Intel Pentium 4 mit 3GHz dauert das Komprimieren des CD-Images ca. 10-15 Minuten, auf einem Athlon 2500+ dauerte es etwa 15-20 Minuten.

Knoppix installieren und auf Festplatte speichern

  • Aktuelle Knoppix Version von http://www.knoppix.net/get.php herunterladen.
    • WICHTIG: Mit dem Programm md5sum die Korrektheit des ISOs sicherstellen.
    • Für Opalix 2007 wurde KNOPPIX_V5.1.1CD-2007-01-04-DE.iso verwendet.
  • Knoppix-CD brennen (siehe alten Artikel) oder in einer virtuellen Maschine starten. Im Weiteren wird die Variante in der virtuellen Maschine verwendet.
  • Knoppix in der VM starten: Dafür einfach eine neue Maschine anlegen oder in einer bestehenden Maschine das ISO-Image als CD-Rom-Laufwerk einstellen und von der CD booten.
  • Wenn das Knoppix gestartet ist, die externe Festplatte anschließen und über das VMWare-Menü für die CD freigeben oder "Shared Folders" einrichten. Wichtig: Die Platte nicht im eigentlichen Linux mounten!
  • Im Beispiel wurde die Patition in /media/sda1 eingehängt
sudo su # Root-Shell aufmachen

# Verzeichnisse anlegen und das entpackte Knoppix-Dateisystem kopieren

cd /media/sda1 # ins Verzeichnis des externen Speichers wechseln
mkdir -p ./opalix/master # Hierhin wird die echte CD kopiert
mkdir -p ./opalix/source # Hierhin kommt das entpackte komprimierte Dateisystem der CD
cp -pR /KNOPPIX source/ # Geduld! Dauert eine ganze Weile

# Artwork und Autostart-Krams kopieren. Die große (ca. 700Mb) KNOPPIX Datei können wir uns sparen

cd ./master
cp -p /cdrom/* .
cp -pr /cdrom/boot .
mkdir KNOPPIX
cd KNOPPIX
cp -pr /cdrom/KNOPPIX/*[^X] . 
  • Knoppix und VM beenden
  • externe Platte unter dem eigentlichen Linux mounten und Daten auf die freie Partition kopieren:
sudo su # Root-Shell aufmachen
cd /home/<username>
cp -pR /media/sda1/opalix . # Dauert wieder... 

Knoppix-Pakete bearbeiten

Im folgenden werden wir das OPAL Compilation System installieren und andere Applikationen entfernen, so dass am Ende alles wieder auf eine CD passt.

Chroot

  • weiter in der root-Shell
cd /home/<username>/opalix/source
cp -b /etc/resolv.conf ./etc/dhcpc/resolv.conf # Nameserver-Konfiguration aus dem akt. Linux zum Knoppix kopieren
chroot KNOPPIX
mount -t proc /proc proc # Für Internet-Zugang

OCS installieren

nano /etc/apt/sources.list
  • sources.list ist nun in nano geöffnet. Ans Ende gehen und folgende Zeilen eintragen:
# Opalix-Repository der Freitagsrunde
deb http://opalix.freitagsrunde.org/debian-rep ./
deb-src http://opalix.freitagsrunde.org/debian-rep ./

  • Datei speichern, nano beenden.
apt-get update # Laden der hinzugefügten Pakete
apt-get install ocs
  • Dokumentation kopieren. Aktuelle Doku findet man gepackt auf der OPAL-Seite - also wget-Link aktualisieren!
cd /usr/local/share/
wget http://uebb.cs.tu-berlin.de/~opal/ocs-2.3k-doc.tar.bz2
tar xjvf ocs-2.3j-doc.tar.bz2
mv ocs-2.3j ocs

LaTeX, Kile, Kdvi und Subversion installieren

Die LaTeX-Pakete und Subversion wurde bei Opalix 2007 aus Kompatibilitäts- und Platzgründen nicht installiert.

Andere Programme entfernen

  • Da wir nun viel neues installiert haben, müssen wir andere Dinge deinstallieren. Mit folgendem Befehl kann man sich die installierten Pakete nach Größe sortiert anzeigen:
dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | grep -v deinstall | sort -n | awk '{print $1" "$2}'
  • Alle Programme können deinstalliert werden mittels
apt-get remove --purge <Pakete>
  • wobei <Pakete> durch die Pakete in der Spalte "Deinstallierte Pakete" ersetzt werden muss.
Programm Deinstallierte Pakete Gewonnener Speicher
Apache apache2 apache2-common apache2-mpm-prefork apache2-utils libapache2-mod-php4 libzzip-0-12 7,2 MB
Audacity audacity libwxgtk2.4-1 9,3 MB
KDE Internationalisierung kde-i18n-es kde-i18n-fr kde-i18n-it kde-i18n-ja kde-i18n-nl kde-i18n-pl kde-i18n-ru kde-i18n-tr 217 MB
MySQL mysql-client mysql-common mysql-server php4-mysql libmysqlclient15off libdbd-mysql-perl 67,5 MB
Wine wine winetools 50,4 MB
Frozen Bubble frozen-bubble frozen-bubble-data 33,9 MB
Nessus startnessus-knoppix nessusd nessus-plugins nessus libnessus2 libnasl2 libgdchart-gd2-noxpm libgd2-xpm 17,6 MB
NX freenx nxagent nxclient nxtunnel-server libnxcomp0
libnxcompext0 nxdesktop nxlibs nxproxy nxsetup-knoppix nxssh nxtunnel-client nxviewer
14,7 MB
  • Am Ende empfiehlt sich der Aufruf von deborphan, um zu prüfen, ob es nicht benötigte Abhängigkeiten gibt. Mit deborphan | xargs apt-get -y remove kann man die nicht benötigten Pakete dann direkt entfernen.


OPALIX-Branding

Die folgenden Befehle beziehen sich auf das Opalix-Verzeichnis. Darin sollte ein Ordner 'branding' enthalten sein, den man hier bekommt.

cd /home/<username>/opalix

HTML-Dateien auf der CD ersetzen

Diese Dateien sind verfügbar, wenn man die CD nicht bootet, sondern in Windows oder Linux als Laufwerk einbindet.

mv knx-master/index{.html,_knoppix.html} 
cp -r branding/html-content/* master/
cp branding/gfx_export/opalix_2007_splash.png master/

Dokumentation

Es gibt eine Anleitung mit ersten Schritten und Beispiele, die man auf die CD kopieren kann und die vom Desktop aus verlinkt sind.

cp -r branding/beispiele source/KNOPPIX/etc/skel/
cp -r branding/doc source/KNOPPIX/var/local/

Damit die Beispiele und der VIM-Highlighter auch wirklich kopiert werden, muss noch die Datei source/KNOPPIX/etc/X11/Xsession.d/45xsession angepasst werden. In Zeile 64 hinzufügen:

rsync -Ha --ignore-existing /etc/skel/{.acrorc,.Xdefaults,.gimp*,.gconf*,.bashrc,.nessus*,.links,.local,.lynx*,.qt,.vim,.xine,.xmms,tmp,beispiele} $HOME/ 2>/dev/null

KDE-Branding

Wir ersetzen den KDE Splash-Screen und das Desktop-Hintergrundbild. Außerdem werden Links für die Doku angelegt.

cp branding/gfx_export/opalix_2007_splash_framed.png source/KNOPPIX/usr/share/apps/ksplash/Themes/Default/splash_top.png
cp branding/gfx_export/splash_active_bar.png source/KNOPPIX/usr/share/apps/ksplash/Themes/Default/splash_active_bar.png
cp branding/gfx_export/splash_bottom.png source/KNOPPIX/usr/share/apps/ksplash/Themes/Default/splash_bottom.png
cp branding/gfx_export/splash_inactive_bar.png source/KNOPPIX/usr/share/apps/ksplash/Themes/Default/splash_inactive_bar.png
cp branding/gfx_export/opalix_2007_background.jpg source/KNOPPIX/usr/local/lib/knoppix.jpg
cp branding/gfx_export/opalix_2007_background.jpg master/KNOPPIX/background.jpg

Anpassung der Desktop-Links

mkdir knx-source/var/local/gfx source/KNOPPIX/etc/skel/.kde/share/apps/kdesktop
cp -r branding/gfx_orig/* source/KNOPPIX/var/local/gfx
cp branding/desktop/*.desktop source/KNOPPIX/etc/skel/Desktop/
cp branding/desktop/IconPositions source/KNOPPIX/etc/skel/.kde/share/apps/kdesktop/

Anpassungen des Kickers und sonstiger KDE-Komponenten

Um beliebige Eigenschaften von KDE anzupassen, bootet man das neu erstellte Opalix und geht dann folgendermaßen vor:

touch /tmp/zeipunkt1 #Erstellen eines Zeitpunktes

Nun nimmt man die gewünschten Änderungen vor und lässt sich mit

find /home/knoppix -newer /tmp/zeitpunkt -print

alle geänderten KDE-Konfigurationsdateien anzeigen. Die genannten Dateien sichert man auf USB-Stick und kopiert sie später nach source/KNOPPIX/etc/skel. Unter Umständen muss man die Dateien/Ordner auch noch in /etc/X11/Xsession.d/45xsession (ca. Zeile 64) eintragen(s.o.).

Die Grafiken für den Kicker(Startleiste) liegen in source/Knoppix/usr/share/apps/kicker/. Die K-Menü Icons liegen in source/Knoppix/usr/share/icons/. Diese kann man ebenfalls einfach überschreiben.

Bookmarks

Ersetzen der bookmark-files für Firefox und Konqueror

cp branding/bookmarks/firefox/* source/KNOPPIX/etc/skel/.mozilla/firefox/3d4ef4xp.default/
cp branding/bookmarks/konqueror/* source/KNOPPIX/etc/skel/.kde/share/apps/konqueror/

Syntax-Highlighting

Installation von Dateien zum Opal Syntax-Highlighting für kate, nano und vim.

cat branding/highlighter/nanorc_pt >> source/KNOPPIX/etc/nanorc
cp branding/highlighter/opal_kate.xml source/KNOPPIX/usr/share/apps/katepart/syntax/
mkdir -p source/KNOPPIX/etc/skel/.vim/syntax
cp branding/highlighter/filetype.vim source/KNOPPIX/etc/skel/.vim/
cp source/KNOPPIX/usr/lib/ocs/ocs/lib/vim/opal.vim source/KNOPPIX/etc/skel/.vim/syntax/

ISOLINUX Bootloader

Anpassen der Datei master/boot/isolinux/boot.msg

OPALIX 2007          http://www.freitagsrunde.org/         RELEASE: 2007-10-10 

Die Boot-Grafik kann man ersetzen, indem man ein BMP erzeugt mit folgenden Dimensionen:

  • 640x400px
  • 16 Farben (gimp:Image->Mode->Indexed)

Mit den Tools aus dem Paket syslinux und dem branding-Ordner macht man dann:

bmptoppm < opalix_2007_boot.bmp | ppmtolss16 > logo.16

Kopieren mit:

cp branding/gfx_export/logo.16 master/boot/isolinux/

Aufräumen und Spuren verwischen

  • Bevor man das Opalix-Image erstellt, sollte man folgende Schritte ausführen:
apt-get clean # Download-Cache leeren
umount /proc # Sonst gibts Probleme beim ISO-Erstellen
for i in /var/lib/apt/lists/*_{Release,Packages,Sources}; do >$i; touch -t 198103190000.00 $i; done # Paket-Cache aufs Minimum reduzieren, siehe hier
apt-get check 
dpkg --clear-avail
apt-cache gencaches
sync-available
rm -f /var/cache/apt/*.bin
exit # aus der chroot rausgehen
rm -f root/.bash_history root/.lesshst
mv etc/dhcpc/resolv.conf{~,} # originale resolv.conf wiederherstellen

VirtualBox und das Autostartskript hinzufügen

Die VirtualBox_1.5.0_Win_x86.msi wurde ins /VBOX - Verzeichnis auf der CD extrahiert. Die Dateien SUPInstall.exe und SUPUninstall.exe wurden aus dem SVN von VirtualBox kompiliert und dem Verzeichnis /VBOX beigefügt.

Der Autostarteintrag in der autorun.inf wurde auf die index.exe verbogen. Die index.exe zeigt das neue Opalix-Logo an, bietet 2 Links (freitagsrunde.org und knoppix.de?) und einen Button zum Starten von VirtualBox mit Opalix in einer VM. (ACHTUNG: eine index.html bietet keine - funktionierende - Möglichkeit unter Firefox oder InternetExplorer eine *.exe zu starten!)

Beim betätigen des "OPALIX in VM starten" wird die vboxinstall.exe ausgeführt. Diese prüft zunächst, ob alle Systemvorraussetzungen (Windows 2000,XP,2003;32-bit) erfüllt sind. Wenn dies der Fall ist, wird der VBOX-Ordner von der CD nach %usertemp% (meist c:/Dokumente und Einstellungen/%user%/Lokale Einstellungen/Temp) kopiert.

Danach wird die vboxrun.exe (aus dem jetzt lokal liegenden VBOX Verzeichnis) gestartet. Diese fuehrt die SUPInstall.exe aus, registriert 'ne dll, etc. (details siehe Quellcode). Und startet schliesslich VirtualBox, welches von der eingelegten OPALIX-CD (der Laufwerksbuchstaben wird von der vboxinstall.exe per Parameter übergeben) bootet. Wenn die VM geschlossen wird oder der "STOP VM"-Button gedrückt wird, dann werden/wird versucht alle vorher gesetzte Einstellungen rückgängig zu machen.

VirtualBox mit Shared Folders

Um das Shared Folders Feature von VirtualBox nutzen können, werden zwei Kernelmodule im Gast benötigt, die die Kommunikation zwischen Gast und Host steuern. Zuerst wird die VBoxLinuxAdditions.sh aus dem VBoxGuestAdditions.iso extrahiert. Anschliessend wird der Inhalt der Datein mit "sh VBoxLinuxAddtions.run --noexec --keep" entpackt. Der Quellcode der Module wird danach in den Verzeichnisbaum des neuen Knoppix kopiert. Nach betreten des Root Verzeichnisses mit chroot und der Installation der kernel header können die Module mit "make" kompiliert werden. Die zwei benötigten Dateien sind vboxadd.ko und vboxvfs.ko, welche in das Verzeichnis, in dem sich auch die anderen Module befinden kopiert werden. Die Module müssen zum Schluss noch mit einem Aufruf von "depmod -aq" eingefügt werden. Zur Vereinfachung der Nutzung wurden zwei Skripte entwickelt. Das erste lädt die Module beim booten sofern Opalix in einer VM läuft. Das zweite führt den Nutzer durch die Einrichtung eines Shared Folder. Das erste wird nach /etc/init.d kopiert. Das zweite kann in ein Verzeichniss, welches sich in $PATH befindet kopiert werden.

Image erstellen

Führt man folgendes Skript im ${PROJECTDIR} aus, so wird eine "opalix.iso" gebacken, die das fertige Image enthält. Dafür braucht man das Linux-Paket cloop und enstsprechenden Support für komprimierte Dateisysteme im Kernel (CONFIG_ZLIB_INFLATE=y).

 #!/bin/bash

PROJECTDIR="/home/<username>/opalix"
ROOT="/home/<username>/opalix/source/KNOPPIX"
MASTER="/home/<username>/opalix/master"
TMPFILE="/home/<username>/knoppix-uc.iso"
PREPARER=""
SORT=""

CREATE_CFS=/usr/bin/create_compressed_fs

cd $PROJECTDIR
echo "Creating uncompressed ISO"
mkisofs $SORT -iso-level 4 -R -U -V "OPALIX filesystem" -publisher "freitagsrunde.org" \
    -hide-rr-moved -cache-inodes -no-bak -pad "$ROOT" > $TMPFILE

echo "Finished creating uncompressed ISO:"
du -sh "$TMPFILE"

nice -5 $CREATE_CFS -L 9 -B 131072 -v "$TMPFILE" "$MASTER/KNOPPIX/KNOPPIX"
echo "Finished compressing ISO:"
du -sh "$MASTER/KNOPPIX/KNOPPIX"

cd "$MASTER"
rm -f KNOPPIX/md5sums
find -type f -not -name md5sums -not -name boot.cat -exec md5sum {} \; >> KNOPPIX/md5sums

cd $PROJECTDIR

mkisofs -volid "OPALIX 2007"  -appid "" -publisher "freitagsrunde.org" -preparer "$PREPARER" \
        -rational-rock -full-iso9660-filenames -eltorito-boot boot/isolinux/isolinux.bin -no-emul-boot \
        -boot-load-size 4 -boot-info-table  -eltorito-catalog boot/isolinux/boot.cat  -o opalix.iso -pad -v -hide-rr-moved $MASTER

#        -untranslated-filenames -joliet  -joliet-long  #zur Aenderung des Bootsektors

Probleme beim Booten

Manche Bios-Versionen überspringen einfach das Booten von der CD, wenn der Boot-Catalog in einem falschen Sektor auf der CD liegt. Leider weiß niemand so richtig, welche Sektoren funktionieren und welche nicht. Windows-CDs nutzen Sektoren zwischen 17 und 40 für den Katalog (NT-CDs immer 18), aber es gibt auch CDs mit dem Katalog in Sektor 1000+.

In welchem Sektor der Boot-Catalog liegt, findet man raus mit

isoinfo -d -i opalix.iso

Wie man den Katalog in einen anderen Sektor verschieben kann, kann ich nicht genau sagen: Manchmal hilft es, lange Dateinamen oder Joliet ein- oder auszuschalten, da die Liste mit Dateinamen VOR dem Boot-Katalog gespeichert wird. Genau genommen kann man auch Dummy-Dateien erstellen, um den Boot-Sektor nach hinten zu schieben.

Viel Spaß beim Trial-and-Error!