Stage4
Aus Gentoo Linux Wiki
| Installationsmethoden • LiveCDs • Kernel & Hardware • Laptops & Notebooks • Portage • System • Netzwerke & Services • X • Software • Anderes • alphabetischer HOWTO Index |
"Eine Stage4? - Was bitte herrgottnochmal ist das?" - So, oder anders könnte die Frage zu dieser Überschrift lauten. Eventuell aber auch ganz anders ;)
Als "eigenes Stage4" bezeichnet man die Anfertigung eines Archives, welches all jene Programme bereits enthält, die man selbst auch installiert hat.
Jeder der bereits eine Stage1-Installation hintersich hat, aber auch in den Genuss der Stage3-Installation kam, kann sich denken, dass ein Stage4 nun noch mehr Komfort bietet.
Inhaltsverzeichnis |
[Bearbeiten] Stage4 Forum Thread / Wiki
Ein komplettes Howto lässt sich hier finden. Das Wiki hier
[Bearbeiten] Erstellung des Stages via tar
Die Erstellung des Stage4 ist fast nichts anderes als die Anfertigung eines /-Archives. (Man kann auch einfach Backup dazu sagen *g*)
Tipp: Unmounte alle Net-mounts (nfs,samba,ncp usw) Ein Beispiel:
mount /boot umount /mnt/cdrom # und andere!
tar --no-ignore-case -cvjpf stage4-datum.tbz2 / --exclude=/dev --exclude=/sys --exclude=/proc --exclude=/var/tmp --exclude=/var/log --exclude=/usr/portage/distfiles --exclude=/usr/portage/packages
/dev und /proc mitzupacken wäre Platzverschwendung. Ebenfalls benötige ich meine distfiles nicht - diese lagern sowieso im Internet. Eventuelle Pakete kann ich bei Bedarf neuerstellen. Wer mag, kann den /usr/portage Baum auch via nfs anderen Rechnern zur Verfügung stellen. Dann obige excludes abändern, dass /usr/portage nicht mitgepackt wird.
Vorsicht: der Text nach --exclude= wird als Muster gewertet. Wenn also der führende Schrägstrich fehlt, könnte der Text auch auf Pfade passen, wo er nicht passen soll!
Je nach Groesse und Anzahl der einzupackenden Dateien zieht sich dieser Prozess nun hin - bis zu einigen Stunden.
Falls das Archiv auf einem FAT Dateisystem gespeichert werden soll, ist die maximale Dateigroesse auf 2GB respektive 4GB beschraenkt. Da vermutlich mehrere Gigabyte zusammenkommen empfiehlt es sich, das File mit den Optionen -M und -L aufzuteilen oder die Daten auch durch split pipen.tar cpvf - / | split -b 1000m - stage4-`date`.tar"
Also bei mir verursacht der Punkt hinter dem / das die --exclude Optionen nicht beachtet werden. Ohne den Punkt geht es bei mir aber.
- Bei mir das gleiche... ausserdem musste ich noch /sys/modules ausklammern, da sich die Werte dort waehrend des kopieren andauernd aenderten. Ich denke nicht das der Kram da wichtig ist. Wer das ganze noch etwas kleiner machen moechte sollte /opt ausschliessen, da jedenfalls bei mir da nur kram drin ist den ich sowieso als binary runtergeladen habe, ist also sehr schnell wieder zu installieren.
Ansonsten kann man auch --exclude=/mnt/[Mountpoint] noch hinzufügen falls man nicht alle mounts umounten kann oder will (z.B. zur Sicherung des Stage4 auf einer externen Festplatte oder einem Server). Alternativ gibt es auch noch die Tar-Option --only-file-system, die den Wechsel auf ein anderes Dateisystem verhindert (dann wird auch ein eingebundenes /boot nicht mitgesichert).
Falls man mit dem erzeugten Stage4 nur andere Rechner aufsetzen möchte würde vielleicht ein --exclude=/home/[Username] noch Sinn machen.
[Bearbeiten] Stage4 Installation
Es wird wie üblich, z.b. von einer Livecd gebootet und die Partitionen werden angelegt.
Das Entpacken läuft ca so ab:
mount /dev/hda3 /mnt/gentoo mkdir /mnt/gentoo/boot && mkdir /mnt/gentoo/proc && mkdir /mnt/gentoo/dev mount /dev/hda2 /mnt/gentoo/boot tar -xvjpf stage4-datum.tbz2 -C /mnt/gentoo/ mount -t proc none /mnt/gentoo/proc mount -o bind /dev /mnt/gentoo/dev chroot /mnt/gentoo env-update && source /etc/profile
Wer den Baum unter /usr/portage nicht gesichert hat, sollte den (vor einem chroot) noch unter /mnt/gentoo/usr/portage einbinden. Nun wird der bootmanager reinstalliert, grub-install oder /sbin/lilo
Fertig!
- Falls nach dem reboot eine Kernel Panic mit der Meldung "Unable to open initial console" kommt, nochmal -ohne etwas an /mnt/gentoo/dev zu mounten- 'reinchrooten und dies ausführen:
cd /dev MAKEDEV generic
- Ausserdem hatte ich das Problem, dass die Ordner /sys und /var/log fehlten (Meldung "No /sys to mount sysfs" und verschiedene logging Fehler), welche einfach von Hand angelegt werden können.
[Bearbeiten] Erstellung des Stages via dd
Mit dd liesse sich ein komplettes Abbild der Festplatte erstellen, und, wie hier, zum Beispiel mit gzip packen, und es dann mit split in 4200 MB Teile splitten (um die Teile dann auf eine DVD zu brennen). Wer fuers schnellere Packen die Festplatte vorher noch mit Nullen zuschreiben will, macht das dann mit dem Befehl
dd if=/dev/zero of=/nullen
und loescht den genullten Platz mit
rm /nullen
Den eigentlichen Prozess des Backupen, Packens und splitten startet man mit
dd if=/dev/[device] | gzip -9 | split -b 4200m - /pfad/zum/backupname.gz
Zurueckspielen laesst sich das ganze dann per
cat /pfad/zum/backup.gz* | gzip -dc | dd of=/dev/[device]
[Bearbeiten] Automatisiertes Stage4 mit Dualer Sicherung
Die Idee hinter meinem Verfahren war ganz einfach die das ich verschiedene Backup Strukturen habe um ein Backup unterschiedlich zu handhaben ohne gleich ein komplettes System rüberzuspielen o.ä, und es sollte natürlich effektiv sein, das Stage4 auf gentoo wiki hat super Ansätze, war mir aber zu simpel und zu starr, also habe ich mir auf dieser Basis eine Mehrfachsicherung ausgedacht die man effektiver handhaben kann.
Da ich die Backup Files so von Cronjob nicht löschen lasse, sammelt sich da mit jedem Tag eine neue File und so hab ich eine große Auswahl (passiert ja leider sehr oft das man üble Fehler erst viel zu spät findet, also wollte ich auch ein Backup was sich über eine lange Zeit zurückverfolgen lässt).
Meinen Portage Tree hab ich ganz simpel per Symlink auf die Extra Partition geleitet, so brauche ich den nicht noch extra sichern bei einem Backup und kann direkt von dort die Pakete mit den Versionen beziehen wie sie beim Stand des Systemzerfalls schon drauf waren, so kann ich also auch direkt die bis dahin verwendeten Configs direkt rüberkopieren (sofern das System damit nicht geschreddert wurde ;) )
In meinem Falle lasse ich alles nach:
/serverhdd/backup/portage (hier liegen die ganzen Config Files Extra von /etc/portage & das Worldfile) /serverhdd/backup/portage/tree (hierhin ist der Portage-Tree ausgelagert) /serverhdd/backup/system (hier liegt sowohl jeweils ein .tar vom ganzen /etc Baum und Co, und nochmal ein File mit einer Sicherung vom ganzen System)
Wieoft ein neues File mit Datum und Co erstellt wird hängt vom Cronjob ab.
So schaut der Cronjob aus:
######## File Backup & misc ######## 0 0 1 1-12 * sh /serverhdd/backup/system.sh 1 12 * * * sh /serverhdd/backup/config.sh 35 18 * * * sh /serverhdd/backup/portage.sh
Ich lasse die files aus /etc/portage und das Worldfile täglich sichern, genauso wie das komplette Config Backup.
Ein volles System Backup lasse ich 1mal im Monat machen, jede File ist mit dem Datum an dem es erstellt wurde im Filename bezeichnet so hat man direkt einen guten Überblick z.b sieht die Semantik der Files so aus:
/serverhdd/backup/portage/etc-portage-2007-07-01.tbz2 /serverhdd/backup/portage/world-2007-07-01.tbz2 /serverhdd/backup/system/config-backup-2007-07-01.tbz2 /serverhdd/backup/system/System-backup-2007-07-01.tbz2
Wer natürlich nicht soviel Platz hat kann auch das komplette System Backup weglassen, dann sind das keine 300MB Dauersicherung wie man da macht.
Durch die einzelnen Sicherungen habe ich einen großen Handlungsspielraum WAS ich genau wieder herstellen will, zb.b das komplette System? Oder dorch nur das Worldfile? oder nur die Configs?
Als ich damals den Stage4 Artikel auf Gentoo Wiki gelesen habe, war er mir zu eingeschränkt in seinem Spielraum und nicht effektiv genug. So habe ich das nun gelöst. :)
Dazu eben der dahin ausgelagerte Portage Tree der dafür sorgt das das neue System damit installiert wird und so auf dem selben Versionsstand ist wie das System von dem die Backups kommen (sofern es das letzte Backup ist was man nutzt).
Auf dieser Basis kann man natürlich noch zig Möglichkeiten einbauen wie man sowas gerne haben würde ;)
Hier nun noch die Bash Scripte die mit dem oben beschriebenem Cronjob aufgerufen werden. Beachtet bitte das die ganzen --exclude lines alle hintereinander stehen müssen. Sie stehen hier nur alle untereinander der besseren Formatierung wegen.
config.sh
#!/bin/sh # Aktuelles Datum fuer Dateinamen setzen DATUM=`/bin/date '+%Y-%m-%d'` /bin/tar -cvjpf /serverhdd/backup/system/config-backup-$DATUM.tbz2 / --exclude=bin --exclude=dev --exclude=lost+found --exclude=home/sourcecode/.aMule/Temp --exclude=opt --exclude=root --exclude=serverhdd --exclude=tmp --exclude=var --exclude=lib --exclude=mnt --exclude=proc --exclude=sbin --exclude=sys --exclude=usr
portage.sh
#!/bin/sh # Aktuelles Datum fuer Dateinamen setzen DATUM=`/bin/date '+%Y-%m-%d'` /bin/tar -cvjpf /serverhdd/backup/portage/etc-portage-$DATUM.tbz2 /etc/portage #copy worldfile /bin/cp /var/lib/portage/world /serverhdd/backup/portage/world-$DATUM
system.sh
#!/bin/sh # Aktuelles Datum & Zeit fuer Dateinamen setzen DATUM=`/bin/date '+%Y-%m-%d'` /bin/tar -cvjpf /serverhdd/backup/system/system-backup-$DATUM.tbz2 / --exclude=dev --exclude=sys --exclude=proc --exclude=var/tmp --exclude=usr/portage/distfiles --exclude=usr/portage/packages --exclude=serverhdd
