Hier mal eine kurze Beschreibung zu einer Skriptsammlung wie man in wenigen Schritten ein Gentoo-Live-System erstellen und pflegen kann. Das Live-System kann sowohl von CD/DVD als auch von USB oder Festplatten genutzt werden. Wer also schon immer mal ein eigenes System bauen wollte, hier die Anleitung...
WICHTIG:
Die Nutzung der Scripte geschieht auf eigene Gefahr. Ich übernehme keine Haftung bei Datenverlust.
### Schritt 1:
bash create.stage4.sh [ARCH] [NAME] [PROFILE]
ARCH: i686 oder amd64
NAME: beliebiger Name (bitte nie ein Unterstrich -->_<-- verwenden)
PROFILE: Datei die das Profile enthält; alles was installiert werden soll
Ergebnis
./source/gentoo_stage4_ARCH_NAME/
Beispiel:
bash create.stage4.sh amd64 LiveCD
--> erstellt ein System mit Programmen die in ./pathes/gentoo_stage4_LiveCD/etc/stage4_build_profile
gelistet sind. Zu finden ist das System unter ./source/gentoo_stage4_LiveCD/. Die Konfigdateien,
mit dem das System eingerichtet wird, befinden sich unter ./pathes/gentoo_stage4_LiveCD/.
bash create.stage4.sh amd64 LiveCD patches/profile.gnome.base
--> erstellt ein System mit Xorg und Gnome, das unter ./source/gentoo_stage4_LiveCD/ zu finden ist
und später mit den Konfigdateien unter ./pathes/gentoo_stage4_LiveCD/ eingerichtet wird.
Wie es der Name schon andeutet installiert dieses Skript das Gentoo System. Die Vorgehensweise ist ähnlich wie die in der Gentoo-Dokumentation.
- Verzeichnis anlegen ./source/gentoo_stage4_NAME entpacken
- Uhrzeit überprüfen
- stagefile überprüfen und entpacken
- gewisse Ordner (proc, dev, portage, overlays) mounten
- in chroot alle Programme installieren die man braucht.
--> wird durch ein Installationsprofile angegeben
Die make.conf wird als einzigste Datei in dem LiveSystem angepasst. Alle anderen Dateien werden später von der initrd aus gepatcht. Die Patches bzw. alle Konfigurationen befinden sich im gleichnamigen Ordener ./patches/gentoo_stage4_NAME/. Dort sollten alle Konfigurationen abgelegt werden die für dieses System benutzt werden sollen. Auch die für die Installation relevanten. Installiert wird, im default Profile, nur Xorg und Gnome sowie ein paar andere Programm für Portage und Portato.
Wichtig ist in diesem Schritt, dass das System unangetastet bleibt. Es wird keine Dateien im System geändert. Alles, bis auf die make.conf ist Original.
### Schritt 2:
In diesem Schritt wird der Kernel kompiliert. Das geht noch von Hand da ich nicht weiß wie ich genkernel beibringen kann gewisse Module in den Kernel zu bauen.
Also...
- bash go.chroot.sh source/gentoo_stage4_NAME/
- cd /usr/src/linux
- genkernel all --menuconfig --splash=natural_gentoo
--> am besten so wie in kernel.txt beschrieben
- exit
!!! Der Kernel wird auch schon bei der Installation gebaut, da er von diversen Programmen benötigt wird... !!!
### Schritt 3:
bash create.initramfs.sh sources/gentoo_stage4_NAME/
Ergebnis
./target/boot/kernel_NAME
./target/boot/initrd_NAME
Das ist das Herzstück der LiveCD-Scripte. Das Script baut die initrd für das in Schritt 1 und 2 installierte System. Das heißt es nimmt den Kernel, klaut sich die Module aus der mit genkernel erstellten initrd und baut sich eine eigene initrd. Außerdem wird die 'linuxrc' an das zu bootende System angepasst.
Herzstück ist wie gesagt die linuxrc. Es enthält eine rudimentäre Hardwareerkennung, sucht nach dem zu bootenden Image 'boot/images/gentoo_stage4_NAME' auf allen Partitionen, kopiert die Konfigdateien und bootet anschließend das System. Das alles wird mit Unionfs und tmpfs gemacht sodass am Schluss alles scheinbar Schreibbar ist.
### Schritt 4:
bash create.patches.sh patches/gentoo_stage4_NAME/
Ergebnis
./target/boot/patches_NAME
./target/boot/scripte_NAME
Wie schon erwähnt wird das installierte System nicht konfiguriert. Dies geschieht separat unterhalb von patches/gentoo_stage4_NAME/. Dieses Skript erstellt ein Image von den ganzen Konfigdateien, welches beim booten von der intrd über das System kopiert wird.
Ab jetzt befinden sich alle benötigten Dateien unterhalb von ./target/boot/. Wenn man keine LiveCD/DVD haben will, sondern das System von USB oder der Festplatte booten möchte muss nur noch der Bootloader konfiguriert und alles auf das entsprechende Medium geschrieben werden. Das geht aber NUR von Hand...
Hier aber ein Beispiel für /dev/hda1 und dem System NAME
- mount /dev/hda1 /mnt/gentoo
- mkdir /mnt/gentoo/boot
- cp -r ./target/boot/grub /mnt/boot/
- cp ./target/boot/*_NAME /mnt/boot
- cp ./target/boot/image/*_NAME /mnt/boot/image/
- cp ./target/boot/image/portage.img /mnt/boot/image/
- grub
> root(hd0,0)
> setup(hd0)
> quit
Dann nur noch die menu.lst anpassen. Ein Eintrag könnte so aussehen
default 0
timeout 10
splashimage=(cd)/boot/grub/splash.xpm.gz
title Gentoo Linux 64bit Live System stage4
root (hd0,0)
kernel /boot/kernel_NAME root=/dev/ram0 init=linuxrc vga=792 splash=silent,theme:natural_gentoo console=tty1 quit
initrd /boot/initrd_NAME
### Schritt 5:
bash create.livecd.sh [NAME]
NAME: nur für dieses System eine LiveCD/DVD erstellt
--> optionaler Parameter
Ergebnis
./LiveCD.iso
Das ist auch schon der letzte Schritt den man aber nur benötigt, wenn man wirklich eine CD/DVD haben will. Die Optionale Angabe sorgt dafür, dass nur dieses eine System in die LiveCD/DVD gepackt wird.
Anzumerken ist, dass die menu.lst von grub von Hand angepasst werden muss. Zur Vereinfachung existiert aber schon eine, bei der nur noch die Erweiterung von Kernel und Initrd angepasst werden muss.
Beispiel:
Das installiere System trägt den Namen LiveCD und wurde demnach in ./source/gentoo_stage4_LiveCD/ installiert. Dann sieht der Eintrag in der menu.lst wie folgt aus.
title Gentoo Linux 64bit stage4 --> LiveCD
root (cd)
kernel /boot/kernel_LiveCD root=/dev/ram0 init=linuxrc vga=792 splash=silent,theme:natural_gentoo console=tty1 quit
initrd /boot/initrd_LiveCD
### Weiter Skripte
bash create.backup.sh
Ergebnis
./GentooLiveBuildSystem.Datum.tar.bz2
Macht ein Backup aller benötigten Dateien. Es werden keine stages, Systeme und Images archiviert.
bash create.portage.sh [--with-update]
--with-update: führt vorher noch ein 'emerge --sync' und 'layman -s' aus
--> optionaler Parameter
Ergebnis
./target/boot/portage.img
Dieses Script aktualisiert den Portagebaum und die Overlays und erstellt dann eine ISO-Image für die LiveCD System.
bash stages/fetch.sh
Ergebnis
./stages/stage3-amd64-20090903.tar.bz2
./stages/stage3-amd64-20090903.tar.bz2.CONTENTS
./stages/stage3-amd64-20090903.tar.bz2.DIGESTS
./stages/stage3-amd64-20090903.tar.bz2.DIGESTS.asc
./stages/stage3-i486-20090901.tar.bz2
./stages/stage3-i486-20090901.tar.bz2.CONTENTS
./stages/stage3-i486-20090901.tar.bz2.DIGESTS
./stages/stage3-i486-20090901.tar.bz2.DIGESTS.asc
./stages/stage3-i686-20090901.tar.bz2
./stages/stage3-i686-20090901.tar.bz2.CONTENTS
./stages/stage3-i686-20090901.tar.bz2.DIGESTS
./stages/stage3-i686-20090901.tar.bz2.DIGESTS.asc
./stages/timestamp
Aktualisiert die Stages von gentoo...
--- ENDE ---
Edit 20100105:
Dank fester Variablen laufen die Scripte nicht mehr sauber durch. Es muss u.a. das Profile auf 10.0/desktop geändert werden und der Link zu UnionFS muss an den Kernel angepasst werden. Außerdem habe ich noch einen Bug in der InitRamFS. Dort sind die Rechte für die Datei 'linuxrc' falsch. Sie müssen im entsprechenden Ordner einmalig auf 777 gesetzt werden.
Wenn sonst noch einer was findet oder wissen will, nur her damit.
EDIT 20100109:
Habe mal eine aktuelle Version der Scripte hochgeladen. Dort ist das aktuelle Profile gesetzt, der Bug beseitigt und UnionFS wird automatisch installiert. Außerdem liegen die Kernel-Config-Dateien bei, sodass ein manuelles bearbeiten des Kernel wegfällt; war Schritt 2
EDIT: 20100619
Habe die Benennung der Gentoo-Umgebung abgeändert; jetz 'gentoo_stage4_ARCH_NAME'.
Aktuell sind ist auch die Verwendung der KDE/Gnome Profile. Getestet ist aber nur Gnome
EDIT: 20110321
Dateianhänge gehen ja wieder und daher mal eine Aktuelle Version. UnionFS wurde durch aufs2 ersetzt. Jetzt läuft X stabil. Neu ist auch die Angabe der UID und GID im bootloader sowie die Angabe einer Partition für das Home-Verzeichnis. Damit bleiben die Einstellungen es Benutzers erhalten wenn man einen USB-Stick verwendet.
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »_Dirk_« (21.03.2011, 21:45)