FreenetWiki : deDebianLiveCD

HomePage :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register
Most recent edit on 2007-08-21 15:52:44 by DeUser [building a freenet live-cd/installation-cd based on debian live-cd - german (update)]

No differences.


Edited on 2007-08-21 15:50:13 by DeUser [building a freenet live-cd/installation-cd based on debian live-cd (update)]

Additions:
config/chroot_local-includes/usr/local/sbin/set_X11.sh



Edited on 2007-08-21 15:48:30 by DeUser [building a freenet live-cd/installation-cd based on debian live-cd (update)]

Additions:
Steht nicht bereits ein passendes Build-Environments zur Verfügung gibt es mehrere Möglichkeiten eines rasch zu erzeugen. Eins vorweg, die Image-Erzeugung mit Qemu ist klarerweise bedeutend langsamer als über ein Chroot-Environment oder ein normales Host-System. Das Howto ist auf Debian Etch als Host-System ausgerichtet. Ob es für andere Linux-Distributionen oder Windows-Versionen ähnliche Methoden zu einigen Punkten gibt, ist mir leider nicht bekannt. Warnung: Die Ausführung aufgeführter Befehle erfolgt auf eigene Verantwortung. Für Fehler in diesem Howto übernehme ich keine Haftung.
Downloade ein Image einer aktuellen Debian-Installations-CD, bspw. die Network Install-CD (debian-40r0-i386-netinst.iso - Nachfolgeversion ist derzeit in Arbeit, 159MB) (Debian 4.0-r0-i386: Homepage).
qemu-img create -f raw debian_env.img 6G

Das Image sollte mindestens eine Größe von 3.5 GB vorweisen (für ein bequemes Kompilieren besser 6GB), weil ansonsten zu wenig Platz zur Erzeugung der LiveCD vorhanden ist. Je nach Einstellung ist mal mehr, mal weniger Speicherplatz notwendig. Die Option "-f raw" hat den Vorteil, dass das Image bei bestimmten Dateisystemen (wie ext2 oder ext3) nur langsam wächst, da erst Speicherplatz am Host-System verbraucht wird, sobald dieser auch im emulierten System belegt wird. Im Gegensatz zu den anderen Image-Formaten lässt es sich auch mounten (siehe unten). Am Host-System muss eine Netzwerkverbindung zu einem Debian-Server bestehen. Die Installation wird gestartet mit:
Unter bspw. GNU/Linux erfolgt das Mounten für lesenden und schreibenden Zugriff mit:
#mount -o loop,rw,offset=32256 debian_env.img /mnt/debian_img #TODO:?
Ein Chroot-Environment erhält man durch Neuinstallation oder Nutzung einer bestehenden Installation. Für ersteres ist zu empfehlen, sich nach einer Installationsvariante für das jeweilige Host-System selbst zu informieren (cdebootstrap dürfte u.a. notwendig sein) oder sich eine fertige Installation zu besorgen. Hat man eine Debian-Installation bereits in Qemu eingerichtet, bietet sich an diese zur Beschleunigung der LiveCD-Image-Erzeugung zu verwenden.
Dazu wird das Qemu-Image entweder lesend oder schreibend gemountet:
Bei schreibendem Zugriff kann gleich die Installation in /mnt/debian_img genutzt werden. Bei lesendem Zugriff wird stattdessen die Verzeichnisstruktur in ein neues Verzeichnis (/mnt/debian_chroot/)kopiert:
cp -a /mnt/debian_img /mnt/debian_chroot
Nun wird ins Chroot-Environment gechrootet und mit dem Kapitel Erstellung der LiveCD fortgefahren:
chroot -t proc /proc /mnt/debian_img/proc
chroot /mnt/debian_img /bin/bash
# oder
chroot -t proc /proc /mnt/debian_chroot/proc
chroot /mnt/debian_chroot /bin/bash
Wird das Chroot-Environment nicht mehr benötigt, dieses wieder unmounten:
umount /mnt/debian_img/proc
umount /mnt/debian_img
# oder
umount /mnt/debian_chroot/proc
umount /mnt/debian_chroot
Die LiveCD kann beliebig zusammengestellt werden. Für einen minimalen Betrieb reicht Java. Bei Verwendung von zB Frost oder Thaw ist weiters die X11-Oberfläche erforderlich. In diesem Howto wurde als kleine aber doch nicht zu spartanische Oberfläche Xfce4 gewählt. Da eine Xfce4-Desktopumgebung bereits als Paketliste inkludiert ist, erleichtert es die Paketerweiterung. Sollen die Daten auch auf anderen PCs erreichbar sein, ist der Zugriff entweder über fproxy möglich oder durch Einrichtung eines Samba- oder OpenSSH-Servers. Sicherheitsprogramme wie clamd, checksecurity, etc. sind weitere potentielle Serverfunktionen.
Nun steht die Standardkonfiguration zur Modifikation zur Verfügung. Es sind nur geringfügige Änderungen notwendig. Als Paketlisten werden "standard" (für "headless"-Version; ohne X, links als Browser) und "xfce" (für "x11"-Version; Desktop für Thaw, Frost, ...) verwendet. Sonstige gewünschte Pakete (Programme) sind in eigenen Paketlisten in config/chroot_local-packageslists/ aufgeführt. Die Variablennamen und Parameter können sich durch die ständige Weiterentwicklung von Debian Live geringfügig unterscheiden (zB LIVE_* start LH_*). Die headless-Konfiguration wird nicht extra beschrieben, weil diese durch die x11-Konfiguration abgedeckt wird.
Bootparameter (optional, auch Direktübergabe beim Booten möglich):
Freischaltung der contrib- und non-free-Zweige (notwendig u.a. für Java):
für headless (ohne X):
LH_PACKAGES_LISTS="standard"

für xfce4:
LH_PACKAGES_LISTS="xfce"

Die Java-Installation benötigt die Zustimmung zur Lizenz. Da das nur interaktiv geschehen kann, wird Java nicht über eine Paketliste sondern über einen Hook im späteren Verlauf der Installation installiert. Das Originalskript "sun-java5.sh" (inkl. Kommentar) findet sich in /usr/share/live-helper/examples/hooks/:
DEBIAN_FRONTEND="dialog" apt-get install --yes sun-java5-bin
Einige Male gab es Probleme mit dem Java-Path, weil die libs in ein falsches Verzeichnis verlinkt wurden. Das Resultat ist eine Fehlermeldung bei Aufruf von java. Abhilfe schafft ein soft-link:
Der Xorg-Server kann mit dexconf konfiguriert werden. Ein dementsprechendes Skript sähe so aus:
config/chroot_local-packageslists/
Die Auswahl der zu installierenden Pakete wird in einer Paketliste (Package List) definiert. (Eigene) Paketlisten, die in diesem Verzeichnis hinterlegt sind, werden bei der Installation zusätzlich abgearbeitet. Vordefinierte Paketlisten aus /usr/share/live-helper/lists/ können (müssen aber nicht) folgendermaßen inkludiert werden:
#<include> name_der_paketliste
z.B.:
#<include> junior
Eine Auswahl diverser kleiner Programmen sähe folgendermaßen aus (weitere Beispiele am Ende dieser Seite):
config/chroot_local-packageslists/freenet-tools
LH: freenet-tools
less mc links
Die Dateizugriffsrechte für die "x11"-Konfigurationsdateien (wichtig für die zu inkludierenden Dateien) sind wie folgt gesetzt:
.:
insgesamt 4
drwxr-xr-x 5 root root 4096 2007-08-21 10:41 config
./config:
insgesamt 32
-rw-r--r-- 1 root root 2237 2007-08-21 15:24 binary
-rw-r--r-- 1 root root 1302 2007-08-20 01:05 bootstrap
-rw-r--r-- 1 root root 1310 2007-08-21 15:24 chroot
drwxr-xr-x 2 root root 4096 2007-08-21 02:03 chroot_local-hooks
drwxr-xr-x 5 root root 4096 2007-08-20 16:11 chroot_local-includes
drwxr-xr-x 2 root root 4096 2007-08-21 02:02 chroot_local-packageslists
-rw-r--r-- 1 root root 2707 2007-08-19 01:44 common
-rw-r--r-- 1 root root 212 2007-08-19 01:44 source
./config/chroot_local-hooks:
insgesamt 4
-rwxr-xr-x 1 root root 762 2007-08-21 01:51 sun-java5.sh
./config/chroot_local-includes:
insgesamt 12
drwxr-xr-x 3 root root 4096 2007-08-21 15:17 etc
drwxr-xr-x 3 999 999 4096 2007-08-16 16:09 files
drwxr-xr-x 3 root root 4096 2007-08-17 11:05 usr
./config/chroot_local-includes/etc:
insgesamt 12
-rw-r--r-- 1 root root 113 2007-08-17 11:08 crypttab
-rw-r--r-- 1 root root 124 2007-08-17 11:08 fstab
drwxr-xr-x 2 root root 4096 2007-08-17 01:58 X11
./config/chroot_local-includes/etc/X11:
insgesamt 4
-rw-r--r-- 1 root root 14 2007-08-16 16:08 default-display-manager
./config/chroot_local-includes/files:
insgesamt 4
drwxr-xr-x 2 999 999 4096 2007-08-21 15:14 freenet
./config/chroot_local-includes/files/freenet:
insgesamt 8
-rwxr-xr-x 1 999 999 43 2007-08-16 16:10 freenet_install_offline.sh
-rwxr-xr-x 1 999 999 150 2007-08-16 16:10 freenet_install_online.sh
-rwxr-xr-x 1 999 999 0 2007-08-21 15:14 installer_offline.jar.placeholder
./config/chroot_local-includes/usr:
insgesamt 4
drwxrwsr-x 3 root staff 4096 2007-08-17 11:05 local
./config/chroot_local-includes/usr/local:
insgesamt 4
drwxrwsr-x 2 root staff 4096 2007-08-21 15:19 sbin
./config/chroot_local-includes/usr/local/sbin:
insgesamt 36
-rwxrwsr-x 1 root staff 44 2007-08-17 10:20 crypt_close.sh
-rwxrwsr-x 1 root staff 44 2007-08-17 11:07 crypt_format.sh
-rwxrwsr-x 1 root staff 115 2007-08-17 10:19 crypt_mount.sh
-rwxrwsr-x 1 root staff 53 2007-08-17 10:16 crypt_open.sh
-rwxrwsr-x 1 root staff 31 2007-08-17 10:19 crypt_unmount.sh
-rwxrwsr-x 1 root staff 70 2007-08-17 10:14 part_create.sh
-rwxrwsr-x 1 root staff 60 2007-07-28 10:49 set_java-path.sh
-rwxrwsr-x 1 root staff 76 2007-08-05 23:15 set_java-version.sh
-rwxrwsr-x 1 root staff 19 2007-08-21 15:19 set_X11.sh
./config/chroot_local-packageslists:
insgesamt 20
-rw-r--r-- 1 root root 55 2007-08-21 02:00 freenet-encryption
-rw-r--r-- 1 root root 31 2007-08-21 02:01 freenet-net
-rw-r--r-- 1 root root 41 2007-08-21 02:01 freenet-samba
-rw-r--r-- 1 root root 50 2007-08-21 01:58 freenet-ssh
-rw-r--r-- 1 root root 36 2007-08-21 01:58 freenet-tools
Es gibt mehrere Methoden, die sich in der Anzahl ihrer Zwischenschritte unterscheiden.
Methode 1:
Methode 2:
Die Erstellung des Images kann in Teilschritten erfolgen. Alle Befehle werden in debian_builddir/ aufgerufen.
2.2 Danach Erzeugung der Verzeichnisstruktur der Chroot-Umgebung debian_builddir/chroot/:
Sind noch Änderungen in der Verzeichnisstruktur notwendig, ist dies jetzt durchführbar.
2.3 Nun wird ein bootbares CD-Image generiert (für USB-Speicher u.ä. die entsprechenden Konfigurationsparameter setzen):
Das fertige LiveCD-ISO liegt nun als binary.iso in debian_builddir/ und lässt sich mit einem Brennprogramm auf CD brennen.
Bei mehrmaligen Versuchen ist das nochmalige Downloaden der meisten Pakete durch Verwendung des Dienstes apt-cacher vermeidbar. Wird apt-cacher bereits verwendet, ist der Download der meisten regulären Pakete von einem Debian-Server sogar unnötig. Apt-cacher hält Debian-Pakete vor und bietet diese selbst über einen Serverdienst an. Der einzige Nachteil ist der nicht mögliche Download des memtest86+-Images vmlinuz. Apt-cacher beschränkt sich auf deb-Pakete, weshalb bei Nutzung von memtest86+ auf apt-cacher verzichtet werden muss. Zum erstmaligen Downloaden der Pakete bei bereits bestehender Nutzung ist es jedoch immer noch von Vorteil und spart Downloadvolumen.
Dazu wird config/bootstrap durch Hinzufügen von localhost:3142 als Proxy angepasst:
Nun kann das Verzeichnis debian_builddir gelöscht werden ohne später nochmals alle Pakete downloaden zu müssen. Einige der Pakete müssen dennoch jedesmal neu gedownloadet werden.
Alternativ bewahrt man sich alle /debian_builddir/cache/packages_*/-Verzeichnisse auf und verwendet diese bei einer neuen Image-Generierung wieder. Damit ist der nochmalige Download dieser Pakete nicht notwendig.
Bearbeitung des Images
Sind noch Modifikationen des LiveCD-Images notwendig, kann dieses schreibend geöffnet werden. Unter GNU/Linux mit:
Das squash-Dateisystem wird anschließend folgendermaßen gemountet: !?!? (TODO: nicht beschreibbar/writable, trotz -o rw)
Das Basissystem bildet die LiveCD. Ist genug RAM vorhanden, kann der LiveCD-Inhalt sogar ins RAM kopiert werden. Dazu wird am Bootprompt dem Kernel der Parameter "toram" übergeben (am Bootprompt "live toram" eingeben).
Das übergeordnete Verzeichnis der Freenet-Installation muss vom Nutzer "freenet" gelesen und beschrieben werden können. Wird ein anderer Nutzer im run.sh-Script gesetzt, müssen die Dateizugriffsrechte dementsprechend angepasst werden. Treten beim Setzen der Dateizugriffsrechte von /mnt/freenet/ Probleme auf, ist dies einfach zu umgehen, indem man stattdessen /mnt/freenet/core/ als Installationsverzeichnis nimmt. Damit bleiben die Dateizugriffsrechte von core auch nach Unmounten und nochmaligem Mounten erhalten.
Die Freenet-Installation lässt sich vor fremden Blicken schützen, indem die Partition verschlüsselt wird. Weder lässt sich der Festplatteninhalt im Offline-Betrieb auslesen, da die Daten ohne Entschlüsselungs-Passwort nicht entschlüsselt werden können, noch ist ein Zugriff im Online-Betrieb möglich, falls die Login-Passwörter vernünftig gewählt wurden und keine Shell offen bleibt.
Wichtig! Die Partitionsnamen korrekt angegeben, um Datenverlust vorzubeugen! Sind diese nicht im Vorhinein bekannt, vorerst die Befehle händisch eingeben. Vielleicht ersetze ich die Skripte später einmal durch verbesserte.
Definiert den Mountpunkt für die verschlüsselte Partition. Wird beim Booten automatisch gemountet. Der "exec"-Parameter scheint notwendig zu sein, da sonst die Scripte (wie ./run.sh) nicht ausgeführt werden können. Wird jedoch entweder nicht korrekt ins Image übernommen oder bei jedem Bootvorgang neu generiert, funktioniert damit bei der LiveCD nicht!
config/chroot_local-packageslists/freenet-encryption
Die notwendigen Pakete sind in "freenet-encryption" enthalten:
LH: freenet-encryption
Zuerst wird die verschlüsselte Partition erstellt und sowohl der Verschlüsselungsalgorithmus festgelegt als auch nach dem gewünschten Entschlüsselungspasswort gefragt. Anpassung des Partitionsnamens nicht vergessen!
Wird sie nicht mehr gebraucht, sie wieder unmounten
und schließen
Mounten und unmouten funktioniert alternativ mit (falls /etc/fstab/ angepasst wurde)
Ab nun wird die verschlüsselte Partition beim Booten automatisch geöffnet und gemountet und beim Shutdown automatisch ungemountet und geschlossen. Die Entschlüsselungspasswort-Abfrage erfolgt während des Bootvorgangs.

Sonstiges

Neben freenet-tools und freenet-encrypted sind weitere inkludierte, aber noch nicht getestete, Paketlisten:
config/chroot_local-packageslists/freenet-net
LH: freenet-net
pptp-linux
config/chroot_local-packageslists/freenet-samba
LH: freenet-samba
samba samba-common
config/chroot_local-packageslists/freenet-ssh
LH: freenet-ssh
openssh-client openssh-server

Downloads

Von der ersten deutschen Test-Version sind netzwerkintern die Konfigurationsdateien (freenet-config-v0.01.zip) downloadbar. Images der headless- und der x11-Version und möglicherweise eine Freesite und/oder ein Thaw-Index folgen.


Deletions:
Steht nicht bereits ein passendes Build-Environments zur Verfügung gibt es mehrere Möglichkeiten eines rasch zu erzeugen. Eins vorweg, die Image-Erzeugung mit Qemu ist klarerweise bedeutend langsamer als über ein Chroot-Environment oder ein normales Host-System.
Downloade ein Image einer aktuellen Debian-Installations-CD, bspw. die Network Install-CD (159MB) (Debian 4.0-r0-i386 Beschreibung, direkter Downloadlink).
qemu-img create -f raw debian_env.img 5G

Das Image sollte mindestens eine Größe von 3.5 GB vorweisen (besser 5GB), weil ansonsten zu wenig Platz zur Erzeugung der LiveCD vorhanden ist. Die Option "-f raw" hat den Vorteil, dass das Image bei bestimmten Dateisystemen (wie ext2 oder ext3) nur langsam wächst, da erst Speicherplatz am Host-System verbraucht wird, sobald dieser auch im emulierten System belegt wird. Im Gegensatz zu den anderen Image-Formaten lässt es sich auch mounten (siehe unten). Am Host-System muss eine Netzwerkverbindung zu einem Debian-Server bestehen. Die Installation wird gestartet mit:
Unter bspw. GNU/Linux erfolgt das Mounten für lesenden und schreiben Zugriff mit:
folgt noch
Download eines Build-Environments:
Sobald Debian 4.0-r1-i386 als Network Install-CD erhältlich ist, stelle ich ein fertiges Build-Environment als Qemu-Image (raw) zum Download im Freenet-Netzwerk bereit.
Die LiveCD kann beliebig zusammengestellt werden. Für einen minimalen Betrieb reicht Java. Bei Verwendung von zB Frost oder Thaw ist weiters die X11-Oberfläche erforderlich. In diesem Howto wurde Xfce4 als kleine aber doch nicht zu spartanische Oberfläche gewählt. Zudem erleichtert es die Paketanpassung, da eine Xfce4-Desktopumgebung bereits als Paketliste inkludiert ist. Sollen die Daten auch auf anderen PCs erreichbar sein, ist der Zugriff entweder über fproxy möglich oder durch Einrichtung eines Samba- oder OpenSSH-Servers. Sicherheitsprogramme wie clamd, checksecurity, etc. sind weitere potentielle Serverfunktionen.
Nun steht die Standardkonfiguration zur Modifikation zur Verfügung. Es sind im Vergleich zur Paketliste "xfce" nur geringfügige Änderungen notwendig. Die Variablennamen können sich geringfügig unterscheiden (zB LIVE_* start LH_*).
beim Bootvorgang (optional):
Freischaltung der contrib- und non-free-Zweige (notwendig für u.a. Java):
LH_PACKAGES_LISTS="freenet"

Die Java-Installation benötigt die Zustimmung zur Lizenz. Da das nur interaktiv geschehen kann, wird Java nicht über die Paketliste "freenet" sondern über einen Hook im späteren Verlauf der Installation installiert. Das Originalskript "sun-java5.sh" (inkl. Kommentar) findet sich in /usr/share/live-helper/examples/hooks/:
DEBIAN_FRONTEND="dialog" apt-get install --yes sun-java5-bin sun-java5-demo \
sun-java5-doc sun-java5-fonts sun-java5-jdk sun-java5-jre \
sun-java5-plugin sun-java5-source
Einige Male gab es Probleme mit dem Java-Path, weil die libs in ein falsches Verzeichnis verlinkt wurden. Abhilfe schafft ein soft-link:
Der Xorg-Server kann mit dexconf konfiguriert werden.
/usr/share/live-helper/lists/freenet
Die Auswahl der zu installierenden Pakete wird in einer Paketliste (Package List) des live-helpers definiert.
Eine Auswahl mit xfce, ssh, iceweasel/firefox, wlan und diverser kleiner Programme sähe folgendermaßen aus:
LH: Xfce
#<include> xfce
mc xterm openssh-client openssh-server pptp-linux iceweasel
linux-wlan-ng linux-wlan-ng-source linux-wlan-ng-firmware
Wird wlan als Netzverbindung verwendet, ist etwas mehr Aufwand notwendig. Z.B. für die Netgear WG511 muss die Firmware isl3890 in /usr/lib/hotplug/firmware/ hinterlegt werden. Zusätzliche sicherheitsrelevante Absicherung sollte nicht vergessen werden.
Es gibt mehrere Wege, die sich in der Anzahl ihrer Zwischenschritte unterscheiden.
Weg 1:
Weg 2:
Die Erstellung des Images kann in Teilschritten erfolgen.
2.2 Danach Generierung der Verzeichnisstruktur in der Chroot-Umgebung debian_builddir/chroot/:
2.3 Nun wird die Chroot-Umgebung mitsamt dem Bootstrap in ein Image gepackt:
Das fertige LiveCD-ISO liegt nun als binary.iso in debian_builddir und lässt sich mit einem Brennprogramm auf CD brennen.
Java-Doc:
Bei der Java-Hook-Installation wird folgende Meldung erscheinen:
This package is an installer package, it does not actually contain the
J2SDK documentation. You will need to go download one of the
archives:
jdk-1_5_0-doc.zip jdk-1_5_0-doc-ja.zip
(choose the non-update version if this is the first installation).
Please visit
now and download. The file should be owned by root.root and be copied
to /tmp.
Die downgeloadete Datei jdk-1_5_0-doc.zip bzw. jdk-1_5_0-doc-ja.zip (wahlweise entweder engl. oder jap. Dokumentation) muss nach debian_builddir/chroot/tmp/ kopiert werden, nicht /tmp/ des Host-Systems. Das vergaß ich selbst mehr als einmal.
Bei mehrmaligen Versuchen ist das nochmalige Downloaden der Pakete durch Verwendung des Dienstes apt-cacher vermeidbar. Wird apt-cacher bereits verwendet, ist der Download der meisten regulären Pakete von einem Debian-Server sogar unnötig. Apt-cacher hält Debian-Pakete vor und bietet diese selbst über einen Serverdienst an. Der einzige Nachteil ist der nicht mögliche Download des memtest86+-Images vmlinuz. Apt-cacher beschränkt sich auf deb-Pakete, weshalb bei Nutzung von memtest86+ auf apt-cacher verzichtet werden muss. Zum erstmaligen Downloaden der Pakete bei bereits bestehender Nutzung ist es jedoch immer noch von Vorteil und erspart Downloadvolumen.
Dazu muss config/bootstrap durch Hinzufügen von localhost:3142 als Proxy ein wenig angepasst werden:
Nun kann das Verzeichnis debian_builddir gelöscht werden, ohne später nochmals alle Pakete downloaden zu müssen.
Alternativ bewahrt man sich alle /debian_builddir/cache/packages_*/-Verzeichnisse auf und verwendet diese bei einer neuen Image-Generierung wieder. Damit ist der nochmalige Download der Pakete nicht notwendig. Löscht man den Rest bis auf /debian_builddir/config/ ist das Build-Verzeichnis einfach wiederverwendbar.

Bearbeitung des Images

Sind noch Modifikationen des LiveCD-Image notwendig, kann diese geöffnet werden. Unter GNU/Linux mit:
Das squash-Dateisystem wird anschließend folgendermaßen gemountet: !?!? (TODO: nicht writable, trotz -o rw)
Das Basissystem bildet die LiveCD. Ist genug RAM vorhanden, kann der LiveCD-Inhalt sogar ins RAM kopiert werden. Dazu wird am Bootprompt dem Kernel der Parameter "toram" übergeben.
Das übergeordnete Verzeichnis der Freenet-Installation muss vom Nutzer "freenet" gelesen und beschrieben werden können. Wird ein anderer Nutzer im run.sh-Script gesetzt, müssen die Dateizugriffsrechte dementsprechend angepasst werden. Treten beim Setzen der Dateizugriffsrechte von /mnt/freenet/ Probleme auf, ist dies einfach zu umgehen, indem man stattdessen /mnt/freenet/core/ als Installationsverzeichnis nimmt. Damit bleiben die Dateizugriffsrechte von core auch nach Unmounten und nochmaligem Mounten erhalten.
Die Freenet-Installation lässt sich vor fremden Blicken schützen, indem die Partition verschlüsselt wird. Weder lässt sich der Festplatteninhalt im Offline-Betrieb auslesen, da die Daten ohne Passwort nicht entschlüsselt werden können, noch ist ein Zugriff im Online-Betrieb möglich, falls die Passwörter vernünftig gewählt wurden und keine Shell offen bleibt.
Wichtig! Die Partitionsnamen korrekt angegeben, um Datenverlust vorzubeugen! Sind diese nicht im Vorhinein bekannt, vorerst die Befehle händisch eingeben. Vielleicht ersetze ich die Scripte später einmal durch verbesserte.
Definiert den Mountpunkt für die verschlüsselte Partition. Wird beim Booten automatisch gemountet. Der "exec"-Parameter scheint notwendig zu sein, da sonst die Scripte (wie ./run.sh) nicht ausgeführt werden können.
/usr/share/live-helper/lists/freenet
Zur Paketliste müssen die Pakete cryptsetup, dmsetup und hashalot hinzugefügt werden. Diese sieht nun bspw. wie folgt aus:
LH: Xfce
#<include> xfce
mc xterm openssh-client openssh-server pptp-linux iceweasel
linux-wlan-ng linux-wlan-ng-source linux-wlan-ng-firmware
Zuerst wird die verschlüsselte Partition erstellt und sowohl der Verschlüsselungsalgorithmus festgelegt als auch nach dem gewünschten Entschlüsselungspasswort gefragt.
Wird sie nicht mehr gebraucht, wird sie ungemountet
und geschlossen
Mounten und unmouten funktioniert alternativ mit
Ab nun wird die verschlüsselte Partition beim Booten automatisch geöffnet und gemountet und beim Shutdown automatisch ungemountet und geschlossen.




Edited on 2007-08-18 01:21:37 by DeUser [Building a freenet live-cd/installation-cd based on debian live-cd]

Additions:
Zur Paketliste müssen die Pakete cryptsetup, dmsetup und hashalot hinzugefügt werden. Diese sieht nun bspw. wie folgt aus:
cryptsetup dmsetup hashalot




Edited on 2007-08-18 01:17:30 by DeUser [Building a freenet live-cd/installation-cd based on debian live-cd]

Additions:
Steht nicht bereits ein passendes Build-Environments zur Verfügung gibt es mehrere Möglichkeiten eines rasch zu erzeugen. Eins vorweg, die Image-Erzeugung mit Qemu ist klarerweise bedeutend langsamer als über ein Chroot-Environment oder ein normales Host-System.
Downloade ein Image einer aktuellen Debian-Installations-CD, bspw. die Network Install-CD (159MB) (Debian 4.0-r0-i386 Beschreibung, direkter Downloadlink).
qemu-img create -f raw debian_env.img 5G

Das Image sollte mindestens eine Größe von 3.5 GB vorweisen (besser 5GB), weil ansonsten zu wenig Platz zur Erzeugung der LiveCD vorhanden ist. Die Option "-f raw" hat den Vorteil, dass das Image bei bestimmten Dateisystemen (wie ext2 oder ext3) nur langsam wächst, da erst Speicherplatz am Host-System verbraucht wird, sobald dieser auch im emulierten System belegt wird. Im Gegensatz zu den anderen Image-Formaten lässt es sich auch mounten (siehe unten). Am Host-System muss eine Netzwerkverbindung zu einem Debian-Server bestehen. Die Installation wird gestartet mit:
"-boot d" legt das cdrom-Image als Boot-Device fest. "-net nic" und "-net user" konfigurieren die Netzwerkverbindung zwischen Host-System und simulierter Umgebung (hier die Installations-CD). Das Debian-Grundsystem wird jetzt wie üblich installiert. Danach bootet Debian mit:
Der Dateiaustausch kann auf verschiedenen Arten erfolgen:
- diverse Server (Samba, SSH, FTP, ...) am Host-System oder anderen PCs
Im Fall von Samba ist die dazu notwendige Konfiguration des integrierten Samba-Servers bereits auf vielen Webseiten dokumentiert (u.a. linuxforen.de).
- Mounten des Images:
Unter bspw. GNU/Linux erfolgt das Mounten für lesenden und schreiben Zugriff mit:
Download eines Build-Environments:
Sobald Debian 4.0-r1-i386 als Network Install-CD erhältlich ist, stelle ich ein fertiges Build-Environment als Qemu-Image (raw) zum Download im Freenet-Netzwerk bereit.

Erstellung der LiveCD

Die LiveCD kann beliebig zusammengestellt werden. Für einen minimalen Betrieb reicht Java. Bei Verwendung von zB Frost oder Thaw ist weiters die X11-Oberfläche erforderlich. In diesem Howto wurde Xfce4 als kleine aber doch nicht zu spartanische Oberfläche gewählt. Zudem erleichtert es die Paketanpassung, da eine Xfce4-Desktopumgebung bereits als Paketliste inkludiert ist. Sollen die Daten auch auf anderen PCs erreichbar sein, ist der Zugriff entweder über fproxy möglich oder durch Einrichtung eines Samba- oder OpenSSH-Servers. Sicherheitsprogramme wie clamd, checksecurity, etc. sind weitere potentielle Serverfunktionen.
Erstelle ein Verzeichnis, in dem das LiveCD-Image erzeugt werden soll, wechsle in dieses und lasse die Konfigurationsdateien erzeugen.
Nun steht die Standardkonfiguration zur Modifikation zur Verfügung. Es sind im Vergleich zur Paketliste "xfce" nur geringfügige Änderungen notwendig. Die Variablennamen können sich geringfügig unterscheiden (zB LIVE_* start LH_*).
beim Bootvorgang (optional):
- Wählen der Ländereinstellung (locale)
LH_BOOTAPPEND="locale=de acpi=off xdebconf"

Inkludierung des Festplatten-Installers (optional):
LH_DEBIAN_INSTALLER="enabled"

Verwendung von "freenet" als Benutzernamen (optional):
LH_USERNAME="freenet"

Freischaltung der contrib- und non-free-Zweige (notwendig für u.a. Java):
LH_SECTIONS="main contrib non-free"

LH_PACKAGES_LISTS="freenet"

config/chroot_local-hooks/
Die Java-Installation benötigt die Zustimmung zur Lizenz. Da das nur interaktiv geschehen kann, wird Java nicht über die Paketliste "freenet" sondern über einen Hook im späteren Verlauf der Installation installiert. Das Originalskript "sun-java5.sh" (inkl. Kommentar) findet sich in /usr/share/live-helper/examples/hooks/:
config/chroot_local-hooks/sun-java5.sh
sun-java5-doc sun-java5-fonts sun-java5-jdk sun-java5-jre \
sun-java5-plugin sun-java5-source
config/chroot_local-includes/
Treten Probleme mit den automatisch vorkonfigurierten Xorg-Display-Einstellungen auf, kann der automatische Start von gdm unterbunden werden, um eine manuelle Konfiguration vor dem Start von Xorg vorzunehmen. Dazu wird die Datei default-display-manager während der Installation durch eine leicht modifizierte Version ersetzt (das System sucht in dieser Datei nach dem zu verwendenden Displaymanager):
config/chroot_local-includes/etc/X11/default-display-manager
In chroot_local_includes/files/ (Verzeichnis frei wählbar) können eigene Dateien hinterlegt, z.B. der Freenet-Offline-Installer. Bei Zensur, bei der möglicherweise freenetproject.org geblockt wird, dient sich an, den Offline-Installer zu inkludieren.
Einfache Installations-Skripte wären (gemäß der offiziellen Installationsanleitung):
config/chroot_local-includes/files/freenet/freenet_install_offline.sh
config/chroot_local-includes/files/freenet/freenet_install_online.sh
config/chroot_local-includes/
Einige Male gab es Probleme mit dem Java-Path, weil die libs in ein falsches Verzeichnis verlinkt wurden. Abhilfe schafft ein soft-link:
config/chroot_local-includes/usr/local/sbin/set_java-path.sh
ln -s / /filesystem.squashfs
Bei einigen Images gab es ein weiteres Problem mit der falschen Default-Java-Version (1.4 statt 1.5). Ein Umschalten der Default-Java-Version hilft:
config/chroot_local-includes/usr/local/sbin/set_java-version.sh
update-alternatives-java -s java-1.5.0-sun 53
Sonstige Tipps:
Der Xorg-Server kann mit dexconf konfiguriert werden.
Die Auswahl der zu installierenden Pakete wird in einer Paketliste (Package List) des live-helpers definiert.
Wird wlan als Netzverbindung verwendet, ist etwas mehr Aufwand notwendig. Z.B. für die Netgear WG511 muss die Firmware isl3890 in /usr/lib/hotplug/firmware/ hinterlegt werden. Zusätzliche sicherheitsrelevante Absicherung sollte nicht vergessen werden.
Erzeugung des Images
Es gibt mehrere Wege, die sich in der Anzahl ihrer Zwischenschritte unterscheiden.
Weg 1:
Nach Modifikation der Konfigurationsdateien reicht an und für sich ein einziger Befehl:
cd debian_builddir
lh_build
Weg 2:
Die Erstellung des Images kann in Teilschritten erfolgen.
2.1 Erzeugung des Bootstraps:
cd debian_builddir
lh_bootstrap
2.2 Danach Generierung der Verzeichnisstruktur in der Chroot-Umgebung debian_builddir/chroot/:
lh_chroot

2.3 Nun wird die Chroot-Umgebung mitsamt dem Bootstrap in ein Image gepackt:
lh_binary

2.4 Zuletzt wird ???:
lh_source

Das fertige LiveCD-ISO liegt nun als binary.iso in debian_builddir und lässt sich mit einem Brennprogramm auf CD brennen.
Tipps
Java-Doc:
Bei der Java-Hook-Installation wird folgende Meldung erscheinen:
This package is an installer package, it does not actually contain the
J2SDK documentation. You will need to go download one of the
archives:
jdk-1_5_0-doc.zip jdk-1_5_0-doc-ja.zip
(choose the non-update version if this is the first installation).
Please visit
now and download. The file should be owned by root.root and be copied
to /tmp.
Die downgeloadete Datei jdk-1_5_0-doc.zip bzw. jdk-1_5_0-doc-ja.zip (wahlweise entweder engl. oder jap. Dokumentation) muss nach debian_builddir/chroot/tmp/ kopiert werden, nicht /tmp/ des Host-Systems. Das vergaß ich selbst mehr als einmal.
apt-cacher:
Bei mehrmaligen Versuchen ist das nochmalige Downloaden der Pakete durch Verwendung des Dienstes apt-cacher vermeidbar. Wird apt-cacher bereits verwendet, ist der Download der meisten regulären Pakete von einem Debian-Server sogar unnötig. Apt-cacher hält Debian-Pakete vor und bietet diese selbst über einen Serverdienst an. Der einzige Nachteil ist der nicht mögliche Download des memtest86+-Images vmlinuz. Apt-cacher beschränkt sich auf deb-Pakete, weshalb bei Nutzung von memtest86+ auf apt-cacher verzichtet werden muss. Zum erstmaligen Downloaden der Pakete bei bereits bestehender Nutzung ist es jedoch immer noch von Vorteil und erspart Downloadvolumen.
Dazu muss config/bootstrap durch Hinzufügen von localhost:3142 als Proxy ein wenig angepasst werden:
LH_MIRROR_BOOTSTRAP="http://localhost:3142/ftp.debian.org/debian/"
LH_MIRROR_BOOTSTRAP_SECURITY="http://localhost:3142/security.debian.org/"
Nun kann das Verzeichnis debian_builddir gelöscht werden, ohne später nochmals alle Pakete downloaden zu müssen.
Alternativ bewahrt man sich alle /debian_builddir/cache/packages_*/-Verzeichnisse auf und verwendet diese bei einer neuen Image-Generierung wieder. Damit ist der nochmalige Download der Pakete nicht notwendig. Löscht man den Rest bis auf /debian_builddir/config/ ist das Build-Verzeichnis einfach wiederverwendbar.
Sind noch Modifikationen des LiveCD-Image notwendig, kann diese geöffnet werden. Unter GNU/Linux mit:
mkdir /mnt/livecd
mount -o loop,rw binary.iso /mnt/livecd
Das squash-Dateisystem wird anschließend folgendermaßen gemountet: !?!? (TODO: nicht writable, trotz -o rw)
mkdir /mnt/livecd_squashfs
mount -o loop,rw -t squashfs /mnt/livecd/casper/filesystem.squashfs /mnt/livecd_squashfs/
Zuvor muss sichergestellt sein, dass der Kernel squashfs unterstützt, und gegebenfalls das squashfs-Kernelmodul nachgeladen werden.
Beispiel:
aptitude install squashfs-modules-2.6.18-4-486
modprobe squashfs
Wichtig im Vorhinein zu wissen ist, dass root-Zugriff über
sudo bash

erfolgt. Ein neues root-Passwort kann einfach über
sudo passwd

gesetzt werden.
Die Installation des Basissystem erfolgt über die Eingabe von "install" am Bootprompt der LiveCD. Weitere Optionen sind über die Funktionstasten abrufbar. Danach wird die LiveCD nicht mehr benötigt.
Die Freenet-Installation erfolgt wie auf der Freenet-Homepage beschrieben.
Das Basissystem bildet die LiveCD. Ist genug RAM vorhanden, kann der LiveCD-Inhalt sogar ins RAM kopiert werden. Dazu wird am Bootprompt dem Kernel der Parameter "toram" übergeben.
#als root oder mit sudo
Das übergeordnete Verzeichnis der Freenet-Installation muss vom Nutzer "freenet" gelesen und beschrieben werden können. Wird ein anderer Nutzer im run.sh-Script gesetzt, müssen die Dateizugriffsrechte dementsprechend angepasst werden. Treten beim Setzen der Dateizugriffsrechte von /mnt/freenet/ Probleme auf, ist dies einfach zu umgehen, indem man stattdessen /mnt/freenet/core/ als Installationsverzeichnis nimmt. Damit bleiben die Dateizugriffsrechte von core auch nach Unmounten und nochmaligem Mounten erhalten.
#als root oder mit sudo
chown freenet:freenet /mnt/freenet
bzw.
# chown freenet:freenet /mnt/freenet/core
Die Freenet-Installation lässt sich vor fremden Blicken schützen, indem die Partition verschlüsselt wird. Weder lässt sich der Festplatteninhalt im Offline-Betrieb auslesen, da die Daten ohne Passwort nicht entschlüsselt werden können, noch ist ein Zugriff im Online-Betrieb möglich, falls die Passwörter vernünftig gewählt wurden und keine Shell offen bleibt.
Die Handhabung ist mit wenigen Scripten und angepassten Dateien erledigt. Die Vorgehensweise habe ich von linuxforen.de übernommen.
Konfigurationsdateien:
Verschlüsselungsskripte:
Wichtig! Die Partitionsnamen korrekt angegeben, um Datenverlust vorzubeugen! Sind diese nicht im Vorhinein bekannt, vorerst die Befehle händisch eingeben. Vielleicht ersetze ich die Scripte später einmal durch verbesserte.
Folgende Parameter sind jeweils frei wählbar:
/dev/hda5 ...... Partition, die verschlüsselt werden soll
freenetEnc ..... Name des device-files der verschlüsselten Partition
/mnt/freenet ... Mountpunkt der verschlüsselten Partition
config/chroot_local-includes/usr/local/sbin/part_create.sh:
Erstellt die verschlüsselte Partition.
cryptsetup -c aes-cbc-essiv:sha256 -y luksFormat /dev/hda5
config/chroot_local-includes/usr/local/sbin/crypt_format.sh:
Formatiert die verschlüsselte Partition.
mkfs.ext2 /dev/mapper/freenetEnc
config/chroot_local-includes/usr/local/sbin/crypt_open.sh:
Öffnet die verschlüsselte Partition.
cryptsetup luksOpen /dev/hda5 freenetEnc
config/chroot_local-includes/usr/local/sbin/crypt_close.sh:
Schließt die verschlüsselte Partition.
cryptsetup luksClose freenetEnc
config/chroot_local-includes/usr/local/sbin/crypt_mount.sh:
Mountet die verschlüsselte Partition.
mount /dev/mapper/freenetEnc /mnt/freenet
config/chroot_local-includes/usr/local/sbin/crypt_umount.sh:
Unmountet die verschlüsselte Partition.
umount /mnt/freenet
config/chroot_local-includes/etc/crypttab:
Definiert das device-file für die verschlüsselte Partition. Der Dienst /etc/init.d/cryptdisks aktiviert es automatisch beim Booten.
# <target name> <source device> <key file> <options>
freenetEnc /dev/hda5 none luks,cipher=aes-cbc-essiv:sha256
config/chroot_local-includes/etc/fstab:
Definiert den Mountpunkt für die verschlüsselte Partition. Wird beim Booten automatisch gemountet. Der "exec"-Parameter scheint notwendig zu sein, da sonst die Scripte (wie ./run.sh) nicht ausgeführt werden können.
unionfs / unionfs rw 0 0
tmpfs /tmp tmpfs nosuid,nodev 0 0
/dev/mapper/freenetEnc /mnt/freenet ext2 defaults,user,exec 0 0
Einrichten der verschlüsselten Partition
Die Verschlüsselungsskripte müssen prinzipiell nur maximal 1x genutzt werden, wenn nicht die manuelle Eingabe sogar bevorzugt wird.
Zuerst wird die verschlüsselte Partition erstellt und sowohl der Verschlüsselungsalgorithmus festgelegt als auch nach dem gewünschten Entschlüsselungspasswort gefragt.
/usr/local/sbin/part_create.sh

Danach wird die verschlüsselte Partition durch Eingabe des Passworts geöffnet.
/usr/local/sbin/crypt_open.sh

Nun muss die Partition einmalig formatiert werden.
/usr/local/sbin/crypt_format.sh

Nach dem Mounten der Partition ist diese frei verwendbar.
/usr/local/sbin/crypt_mount.sh

Wird sie nicht mehr gebraucht, wird sie ungemountet
/usr/local/sbin/crypt_umount.sh

und geschlossen
/usr/local/sbin/crypt_close.sh

Öffnen und schließen funktioniert alternativ mit
/etc/init.d/cryptdisks start

und
/etc/init.d/cryptdisks stop

Mounten und unmouten funktioniert alternativ mit
mount /mnt/freenet

und
umount /mnt/freenet

Ab nun wird die verschlüsselte Partition beim Booten automatisch geöffnet und gemountet und beim Shutdown automatisch ungemountet und geschlossen.


Deletions:
Hast du kein bestehendes Build-Environments stehen mehrere Möglichkeiten zur Verfügung, dieses rasch zu erzeugen. Eins vorweg, die Erzeugung über Qemu ist klarerweise bedeutend langsamer als über ein Chroot-Environment oder überhaupt ein normales Host-System.
Downloade ein Image einer aktuellen Debian-Installations-CD, bspw. die Network Install (Beschreibung, direkter Downloadlink).
qemu-img create -fmt raw debian_env.img 5G

Das Image sollte mindestens eine Größe von 3GB haben, weil ansonsten zu wenig Platz zur Erzeugung der LiveCD vorhanden ist. Die Option "-fmt raw" lässt das Image langsam wachsen, indem Speicherplatz erst belegt wird sobald Daten geschrieben werden (nur bei bestimmten Dateisystem unterstützt, zB ext3). Am Host-System muss eine Netzwerkverbindung zu einem Debian-Server bestehen. Die Installation wird gestartet mit:
"-boot d" legt das das cdrom-Image als Bootdevice fest. "-net nic" und "-net user" konfigurieren die Netzwerkverbindung zwischen Host-System und simulierter Umgebung (hier die Installations-CD). Das Debian-Grundsystem wird jetzt wie üblich installiert. Danach bootet Debian mit:
Optional für Dateiaustausch durch Samba:
qemu -net nic -net user -hda debian_env.img -asdasdafs

Unter bspw. GNU/Linux kann alternativ das Image lesend und schreibend gemountet werden:

Erstellung des Images

Die LiveCD kann beliebig zusammengestellt werden. Für einen minimalen Betrieb reicht Java. Bei Verwendung von zB Frost oder Thaw ist weiters die X11-Oberfläche erforderlich. In diesem HowTo wurde Xfce4 als kleine aber doch nicht zu spartanische Oberfläche gewählt. Zudem ist es eine bereits vorhandene Zusammenstellung. Sollen die Daten auch auf anderen PCs erreichbar sein, ist der Zugriff entweder über fproxy möglich oder durch Einrichtung eines Samba- oder OpenSSH-Servers. Sicherheitsprogramme wie clamd, checksecurity, etc. sind weitere potentielle Serverfunktionen.
Erstelle ein Verzeichnis, in dem das Image erzeugt werden soll, wechsle in dieses und lasse die Konfigurationsdateien erzeugen.
Nun steht die Standardkonfiguration zur Modifikation zur Verfügung. Es sind im Vergleich zur Auswahl "xfce" nur geringfügige Änderungen notwendig.
beim Bootvorgang:
- wählen der Ländereinstellung (locale)
LIVE_BOOTAPPEND="locale=de acpi=off xdebconf"

Inkludierung des Installers, falls gewünscht:
LIVE_DEBIAN_INSTALLER="enabled"

Freischaltung der contrib- und non-free-Zweige:
LIVE_SECTIONS="main contrib non-free"

LIVE_PACKAGES_LISTS="freenet"

chroot_local-hooks
Die Java-Installation benötigt die Zustimmung zur Lizenz. Da das nur interaktiv geschehen kann, wird Java nicht über die Paketliste "freenet" sondern über einen Hook im späteren Verlauf der Installation installiert. Das Originalskript findet sich in /usr/share/live-helper/examples/hooks/:
chroot_local-hooks/sun-java5.sh
sun-java5-fonts sun-java5-jdk sun-java5-jre
chroot_local-includes
Treten Probleme mit den automatisch vorkonfigurierten X11/Xorg-Display-Einstellungen auf, kann der automatische Start von gdm unterbunden werden, um eine manuelle Konfiguration vor dem Start von Xorg vorzunehmen. Dazu wird die Datei default_display_manager während der Installation durch eine modifizierte Version ersetzt (das System sucht in dieser Datei nach dem zu verwendenden Displaymanager):
chroot_local-includes/etc/X11/default_display_manager
In chroot_local_includes/files/ können spezifische Dateien hinterlegt, zB Freenet-Offline-Installer. Bei Zensur, bei der möglicherweise freenetproject.org nicht erreicht wird, dient sich an, den Offline-Installer zu inkludieren. Die Installation erfolgt wie gewohnt.
Einfache Installations-Skripte wären:
chroot_local-includes/files/freenet/freenet_install_offline.sh
chroot_local-includes/files/freenet/freenet_install_online.sh
Die Auswahl der zu installierenden Pakete wird in einer Package List des live-helpers definiert.
Die Installation des Basissystem erfolgt über die Eingabe von "install" am Bootprompt. Weitere Optionen sind über die Funktionstasten abrufbar.
Die Freenet-Installation erfolgt wie auf der Freenet-Homepage beschrieben. Danach wird die LiveCD nicht mehr benötigt.
Das Basissystem bildet die LiveCD. Ist genug RAM vorhanden, kann der LiveCD-Inhalt sogar ins RAM kopiert werden. Dazu wird beim Bootvorgang dem Kernel der Parameter "toram" übergeben.




Edited on 2007-08-14 01:14:44 by DeUser [Building a freenet live-cd/installation-cd based on debian live-cd]

No differences.


Edited on 2007-08-14 01:13:19 by DeUser [small edit]

Additions:
Die Installation des Basissystem erfolgt über die Eingabe von "install" am Bootprompt. Weitere Optionen sind über die Funktionstasten abrufbar.
Die Freenet-Installation erfolgt wie auf der Freenet-Homepage beschrieben. Danach wird die LiveCD nicht mehr benötigt.


Deletions:
gerhard@debian:/mnt/lin/freenet-live/misc/includes/config$ cat /usr/share/live-helper/lists/freenet
Die Installation erfolgt wie auf der Freenet-Homepage beschrieben. Danach wird die LiveCD nicht mehr benötigt.




Oldest known version of this page was edited on 2007-08-14 01:00:30 by DeUser [Building a freenet live-cd/installation-cd based on debian live-cd]
Page view:

Freenet Debian LiveCD


Einrichten des Build-Environments


Hast du kein bestehendes Build-Environments stehen mehrere Möglichkeiten zur Verfügung, dieses rasch zu erzeugen. Eins vorweg, die Erzeugung über Qemu ist klarerweise bedeutend langsamer als über ein Chroot-Environment oder überhaupt ein normales Host-System.

Qemu

Downloade ein Image einer aktuellen Debian-Installations-CD, bspw. die Network Install (Beschreibung, direkter Downloadlink).

Installiere Qemu. Erstelle ein Image, das als Installationsziel verwendet wird:
qemu-img create -fmt raw debian_env.img 5G


Das Image sollte mindestens eine Größe von 3GB haben, weil ansonsten zu wenig Platz zur Erzeugung der LiveCD vorhanden ist. Die Option "-fmt raw" lässt das Image langsam wachsen, indem Speicherplatz erst belegt wird sobald Daten geschrieben werden (nur bei bestimmten Dateisystem unterstützt, zB ext3). Am Host-System muss eine Netzwerkverbindung zu einem Debian-Server bestehen. Die Installation wird gestartet mit:
qemu -net nic -net user -cdrom name_des_debian_installations_images -hda debian_env.img -boot d


"-boot d" legt das das cdrom-Image als Bootdevice fest. "-net nic" und "-net user" konfigurieren die Netzwerkverbindung zwischen Host-System und simulierter Umgebung (hier die Installations-CD). Das Debian-Grundsystem wird jetzt wie üblich installiert. Danach bootet Debian mit:
qemu -net nic -net user -hda debian_env.img


Optional für Dateiaustausch durch Samba:
qemu -net nic -net user -hda debian_env.img -asdasdafs

Unter bspw. GNU/Linux kann alternativ das Image lesend und schreibend gemountet werden:
mkdir /mnt/debian_img
mount -o loop,offset=32256 debian_env.img /mnt/debian_img

Chroot Environment

folgt noch

Installation notwendiger Pakete

Die LiveCD basiert auf dem Debian Live Project. Bevor wir uns an die Erstellung des Images machen, müssen die Pakete cdebootstrap und live-helper gemäß Anleitung installiert werden.


Erstellung des Images


Die LiveCD kann beliebig zusammengestellt werden. Für einen minimalen Betrieb reicht Java. Bei Verwendung von zB Frost oder Thaw ist weiters die X11-Oberfläche erforderlich. In diesem HowTo wurde Xfce4 als kleine aber doch nicht zu spartanische Oberfläche gewählt. Zudem ist es eine bereits vorhandene Zusammenstellung. Sollen die Daten auch auf anderen PCs erreichbar sein, ist der Zugriff entweder über fproxy möglich oder durch Einrichtung eines Samba- oder OpenSSH-Servers. Sicherheitsprogramme wie clamd, checksecurity, etc. sind weitere potentielle Serverfunktionen.

Konfiguration der Build-Einstellungen

Erstelle ein Verzeichnis, in dem das Image erzeugt werden soll, wechsle in dieses und lasse die Konfigurationsdateien erzeugen.

mkdir /mnt/debian_builddir
cd /mnt/debian_builddir
lh_config


Nun steht die Standardkonfiguration zur Modifikation zur Verfügung. Es sind im Vergleich zur Auswahl "xfce" nur geringfügige Änderungen notwendig.

config/binary
beim Bootvorgang:
- wählen der Ländereinstellung (locale)
- Deaktivierung von ACPI bei Problemen mit Laptops (acpi=off)
- Konfiguration von X (xdebconf)
LIVE_BOOTAPPEND="locale=de acpi=off xdebconf"


Inkludierung des Installers, falls gewünscht:
LIVE_DEBIAN_INSTALLER="enabled"


config/bootstrap
Freischaltung der contrib- und non-free-Zweige:
LIVE_SECTIONS="main contrib non-free"


config/chroot
Auswahl der Paketliste:
LIVE_PACKAGES_LISTS="freenet"


chroot_local-hooks
Die Java-Installation benötigt die Zustimmung zur Lizenz. Da das nur interaktiv geschehen kann, wird Java nicht über die Paketliste "freenet" sondern über einen Hook im späteren Verlauf der Installation installiert. Das Originalskript findet sich in /usr/share/live-helper/examples/hooks/:
chroot_local-hooks/sun-java5.sh
#!/bin/sh
DEBIAN_FRONTEND="dialog" apt-get install --yes sun-java5-bin sun-java5-demo \
	    sun-java5-fonts sun-java5-jdk sun-java5-jre


chroot_local-includes
Treten Probleme mit den automatisch vorkonfigurierten X11/Xorg-Display-Einstellungen auf, kann der automatische Start von gdm unterbunden werden, um eine manuelle Konfiguration vor dem Start von Xorg vorzunehmen. Dazu wird die Datei default_display_manager während der Installation durch eine modifizierte Version ersetzt (das System sucht in dieser Datei nach dem zu verwendenden Displaymanager):
chroot_local-includes/etc/X11/default_display_manager
#/usr/bin/gdm


In chroot_local_includes/files/ können spezifische Dateien hinterlegt, zB Freenet-Offline-Installer. Bei Zensur, bei der möglicherweise freenetproject.org nicht erreicht wird, dient sich an, den Offline-Installer zu inkludieren. Die Installation erfolgt wie gewohnt.

Einfache Installations-Skripte wären:

- Offline-Installer:
chroot_local-includes/files/freenet/freenet_install_offline.sh
#!/bin/sh

java -jar installer_offline.jar


- Online-Installer:
chroot_local-includes/files/freenet/freenet_install_online.sh
#!/bin/sh

wget http://downloads.freenetproject.org/alpha/installer/freenet07.tar.gz
cat freenet07.tar.gz | gzip -d | tar xv
cd freenet
./bin/1run.sh


/usr/share/live-helper/lists/freenet
Die Auswahl der zu installierenden Pakete wird in einer Package List des live-helpers definiert.

Eine Auswahl mit xfce, ssh, iceweasel/firefox, wlan und diverser kleiner Programme sähe folgendermaßen aus:
## LH: Xfce
#<include> xfce

mc xterm openssh-client openssh-server pptp-linux iceweasel
linux-wlan-ng linux-wlan-ng-source linux-wlan-ng-firmware
gerhard@debian:/mnt/lin/freenet-live/misc/includes/config$ cat /usr/share/live-helper/lists/freenet 



Bearbeitung des Images


folgt noch


Freenet-Node Installation


Es gibt mindestens 2 Varianten, erstens die Festplatteninstallation der LiveCD und zweitens die Nutzung als LiveCD.

Festplatteninstallation
Die Installation erfolgt wie auf der Freenet-Homepage beschrieben. Danach wird die LiveCD nicht mehr benötigt.

Nutzung als LiveCD
Das Basissystem bildet die LiveCD. Ist genug RAM vorhanden, kann der LiveCD-Inhalt sogar ins RAM kopiert werden. Dazu wird beim Bootvorgang dem Kernel der Parameter "toram" übergeben.
Ist ein beständiger Node gewünscht, der auch einen Neustart oder Abschaltvorgang übersteht, muss eine Partition reserviert werden. Partitioniere hierzu die Festplatte, mounte die gewünschte Partition und wähle als Freenet-Installationsverzeichnis das Mountverzeichnis:
cfdisk /dev/hdx #hdx=hda, hdb, ...
mkdir /mnt/freenet
mount -t filesystem /dev/hdxy /mnt/freenet #zB: filesystem=ext3, hdxy=hda1


Verschlüsselte Partition
folgt noch
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.2
Page was generated in 0.1763 seconds