it-swarm.com.de

Initialisieren Sie GRUB für die nicht bootfähige UEFI zfs 16.04-Installation neu

Ich habe einen physischen Computer mit Ubuntu 16.04 und einem zfs-Root-Dateisystem, der gemäß den Anweisungen unter https://github.com/zfsonlinux/zfs/wiki/Ubuntu-16.04-Root-on-ZFS installiert wurde

Ich habe den Bootloader wie folgt installiert:

5.5b Um UEFI zu booten, installieren Sie GRUB:

grub-install --target=x86_64-efi --efi-directory=/boot/efi \
      --bootloader-id=ubuntu --recheck --no-floppy

Das System läuft seit drei Monaten einwandfrei, mit mehreren Neustarts (hauptsächlich aufgrund von Stromausfällen).

Der Root-Pool ist ein Drei-Wege-Spiegel:

NAME                                                                STATE     READ WRITE CKSUM
rpool                                                               ONLINE       0     0     0
  mirror-0                                                          ONLINE       0     0     0
    ata-SAMSUNG_HM500JI_S1WFJ90S818624-part1                        ONLINE       0     0     0
    ata-ST3250820AS_5QE5BVW5-part1                                  ONLINE       0     0     0
    ata-GB0250C8045_9SF0R2RD-part1                                  ONLINE       0     0     0

Ursprünglich hatte ich auch einen Hot-Spare im Pool. Heute Morgen brauchte ich das Ersatzlaufwerk für die Verwendung in einem anderen Server, auf dem ein Gerät ausgefallen war. Daher habe ich zpool remove verwendet, um das Ersatzlaufwerk aus dem System zu entfernen, es herunterzufahren und das Ersatzlaufwerk physisch zu entfernen.

Jetzt bootet der Server nicht mehr.

Ich habe versucht, alle drei verbleibenden physischen Festplatten zum Booten auszuwählen, aber keine Freude.

Derzeit habe ich mit einer Live-CD neu gestartet. Nach den ersten Schritten in den obigen Installationsanweisungen kann ich alle zfs-Pools anzeigen, sodass alle Daten vorhanden sind. Ich denke, der nächste Schritt könnte sein, in diesen zpool zu chrooten, aber ich bin mir nicht sicher, wie ich das tun soll, da die verschiedenen ROOT-Dateisysteme usw.

Ich vermute, dass die GRUB Boot-Informationen aus irgendeinem Grund nur auf der Festplatte installiert wurden, die als "Spare" bezeichnet wurde und die ich jetzt entfernt habe. Die betreffende Festplatte ist jetzt Teil eines ZFS-Spiegels auf einem anderen Server, sodass ein Zurücksetzen nicht möglich ist.

Meine Frage ist: Wie kann ich GRUB am einfachsten neu initialisieren, damit der Server startet? Muss ich in das festplattenbasierte System chrooten oder kann dies von der Live-CD-Umgebung aus erfolgen? Wenn dies der Fall ist, wie kann ich den Root-Pool korrekt bereitstellen?

2
nickcrabtree

Weitgehend von den ZFS-Installationsanweisungen unter https://github.com/zfsonlinux/zfs/wiki/Ubuntu-16.04-Root-on-ZFS entfernt. Hier sind die Schritte, mit denen ich mein System zum Laufen gebracht habe nochmal.

boot-repair hat nicht funktioniert.

Schritt 1: Bereiten Sie die Installationsumgebung vor

1.1 Starten Sie die Ubuntu Live-CD, wählen Sie Ubuntu ohne Installation testen und öffnen Sie ein Terminal (drücken Sie Strg-Alt-T).

1.2 Optional: Installieren Sie den OpenSSH-Server in der Live-CD-Umgebung: Wenn Sie ein zweites System haben, kann die Verwendung von SSH für den Zugriff auf das Zielsystem praktisch sein.

$ Sudo apt-get --yes install openssh-server

Richten Sie ein Kennwort für das Konto "ubuntu" (Live CD-Benutzer) ein:

$ passwd

Tipp: Sie können Ihre IP-Adresse mit ip addr show scope global ermitteln. Stellen Sie dann von Ihrem Hauptcomputer aus eine Verbindung mit ssh ubuntu @ IP her.

1.3 root werden:

# Sudo -i

1.4 Installieren Sie ZFS in der Live CD-Umgebung:

# apt-add-repository universe
# apt update

(Ignorieren Sie Fehler, wenn Sie eine alte Datenbank aus dem Weg räumen.)

# apt install --yes debootstrap gdisk zfs-initramfs

Schritt 2: Verfügbare ZFS-Pools ermitteln

2.1 Überprüfen Sie, ob ZFS-Pools bereits importiert wurden

# zpool list
# zfs list 

2.2 Wenn ja, müssen wir den ZFS-Pool exportieren, damit wir ihn in einem anderen Verzeichnis bereitstellen können, damit wir ihn chrooten können

# zpool export rpool

Schritt 3: Chroot in ZFS-Pool

3.1 Importpool an einen nicht standardmäßigen Speicherort. Das Flag -N (wird nicht automatisch eingehängt) ist erforderlich, da andernfalls sowohl der Rpool-Stamm als auch der Rpool/Root/UBUNTU-Pool versuchen, auf/mnt eingehängt zu werden

# zpool import -a -N -R /mnt

3.2 Hängen Sie das Root-System ein

# zfs mount rpool/ROOT/ubuntu

3.3 Hängen Sie die restlichen Dateisysteme ein

# zfs mount -a

3.4 Binden Sie die virtuellen Dateisysteme aus der LiveCD-Umgebung an das neue System und chrooten Sie hinein:

# mount --rbind /dev  /mnt/dev
# mount --rbind /proc /mnt/proc
# mount --rbind /sys  /mnt/sys
# chroot /mnt /bin/bash --login

Hinweis: Hierbei wird --rbind und nicht --bind verwendet.

Schritt 4: Initialisieren Sie die EFI-Partitionen auf allen Root-Pool-Komponenten neu

4.1 Überprüfen Sie, ob der Platzhalter die richtigen Root-Pool-Partitionen erhält:

# for i in /dev/disk/by-id/*ata*part3; do echo $i; done

4.2 Fügen Sie einen Eintrag für/boot/efi für jede Festplatte zu/etc/fstab für zukünftige Failover-Zwecke hinzu:

# for i in /dev/disk/by-id/*ata*part3; \
      do mkdosfs -F 32 -n EFI ${i}; \
      echo PARTUUID=$(blkid -s PARTUUID -o value \
      ${i}) /boot/efi vfat defaults 0 1 >> /etc/fstab; done

4.3 Hängen Sie die erste Festplatte ein

# mount /dev/disk/by-id/scsi-SATA_disk1-part3 /boot/efi

4.4 grub installieren

# grub-install --target=x86_64-efi --efi-directory=/boot/efi \
      --bootloader-id=ubuntu --recheck —no-floppy

4.5 Hängen Sie die erste Partition aus

# umount /boot/efi

4.6 Hängen Sie die zweite Festplatte ein

# mount /dev/disk/by-id/scsi-SATA_disk2-part3 /boot/efi

4.7 grub installieren

# grub-install --target=x86_64-efi --efi-directory=/boot/efi \
      --bootloader-id=ubuntu --recheck —no-floppy

4.8 Wiederholen Sie die Schritte 4.5 bis 4.7 für jede weitere Festplatte. 4.9 Um zusätzliche Sicherheit zu gewährleisten, führen Sie auch auf jeder Festplatte eine MBR-Installation durch

# grub-install /dev/disk/by-id/scsi-SATA_disk1
# grub-install /dev/disk/by-id/scsi-SATA_disk2

Schritt 5: Neustart

5.1 Verlassen Sie die Chroot

# exit

5.2 Neustart

# reboot
3
nickcrabtree

Die einfachste und beste Art, grub neu zu initialisieren, ist ein Dienstprogramm namens Boot Repair. Folge diesen Schritten:

  1. Booten Sie von einer Live-Ubuntu-Diskette und wählen Sie "Versuch ohne Installation"
  2. Öffnen Sie ein Terminal und führen Sie die folgenden Befehle aus:

    Sudo -i
    add-apt-repository ppa:yannubuntu/boot-repair
    apt update
    apt install boot-repair
    boot-repair
  3. Wählen Sie die empfohlene Reparatur

  4. Schließlich wird Ihnen der Code zum Einfügen in das Terminal angezeigt. Dies wird zweimal passieren. Öffnen Sie dazu ein neues Terminalfenster.
  5. Entfernen Sie den Installationsdatenträger, nachdem der Neustart des Programms abgeschlossen ist.

Durch die Boot-Reparatur wird Ihr Grub vollständig neu initialisiert und funktioniert gut mit UEFI.

0
Edgy1