Stage4

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der HOWTO Sammlung.
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
'Persönliche Werkzeuge
Andere Sprachen