Sowohl bei SPARC- als auch bei x86-Systemen kommt die neue Art des Bootens mit Boot-Archiv zum Einsatz. Dabei handelt es sich um ein Dateisystemabbild, in dem sich die zum Booten benötigten Dateien befinden. Beim Booten aus einem ZFS-Root-Dateisystem werden die Pfadnamen des Archivs und der Kernel-Datei in dem für das Booten ausgewählten Root-Dateisystem aufgelöst.
Wenn das System für die Installation gebootet wird, wird während des gesamten Installationsvorgangs ein RAM-Datenträger für das Root-Dateisystem verwendet.
Das Booten aus einem ZFS-Dateisystem unterscheidet sich vom Booten aus einem UFS-Dateisystem dadurch, dass ein Gerätebezeichner bei ZFS kein einzelnes Root-Dateisystem sondern einen Speicher-Pool kennzeichnet. Ein Speicher-Pool kann mehrere boot-fähige Datasets oder ZFS-Root-Dateisysteme enthalten. Beim Booten aus ZFS müssen Sie ein Boot-Gerät und ein Root-Dateisystem innerhalb des Pools angeben, das durch das Boot-Gerät identifiziert ist.
Standardmäßig ist das zum Booten ausgewählte Dataset das mit der Eigenschaft bootfs des Pools bezeichnete Dataset. Diese Standardauswahl kann durch Angabe eines alternativen boot-fähigen Datasets im Befehl boot -Z außer Kraft gesetzt werden.
Bei der Installation des Systems haben Sie die Möglichkeit, einen ZFS-Root-Pool mit Datenspiegelung zu erstellen oder eine Festplatte einzubinden, um nach der Installation ein solches zu erstellen. Weitere Informationen finden Sie unter:
Beachten Sie die folgenden bekannten Probleme im Zusammenhang mit gespiegelten ZFS-Root-Pools:
CR 6668666 – Um das Booten auf den anderen Festplatten in der Datenspiegelungskonfiguration zu ermöglichen, müssen Sie die Boot-Informationen auf den zusätzlich eingebundenen Datenträgern mithilfe des Befehls installboot oder installgrub installieren. Dieser Schritt ist unnötig, wenn Sie zur Erstellung des gespiegelten ZFS-Root-Pools die Erstinstallationsmethode verwenden. Wenn beispielsweise der Datenträger c0t1d0s0 als zweiter Datenträger zur Datenspiegelungskonfiguration hinzugefügt wurde, lautet der Befehl installboot bzw. installgrub wie folgt:
SPARC:
sparc# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c0t1d0s0 |
x86:
x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t1d0s0 |
Es kann von verschiedenen Speichergeräten in einem gespiegelten ZFS-Root-Pool gebootet werden. Je nach der Hardwarekonfiguration kann es erforderlich sein, eine Aktualisierung von PROM oder BIOS vorzunehmen, um ein anderes Boot-Gerät angeben zu können.
So ist es in diesem Pool beispielsweise möglich, vom Datenträger (c1t0d0s0 oder c1t1d0s0) zu booten.
# zpool status pool: rpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0s0 ONLINE 0 0 0 c1t1d0s0 ONLINE 0 0 0 |
SPARC: Geben Sie an der Eingabeaufforderung ok die alternative Festplatte ein.
ok boot /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0 |
Rufen Sie nach dem Neustart des Systems eine Bestätigung des aktiven Boot-Geräts ab. Beispiel:
SPARC# prtconf -vp | grep bootpath bootpath: '/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0,0:a' |
x86: Wählen Sie aus dem entsprechenden BIOS-Menü eine alternative Festplatte im gespiegelten ZFS-Root-Pool aus.
Anschließend verwenden Sie eine Syntax wie die folgende, um zu bestätigen, dass Sie von der alternativen Festplatte gebootet haben.
x86# prtconf -v|sed -n '/bootpath/,/value/p' name='bootpath' type=string items=1 value='/pci@0,0/pci8086,25f8@4/pci108e,286@0/disk@0,0:a' |
Auf SPARC-Systemen mit mehreren ZFS-Boot-Umgebungen können Sie mithilfe des Befehls luactivate von jeder Boot-Umgebung booten.
Während der Installation des Solaris-Betriebssystems und des Oracle Solaris Live Upgrade wird dem ZFS-Root-Dateisystem automatisch die Eigenschaft bootfs zugewiesen.
Innerhalb eines Pools können mehrere boot-fähige Datasets vorhanden sein. Standardmäßig bezieht sich die Eigenschaft bootfs des Pools auf den Eintrag für das boot-fähige Dataset in der Datei /Pool-Name/boot/menu.lst . Der Eintrag menu.lst kann jedoch den Befehl bootfs enthalten, der ein alternatives Dataset im Pool angibt. So ist es möglich, dass die Datei menu.lst Einträge für mehrere Root-Dateisysteme im Pool enthält.
Wenn auf einem System ein ZFS-Root-Dateisystem installiert oder eine Migration in ein ZFS-Root-Dateisystem vorgenommen wird, wird die Datei menu.lst um einen Eintrag wie diesen erweitert:
title zfsBE bootfs rpool/ROOT/zfsBE title zfs2BE bootfs rpool/ROOT/zfs2BE |
Bei Erstellung einer neuen BU wird die Datei menu.lst automatisch aktualisiert.
Auf SPARC-Systemen stehen zwei neue Boot-Optionen zur Verfügung:
Nach der Aktivierung der BU können Sie mit dem Befehl boot -L eine Liste der boot-fähigen Datasets innerhalb eines ZFS-Pools anzeigen lassen. Anschließend können Sie eines der boot-fähigen Datasets in der Liste auswählen. Es werden ausführliche Anweisungen zum Booten dieses Datasets angezeigt. Befolgen Sie diese Anweisungen zum Booten des ausgewählten Datasets.
Zum Booten eines bestimmten ZFS-Datasets können Sie den Befehl boot -Z dataset verwenden.
Wenn in einem ZFS-Speicher-Pool auf dem Boot-Gerät des Systems mehrere ZFS-BUs vorhanden sind, können Sie mit dem Befehl luactivate eine Standard-BU angeben.
So stehen beispielsweise die folgenden ZFS-BUs wie in der Ausgabe des Befehls lustatus beschrieben zur Verfügung:
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- zfsBE yes no no yes - zfs2BE yes yes yes no - |
Sind auf einem SPARC-System mehrere ZFS-BUs vorhanden, können Sie den Befehl boot -L verwenden, um aus einer BU zu booten, die sich von der Standard-BU unterscheidet. Jedoch wird eine BU, die aus einer boot -L-Sitzung gebootet wird, nicht auf die Standard-BU zurückgesetzt, und die Eigenschaft bootfs wird nicht aktualisiert. Wenn Sie die BU, die aus einer boot -L Sitzung gebootet wurde, zur Standard-BU machen möchten, müssen Sie sie mit dem Befehl luactivate aktivieren.
Beispiel:
ok boot -L Rebooting with command: boot -L Boot device: /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0 File and args: -L 1 zfsBE 2 zfs2BE Select environment to boot: [ 1 - 2 ]: 1 To boot the selected entry, invoke: boot [<root-device>] -Z rpool/ROOT/zfsBE Program terminated ok boot -Z rpool/ROOT/zfsBE |
Auf SPARC-Systemen kann aus dem in /platform/`uname -i`/failsafe befindlichen Failsafe-Archiv gebootet werden. Gehen Sie dazu wie folgt vor:
ok boot -F failsafe |
Um ein Failsafe-Archiv aus einem bestimmten boot-fähigen ZFS-Dataset zu booten, verwenden Sie eine Syntax wie die folgende:
ok boot -Z rpool/ROOT/zfsBE -F failsafe |
Während der Installation des Solaris-Betriebssystems oder des Oracle Solaris Live Upgrade werden der Datei /pool-name /boot/grub/menu.lst die folgenden Einträge hinzugefügt, damit ZFS automatisch gebootet wird:
title Solaris 10 9/10 X86 findroot (rootfs0,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris failsafe findroot (rootfs0,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttya module /boot/x86.miniroot-safe |
Enthält das von GRUB als Boot-Gerät identifizierte Speichergerät einen ZFS-Speicher-Pool, wird auf Grundlage der Datei menu.lst das GRUB-Menü erstellt.
Auf x86-Systemen mit mehreren ZFS-BUs kann die BU über das GRUB-Menü gewählt werden. Ist das diesem Menüeintrag entsprechende Root-Dateisystem ein ZFS-Dataset, wird die folgende Option hinzugefügt:
-B $ZFS-BOOTFS |
Wenn ein System aus einem ZFS-Dateisystem bootet, wird das Root-Gerät durch den Boot-Parameter -B $ZFS-BOOTFS in der Zeile kernel oder module des GRUB-Menüeintrags angegeben. Ebenso wie alle anderen über die Option -B angegebenen Parameter wird dieser Wert von GRUB an den Kernel übergeben. Beispiel:
title Solaris 10 9/10 X86 findroot (rootfs0,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris failsafe findroot (rootfs0,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttya module /boot/x86.miniroot-safe |
Das Failsafe-Archiv für x86-Systeme lautet /boot/x86.miniroot-safe und kann durch Auswahl des Solaris-Failsafe-Eintrags im GRUB-Menü gebootet werden. Beispiel:
title Solaris failsafe findroot (rootfs0,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttya module /boot/x86.miniroot-safe |
Die beste Methode zum Ändern der aktiven Boot-Umgebung ist der Befehl luactivate . Wenn das Booten von der aktiven Boot-Umgebung wegen eines ungültigen Patches oder eines Konfigurationsfehlers fehlschlägt, können Sie nur von einer anderen Boot-Umgebung booten, wenn Sie diese zur Boot-Zeit auswählen. Bei x86-System können Sie aus dem GRUB-Menü eine alternative Boot-Umgebung auswählen oder diese (bei SPARC-Systemen) explizit vom PROM booten.
Aufgrund eines Fehlers im Oracle Solaris Live Upgrade von Solaris 10 10/08 kann das Booten der nichtaktiven Boot-Umgebung fehlschlagen, wenn ein ZFS-Dataset oder ein ZFS-Dataset einer Zone in der Boot-Umgebung einen ungültigen Einhängepunkt besitzt. Der gleiche Bug verhindert auch das Einhängen einer BU, wenn sie ein separates /var-Dataset besitzt.
Wenn ein Zonen-Dataset einen ungültigen Einhängepunkt besitzt, kann dieser mit den folgenden Schritten korrigiert werden.
Booten Sie das System von einem Failsafe-Archiv.
Importieren Sie den Pool.
Beispiel:
# zpool import rpool |
Suchen Sie ungültige temporäre Einhängepunkte.
Beispiel:
# zfs list -r -o name,mountpoint rpool/ROOT/s10u6 NAME MOUNTPOINT rpool/ROOT/s10u6 /.alt.tmp.b-VP.mnt/ rpool/ROOT/s10u6/zones /.alt.tmp.b-VP.mnt//zones rpool/ROOT/s10u6/zones/zonerootA /.alt.tmp.b-VP.mnt/zones/zonerootA |
Der Einhängepunkt für die Root-BU (rpool/ROOT/s10u6) muss / sein.
Wenn der Boot-Vorgang wegen Einhängeproblemen von /var fehlschlägt, sollten Sie einen ähnlichen unzulässigen Einhängepunkt für das /var-Dataset suchen.
Setzen Sie die Einhängepunkte für die ZFS-BU und ihre Datasets zurück.
Beispiel:
# zfs inherit -r mountpoint rpool/ROOT/s10u6 # zfs set mountpoint=/ rpool/ROOT/s10u6 |
Starten Sie das System neu.
Wählen Sie die Boot-Umgebung aus, deren Einhängepunkte Sie gerade korrigiert haben, wenn im GRUB-Menü bzw. in der Eingabeaufforderung des OpenBoot-PROM die Option zum Booten einer spezifischen Boot-Umgebung angezeigt wird.
Gehen Sie wie folgt vor, um das System zu booten und eine Wiederherstellung durchzuführen, wenn ein Root-Passwort verloren gegangen oder ein ähnliches Problem aufgetreten ist.
Je nach Schweregrad des Fehlers müssen Sie im Failsafe-Modus oder von einem alternativen Datenträger booten. Um ein verloren gegangenes oder unbekanntes Root-Passwort wiederherzustellen, können Sie in der Regel im Failsafe-Modus booten.
Informationen zur Wiederherstellung eines Root-Pools oder Root-Pool-Snapshots finden Sie unter Wiederherstellen von ZFS-Root-Pools oder Root-Pool-Snapshots.
Booten Sie im Failsafe-Modus.
Auf einem SPARC-System:
ok boot -F failsafe |
Auf einem x86-System wählen Sie an der GRUB-Eingabeaufforderung den Failsafe-Modus aus.
Hängen Sie das ZFS-BU in /a ein, wenn Sie dazu aufgefordert werden:
. . . ROOT/zfsBE was found on rpool. Do you wish to have it mounted read-write on /a? [y,n,?] y mounting rpool on /a Starting shell. |
Wechseln Sie in das Verzeichnis /a/etc.
# cd /a/etc |
Setzen Sie nötigenfalls den TERM-Typ.
# TERM=vt100 # export TERM |
Korrigieren Sie die Datei passwd bzw. shadow.
# vi shadow |
Starten Sie das System neu.
# init 6 |
Wenn ein Problem das erfolgreiche Booten des Systems verhindert oder ein anderes schwerwiegendes Problem auftritt, müssen Sie von einem Netzwerkinstallationsserver oder von einer Solaris-Installations-CD booten, den Root-Pool importieren, das ZFS-BU einhängen und anschließend versuchen, das Problem zu lösen.
Booten Sie von einer Installations-CD oder über das Netzwerk.
SPARC:
ok boot cdrom -s ok boot net -s |
Wenn Sie die Option -s nicht verwenden, müssen Sie das Installationsprogramm beenden.
x86: Wählen Sie die Option zum Booten über das Netzwerk oder die Option zum Booten von einer lokalen CD.
Importieren Sie den Root-Pool, und geben Sie einen alternativen Einhängepunkt an. Beispiel:
# zpool import -R /a rpool |
Hängen Sie die ZFS-BU ein. Beispiel:
# zfs mount rpool/ROOT/zfsBE |
Greifen Sie über das Verzeichnis /a auf den ZFS-BU-Inhalt zu.
# cd /a |
Starten Sie das System neu.
# init 6 |