Ich habe mir vor einigen Wochen meine Systemplatten zerstört. Das hat mich noch nicht sonderlich gestört. Denn man kann OpenSolaris sehr schnell wieder installieren. Von den ganzen Konfigurationen hatte ich ein Backup. Ein kleineres Problem hatte ich mit den Zonen. Sie ließen sich nicht ohne weiteres im neuen System importieren. Ein möglicher Grund ist, dass ich sie nicht detachet hatte und die Zoneroots hatte ich auch nicht mehr.

Der Fehler hat sich wie folgt geäußert:

rennecke@walhalla ~ $ pfexec zoneadm -z test attach -u
Log File: /var/tmp/test.attach_log.KvayPK
ERROR: no active dataset.
rennecke@walhalla ~ $ pfexec zoneadm -z test attach
Log File: /var/tmp/test.attach_log.X4aOcK
ERROR: no active dataset.
rennecke@walhalla ~ $ pfexec cat /var/tmp/test.attach_log.X4aOcK
[Montag, 15. Februar 2010, 12:45:18 Uhr CET] Log File: /var/tmp/test.attach_log.X4aOcK
[Montag, 15. Februar 2010, 12:45:18 Uhr CET] ERROR: no active dataset.

Also habe ich etwas gebastelt und habe die Zonen wieder importiert.

1. Das Backup von /etc/zones eingespielt 2. Den zpool mit den zonen importiert, mit der Option -f 3. ID des Parent Bootenvironment auslesen:

rennecke@walhalla ~ $ zfs get -r org.opensolaris.libbe:uuid rpool/ROOT
...                                -
rpool/ROOT/opensolaris          org.opensolaris.libbe:uuid  642ced7d-55a2-cc3b-fbdf-fbdda1c33ebc  local
...

4. Das höchste Bootenvironment der Zone bestimmen. Das ist die höchste Nummer:

rennecke@walhalla ~ $ zfs get -r org.opensolaris.libbe:parentbe
...
daten/zone/test/ROOT/zbe-10                      org.opensolaris.libbe:parentbe  5741bca6-d793-454e-ad53-84c2cf7c630b  local
...

5. ID des Parent Bootenvironment setzten:

rennecke@walhalla ~ $ pfexec zfs set org.opensolaris.libbe:parentbe=642ced7d-55a2-cc3b-fbdf-fbdda1c33ebc daten/zone/test/ROOT/zbe-10

6. Status der Zone in der Datei /etc/zones/index auf configured setzten 7. Zone neu installieren:

rennecke@walhalla ~ $ pfexec zoneadm -z test install

8. Testen, ob die Zone sich nicht booten lässt:

rennecke@walhalla ~ $ pfexec zoneadm -z test boot

Es sollte ein Fehler kommen, dass es mehrere aktive Datasets gibt.

9. Das neu angelegte Bootenvironment der Zone löschen:

rennecke@walhalla ~ $ pfexec zfs destroy daten/zone/test/ROOT/zbe-11

10. Fertig, nun kann man die Zone wieder normal booten

Diese Unschönheit kommt bei Solaris 10 nicht vor. Es kann sein, dass sie auch nur bei den, von mir verwendten Build 131 vorkommt. Man sollte bei dieser Bastelei wissen was man tut, also bitte nicht wild darauf los tippen, wenn ihr den selben Fehler habt.