Hetzner - FreeBSD zpool in Rescue Konsole einhängen

peterle

Forenkasper
Bei Hetzner gibt es seit geraumer Zeit wohl kein FreeBSD Installationsimage mehr und auch keine Rettungskonsole mehr dafür.

Nun kann ich auf deren Rescue Linux OpenZFS installieren und den Standard Zpool von FreeBSD importieren - So weit so lustig.

Es gibt auch eine kleine Anleitung dazu bei Hetzner:

Die schreibt:
If your installation gets broken and doesn't boot anymore, you can use the Linux rescue system to access it:

  1. Boot into the Linux rescue system
  2. Install OpenZFS (using zfs like in "Step 1" of this tutorial)
  3. Import your root pool without mounting its datasets
    zpool import -o cachefile=none -f -N rpool
  4. Mount your root dataset
    mount -t zfs rpool/ROOT/FreeBSD /mnt
  5. Make any modifications you need and reboot
    reboot

Nur meldet bei Punkt vier die Konsole dann:
Code:
root@rescue ~ # mount -t zfs zroot/ROOT/default /mnt
filesystem 'zroot/ROOT/default' cannot be mounted using 'mount'.
Use 'zfs set mountpoint=legacy' or 'zfs mount zroot/ROOT/default'.
See zfs(8) for more information.

Da ich mich erinnere, daß Import und Export von Zpools zuweilen doofe Ergebnisse bringen konnten, frage ich mich gerade, was die Risiken sind und ob ich den nachher wieder exportieren muß oder tatsächlich einfach reboote?
 
Sollte eigentlich klappen, eventuell musst du noch getaner Arbeit das Mountpoint-Property wieder auf / setzen, da bin ich mir grad nicht sicher. Aber was willst du machen? Wenn du den ganzen Pool importieren willst, würd ich den import so machen: zpool import -o cachefile=none -f -R /mnt POOLNAME
 
Sollte eigentlich klappen, eventuell musst du noch getaner Arbeit das Mountpoint-Property wieder auf / setzen, da bin ich mir grad nicht sicher. Aber was willst du machen? Wenn du den ganzen Pool importieren willst, würd ich den import so machen: zpool import -o cachefile=none -f -R /mnt POOLNAME

Ich will ein chroot auf den ganzen pool machen können und brauche ihn dafür in einem Verzeichnis.

Code:
zpool import -o cachefile=none -f -R /mnt POOLNAME

Hatte ich als erstes aus Erinnerung ausprobiert, aber der hängt mir dann nur /usr, /var, etc. ein und das root Veerzeichnis bleibt an der Stelle leer.

Hier der klassische zroot Pool:

Code:
root@rescue ~ # zfs list -o name,mountpoint,mounted,my.custom:property
NAME                                           MOUNTPOINT  MOUNTED  MY.CUSTOM:PROPERTY
zroot                                          /zroot      no       -
zroot/ROOT                                     none        no       -
zroot/ROOT/12.3-RELEASE-p5_2022-11-12_090417   /           no       -
zroot/ROOT/12.3-RELEASE-p8_2023-09-30_111536   /           no       -
zroot/ROOT/12.4-RELEASE-p5_2023-09-30_112148   /           no       -
zroot/ROOT/12.4-RELEASE-p5_2024-03-26_115934   /           no       -
zroot/ROOT/13.2-RELEASE-p10_2024-03-26_120516  /           no       -
zroot/ROOT/13.2-RELEASE-p10_2024-03-26_122447  /           no       -
zroot/ROOT/13.2-RELEASE-p10_2024-03-26_211358  /           no       -
zroot/ROOT/14.0-RELEASE-p5_2024-03-26_211759   /           no       -
zroot/ROOT/14.0-RELEASE-p5_2024-03-26_220830   /           no       -
zroot/ROOT/default                             /           no       -
zroot/tmp                                      /tmp        no       -
zroot/usr                                      /usr        no       -
zroot/usr/home                                 /usr/home   no       -
zroot/usr/ports                                /usr/ports  no       -
zroot/usr/src                                  /usr/src    no       -
zroot/var                                      /var        no       -
zroot/var/audit                                /var/audit  no       -
zroot/var/crash                                /var/crash  no       -
zroot/var/log                                  /var/log    no       -
zroot/var/mail                                 /var/mail   no       -
zroot/var/tmp                                  /var/tmp    no       -
 
Ich will ein chroot auf den ganzen pool machen können und brauche ihn dafür in einem Verzeichnis.

Code:
zpool import -o cachefile=none -f -R /mnt POOLNAME

Hatte ich als erstes aus Erinnerung ausprobiert, aber der hängt mir dann nur /usr, /var, etc. ein und das root Veerzeichnis bleibt an der Stelle leer.

Das root müsste ja dann unter /mnt/ROOT/default stehen. Bzw. musst du es ev. noch manuel Mounten.
Wenn du ein chroot rein machen willst, wird das von der Linux Umgebung aber ohnehin nicht gehen, wenn da ein BSD installiert ist.
 
Das root müsste ja dann unter /mnt/ROOT/default stehen. Bzw. musst du es ev. noch manuel Mounten.
Wenn du ein chroot rein machen willst, wird das von der Linux Umgebung aber ohnehin nicht gehen, wenn da ein BSD installiert ist.

Autsch, da hast Du natürlich völlig recht.
ich muß letztendlich ein neues Passwort vergeben, weil das im Upgrade Prozess weggeschossen wurde.

Vermutlich kriege ich das tatsächlich nur mit einer Virtuellen Konsole und einem bootbaren FreeBSD Installimage hin.
 
Hm könntest du dir nicht vom Support ne KVM Konsole anschließen lassen und dann im Singel-User Mode booten?

Alternativ und etwas dreckig aber mit nem Linux rescue und qemu :D
Bootonly iso runterladen und dann
Code:
qemu-system-x86_64 \
  -cdrom FreeBSD-13.2-RELEASE-amd64-bootonly.iso \
  -device ahci,id=ahci \
  -drive id=disk0,format=raw,file=/dev/sda,if=none -device ide-hd,drive=disk0,bus=ahci.0 \
  -drive id=disk1,format=raw,file=/dev/sdb,if=none -device ide-hd,drive=disk1,bus=ahci.1 \
  -drive id=disk2,format=raw,file=/dev/sdc,if=none -device ide-hd,drive=disk2,bus=ahci.2 \
  -drive id=disk3,format=raw,file=/dev/sdd,if=none -device ide-hd,drive=disk3,bus=ahci.3 \
  -nic user,hostfwd=tcp::2142-:22 \
  -curses \
  -boot d \
  -m 16G
# shell
zpool import -o cachefile=none -o altroot=/root/temp zroot
zfs mount -v zroot/ROOT/default
# ... was auch immer du machen willst
zfs unmount zroot/ROOT/default
zpool export zroot

PS: Wenn ich mich recht erinnere, musste ich die vier Platten als "IDE" rein geben, weil es da irgendwelche Limitierungen mit der Anzahl gab (ISO + HDD)

Edit: Warum brauchst du ein chroot um das root passwort anzupassen?
Ich würde das einfach raus nehmen, neu starten, einloggen und neu setzten.
 
Ich würde das einfach raus nehmen, neu starten, einloggen und neu setzten.
Code:
/etc/sshd/sshd_config ==> PermitRootLogin without-password

Ich bin ja durchaus zuweilen ein todesverachtender Hasardeur, aber der move fühlt sich stark suizidal für einen Server in freier Wildbahn an. :o

Ich probiere mich jetzt mal mit der KVM von Hetzner ...
 
Hast du kein regulären User, der "su" benutzten kann?
Oder brauch root dafür zwingend ein Passwort? Hab das nie ohne ausprobiert.

PS: Oder das root passwort aus einer lokalen Installation rüber kopieren - nachdem du den Pool gemountet bekommen hast
 
su nicht ohne Passwort und sudo hab ich nicht.

Ich merke aber, daß ich das mit der KVM lange nicht gemacht habe und der Server mit irgendwas zugelaufen ist ... :ugly:
 
Code:
/etc/sshd/sshd_config ==> PermitRootLogin without-password

Ich bin ja durchaus zuweilen ein todesverachtender Hasardeur, aber der move fühlt sich stark suizidal für einen Server in freier Wildbahn an. :o

Ich probiere mich jetzt mal mit der KVM von Hetzner ...


Du könntest doch aus dem Rettungsystem das / mounten, root login per SSH erlauben, nur keys erlauben und unter /root/.ssh/authorized_keys einen entsprechenden Key hinterlegen - dann brauchst du garnicht mit Kennwörtern rumhantieren / chrooten, und ich denke das ist dann auch insgesamt ein sehr überschaubares Risiko

/edit da du das ja direkt nach dem Neustart, passwd als root wieder zurückdrehen kannst.
 
Du könntest doch aus dem Rettungsystem das / mounten, root login per SSH erlauben, nur keys erlauben und unter /root/.ssh/authorized_keys einen entsprechenden Key hinterlegen - dann brauchst du garnicht mit Kennwörtern rumhantieren / chrooten, und ich denke das ist dann auch insgesamt ein sehr überschaubares Risiko

/edit da du das ja direkt nach dem Neustart, passwd als root wieder zurückdrehen kannst.
Das hat tatsächlich ausgesprochen elegant funktioniert. :p

Eine kleine Nebenlehre aus der Aktion ist:
Wenn Du einen Backup Server nutzt, dann lösche kurzfristige Backups die Du gesondert auf den Clients gemacht hast SOFORT wieder, denn sonst läuft Dir der Server voll und kackt ab.

Das war jetzt das zweite mal, ab dem dritten weiß ich es.

Danke an alle für das Gegenübersein. :)
 
Zurück
Oben