Wie installiere ich Ubuntu 14.04 / 16.04 64-Bit mit einer Dual-Boot-RAID-1-Partition auf einem UEFI / GPT-System?

22

Update: Frage und Antwort unten gelten auch für Ubuntu 16.04

Ich habe einen Computer mit zwei SSDs und Win (7) auf einer anderen Festplatte vorinstalliert. Die Vorinstallation verwendet (U) EFI / GPT-Boot. Ich möchte den 64-Bit-Desktop von Ubuntu 14.04 auf einer RAID1-Root-Partition auf meinen SSDs installieren und trotzdem mein Win7-System dual booten können. Ist das möglich?

Dieses Handbuch mit dem Desktop-Installationsprogramm hat möglicherweise nicht funktioniert, da es (implizit) das Booten von MBRs voraussetzt. Auch die Installation der Serververteilung erfolgte nicht , wahrscheinlich aus demselben Grund.

Niclas Börlin
quelle

Antworten:

36

UPDATE: Ich habe überprüft, dass die folgende Beschreibung auch für Ubuntu 16.04 funktioniert. Andere Benutzer haben gemeldet, dass sie am 17.10 und 18.04.1 arbeiten.

HINWEIS: In diesem HOWTO erhalten Sie keine LVM. Wenn Sie auch LVM möchten, versuchen Sie, Ubuntu 18.04 Desktop mit RAID 1 und LVM stattdessen auf einem Computer mit UEFI BIOS zu installieren .

Nach Tagen des Versuchs habe ich jetzt ein funktionierendes System! Kurz gesagt bestand die Lösung aus den folgenden Schritten:

  1. Booten Sie mit einer Ubuntu Live CD / USB.
  2. Partitioniert die SSDs nach Bedarf.
  3. Installieren Sie fehlende Pakete (mdadm und grub-efi).
  4. Erstellen Sie die RAID-Partitionen.
  5. Führen Sie das Ubiquity-Installationsprogramm aus (aber booten Sie nicht in das neue System).
  6. Patchen Sie das installierte System (initramfs), um das Booten von einem RAID-Root zu ermöglichen.
  7. Füllen Sie die EFI-Partition der ersten SSD mit GRUB und installieren Sie sie in der EFI-Startkette.
  8. Klonen Sie die EFI-Partition auf die andere SSD und installieren Sie sie in der Startkette.
  9. Getan! Ihr System verfügt nun über RAID 1-Redundanz. Beachten Sie, dass nach einem Kernel-Update nichts Besonderes getan werden muss, da die UEFI-Partitionen unberührt bleiben.

Eine Schlüsselkomponente von Schritt 6 der Lösung war eine Verzögerung in der Startsequenz, die mich ansonsten direkt zur GRUB-Eingabeaufforderung führte (ohne Tastatur!), Wenn eine der SSDs fehlte.

Ausführliches HOWTO

1. Booten

Booten Sie mit EFI vom USB-Stick. Wie genau, hängt von Ihrem System ab. Wählen Sie Ubuntu ohne Installation testen .

Starten Sie einen Terminal-Emulator, um z. B. xtermdie folgenden Befehle auszuführen.

1.1 Login von einem anderen Computer

Beim Ausprobieren fiel es mir oft leichter, mich von einem anderen, bereits vollständig konfigurierten Computer aus anzumelden. Dieses vereinfachte Ausschneiden und Einfügen von Befehlen usw. Wenn Sie dasselbe tun möchten, können Sie sich über ssh anmelden, indem Sie die folgenden Schritte ausführen:

Installieren Sie auf dem zu konfigurierenden Computer den openssh-Server:

sudo apt-get install openssh-server

Passwort ändern. Das Standardkennwort für den Benutzer ubuntuist leer. Sie können wahrscheinlich ein Passwort mittlerer Stärke auswählen. Es wird vergessen, sobald Sie Ihren neuen Computer neu starten.

passwd

Jetzt können Sie sich von einem anderen Computer aus in die Ubuntu-Live-Sitzung einloggen. Die folgenden Anweisungen gelten für Linux:

ssh -l ubuntu <your-new-computer>

Wenn Sie eine Warnung über einen mutmaßlichen Man-in-the-Middle-Angriff erhalten, müssen Sie die SSH-Schlüssel löschen, die zur Identifizierung des neuen Computers verwendet werden. Dies liegt daran openssh-server, dass bei jeder Installation neue Serverschlüssel generiert werden. Der zu verwendende Befehl wird normalerweise gedruckt und sollte so aussehen

ssh-keygen -f <path-to-.ssh/known_hosts> -R <your-new-computer>

Nachdem Sie diesen Befehl ausgeführt haben, sollten Sie sich bei der Ubuntu Live-Sitzung anmelden können.

2. Partitionsdatenträger

Löschen Sie alle alten Partitionen und Startblöcke. Warnung! Dadurch werden Daten auf Ihren Datenträgern zerstört!

sudo sgdisk -z /dev/sda
sudo sgdisk -z /dev/sdb

Erstellen Sie neue Partitionen auf der kleinsten Festplatte: 100 MB für ESP, 32 GB für RAID-SWAP, Rest für RAID-Root. Wenn Ihr SDA-Laufwerk am kleinsten ist, befolgen Sie Abschnitt 2.1, ansonsten Abschnitt 2.2.

2.1 Partitionstabellen erstellen (/ dev / sda ist kleiner)

Führen Sie die folgenden Schritte aus:

sudo sgdisk -n 1:0:+100M -t 1:ef00 -c 1:"EFI System" /dev/sda
sudo sgdisk -n 2:0:+32G -t 2:fd00 -c 2:"Linux RAID" /dev/sda
sudo sgdisk -n 3:0:0 -t 3:fd00 -c 3:"Linux RAID" /dev/sda

Kopieren Sie die Partitionstabelle auf einen anderen Datenträger und generieren Sie eindeutige UUIDs neu (generiert tatsächlich UUIDs für sda neu).

sudo sgdisk /dev/sda -R /dev/sdb -G

2.2 Partitionstabellen erstellen (/ dev / sdb ist kleiner)

Führen Sie die folgenden Schritte aus:

sudo sgdisk -n 1:0:+100M -t 1:ef00 -c 1:"EFI System" /dev/sdb
sudo sgdisk -n 2:0:+32G -t 2:fd00 -c 2:"Linux RAID" /dev/sdb
sudo sgdisk -n 3:0:0 -t 3:fd00 -c 3:"Linux RAID" /dev/sdb

Kopieren Sie die Partitionstabelle auf einen anderen Datenträger und generieren Sie eindeutige UUIDs neu (generiert tatsächlich UUIDs für sdb neu).

sudo sgdisk /dev/sdb -R /dev/sda -G

2.3 Erstellen Sie ein FAT32-Dateisystem unter / dev / sda

Erstellen Sie ein FAT32-Dateisystem für die EFI-Partition.

sudo mkfs.fat -F 32 /dev/sda1
mkdir /tmp/sda1
sudo mount /dev/sda1 /tmp/sda1
sudo mkdir /tmp/sda1/EFI
sudo umount /dev/sda1

3. Installieren Sie fehlende Pakete

Die Ubuntu Live-CD wird ohne zwei Schlüsselpakete geliefert. grub-efi und mdadm. Installieren Sie sie. (Ich bin mir nicht 100% sicher, ob grub-efi hier benötigt wird, aber um die Symmetrie mit der kommenden Installation aufrechtzuerhalten, bringen Sie es ebenfalls ein.)

sudo apt-get update
sudo apt-get -y install grub-efi-amd64 # (or grub-efi-amd64-signed)
sudo apt-get -y install mdadm

Möglicherweise müssen Sie grub-efi-amd64-signedanstelle von, grub-efi-amd64wenn Sie den sicheren Start aktiviert haben. (Siehe Kommentar von Alecz.)

4. Erstellen Sie die RAID-Partitionen

Erstellen Sie die RAID-Geräte im herabgesetzten Modus. Die Geräte werden später fertiggestellt. Das Erstellen eines vollständigen RAID1 hat mir manchmal Probleme bei der folgenden ubiquityInstallation bereitet , nicht sicher warum. (Mount / Unmount? Format?)

sudo mdadm --create /dev/md0 --bitmap=internal --level=1 --raid-disks=2 /dev/sda2 missing
sudo mdadm --create /dev/md1 --bitmap=internal --level=1 --raid-disks=2 /dev/sda3 missing

Überprüfen Sie den RAID-Status.

cat /proc/mdstat

Personalities : [raid1] 
md1 : active raid1 sda3[0]
      216269952 blocks super 1.2 [2/1] [U_]
      bitmap: 0/2 pages [0KB], 65536KB chunk

md0 : active raid1 sda2[0]
      33537920 blocks super 1.2 [2/1] [U_]
      bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>

Partitionieren Sie die md-Geräte.

sudo sgdisk -z /dev/md0
sudo sgdisk -z /dev/md1
sudo sgdisk -N 1 -t 1:8200 -c 1:"Linux swap" /dev/md0
sudo sgdisk -N 1 -t 1:8300 -c 1:"Linux filesystem" /dev/md1

5. Führen Sie das Installationsprogramm aus

Führen Sie das Ubiquity-Installationsprogramm aus, mit Ausnahme des ohnehin fehlgeschlagenen Bootloaders . ( Hinweis : Wenn Sie sich über ssh angemeldet haben, möchten Sie dies wahrscheinlich stattdessen auf Ihrem neuen Computer ausführen.)

sudo ubiquity -b

Wählen Sie als Installationstyp " Etwas anderes" aus und ändern Sie den md1p1Typ in " ext4Format: Ja" und "Einhängepunkt" /. Die md0p1Partition wird automatisch als Swap ausgewählt.

Holen Sie sich eine Tasse Kaffee, während die Installation abgeschlossen ist.

Wichtig: Wählen Sie nach Abschluss der Installation Test fortsetzen aus, da das System noch nicht startbereit ist.

Vervollständigen Sie die RAID-Geräte

Verbinden Sie die wartenden SDB-Partitionen mit dem RAID.

sudo mdadm --add /dev/md0 /dev/sdb2
sudo mdadm --add /dev/md1 /dev/sdb3

Stellen Sie sicher, dass alle RAID-Geräte in Ordnung sind (und optional synchronisiert werden).

cat /proc/mdstat

Personalities : [raid1] 
md1 : active raid1 sdb3[1] sda3[0]
      216269952 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  0.2% (465536/216269952)  finish=17.9min speed=200000K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk

md0 : active raid1 sdb2[1] sda2[0]
      33537920 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>

Der folgende Prozess kann während der Synchronisierung fortgesetzt werden, einschließlich der Neustarts.

6. Konfigurieren Sie das installierte System

Richten Sie ein, um Chroot für das Installationssystem zu aktivieren.

sudo -s
mount /dev/md1p1 /mnt
mount -o bind /dev /mnt/dev
mount -o bind /dev/pts /mnt/dev/pts
mount -o bind /sys /mnt/sys
mount -o bind /proc /mnt/proc
cat /etc/resolv.conf >> /mnt/etc/resolv.conf
chroot /mnt

Pakete konfigurieren und installieren.

apt-get install -y grub-efi-amd64 # (or grub-efi-amd64-signed; same as in step 3)
apt-get install -y mdadm

Wenn Sie md-Geräte noch synchronisieren, werden möglicherweise gelegentliche Warnungen angezeigt:

/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..

Dies ist normal und kann ignoriert werden (siehe Antwort unten in dieser Frage ).

nano /etc/grub.d/10_linux
# change quick_boot and quiet_boot to 0

Durch das Deaktivieren quick_bootwird vermieden, dass die Diskfilter-Schreibvorgänge keine Fehler unterstützen . Das Deaktivieren quiet_bootist nur eine persönliche Angelegenheit.

Ändern Sie /etc/mdadm/mdadm.conf, um Beschriftungsreferenzen zu entfernen, dh zu ändern

ARRAY /dev/md/0 metadata=1.2 name=ubuntu:0 UUID=f0e36215:7232c9e1:2800002e:e80a5599
ARRAY /dev/md/1 metadata=1.2 name=ubuntu:1 UUID=4b42f85c:46b93d8e:f7ed9920:42ea4623

zu

ARRAY /dev/md/0 UUID=f0e36215:7232c9e1:2800002e:e80a5599
ARRAY /dev/md/1 UUID=4b42f85c:46b93d8e:f7ed9920:42ea4623

Dieser Schritt ist möglicherweise nicht erforderlich. Auf einigen Seiten wurde jedoch darauf hingewiesen, dass die Benennungsschemata möglicherweise instabil sind (name = ubuntu: 0/1). Dadurch wird möglicherweise verhindert, dass sich ein einwandfreies RAID-Gerät während des Startvorgangs zusammensetzt.

Ändern Sie die /etc/default/grubzu lesenden Zeilen

#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

Auch dieser Schritt mag unnötig sein, aber ich ziehe es vor, mit offenen Augen zu booten ...

6.1. Schlaf-Skript hinzufügen

(Es wird von der Gemeinschaft vorgeschlagen, dass dieser Schritt nicht erforderlich sein könnte und ersetzt werden kann unter Verwendung von GRUB_CMDLINE_LINUX="rootdelay=30"in /etc/default/grub. Aus Gründen am unteren Rande dieser HOWTO erklärten, schlage ich vor, um Stick mit der Schlaf - Skript , obwohl es ist hässlicher als rootdelay verwendet wird . Somit wir machen mit unserem regulären programm weiter ... )

Erstellen Sie ein Skript, das darauf wartet, dass sich die RAID-Geräte einrichten. Ohne diese Verzögerung kann das Mounten von Root fehlschlagen, da die RAID-Assembly nicht rechtzeitig fertiggestellt wird . Ich habe das auf die harte Tour herausgefunden - das Problem trat erst auf, als ich eine der SSDs zur Simulation eines Festplattenausfalls getrennt hatte! Das Timing muss möglicherweise abhängig von der verfügbaren Hardware angepasst werden, z. B. langsame externe USB-Festplatten usw.

Geben Sie den folgenden Code ein in /usr/share/initramfs-tools/scripts/local-premount/sleepAwhile:

#!/bin/sh
echo
echo "sleeping for 30 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 25 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 20 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 15 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 10 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 5 seconds while udevd and mdadm settle down"
sleep 5
echo "done sleeping"

Machen Sie das Skript ausführbar und installieren Sie es.

chmod a+x /usr/share/initramfs-tools/scripts/local-premount/sleepAwhile
update-grub
update-initramfs -u

7. Aktivieren Sie den Start von der ersten SSD

Jetzt ist das System fast fertig, nur die UEFI-Boot-Parameter müssen installiert werden.

mount /dev/sda1 /boot/efi
grub-install --boot-directory=/boot --bootloader-id=Ubuntu --target=x86_64-efi --efi-directory=/boot/efi --recheck
update-grub
umount /dev/sda1

Dadurch wird der Bootloader in /boot/efi/EFI/Ubuntu(aka EFI/Ubuntuon /dev/sda1) installiert und zuerst in der UEFI-Bootkette auf dem Computer installiert.

8. Aktivieren Sie den Start von der zweiten SSD

Wir sind fast fertig. Zu diesem Zeitpunkt sollten wir in der Lage sein, das sdaLaufwerk neu zu starten . Darüber hinaus mdadmsollte in der Lage sein, Fehler entweder des Laufwerks sdaoder sdbzu behandeln. Das EFI ist jedoch nicht RAID, daher müssen wir es klonen .

dd if=/dev/sda1 of=/dev/sdb1

Zusätzlich zur Installation des Bootloaders auf dem zweiten Laufwerk wird dadurch die UUID des FAT32-Dateisystems auf der sdb1Partition (wie von gemeldet blkid) mit der von sda1und übereinstimmen /etc/fstab. (Beachten Sie jedoch , dass die UUID für die /dev/sda1und /dev/sdb1Partitionen noch anders sein - vergleichen ls -la /dev/disk/by-partuuid | grep sd[ab]1mit blkid /dev/sd[ab]1nach der Installation selbst prüfen müssen .)

Schließlich müssen wir die sdb1Partition in die Startreihenfolge einfügen . (Hinweis: Dieser Schritt ist abhängig von Ihrem BIOS möglicherweise nicht erforderlich. Ich habe Berichte erhalten, dass einige BIOS 'automatisch eine Liste gültiger ESPs generieren.)

efibootmgr -c -g -d /dev/sdb -p 1 -L "Ubuntu #2" -l '\EFI\ubuntu\grubx64.efi'

Ich habe es nicht getestet, aber es ist wahrscheinlich notwendig, eindeutige Bezeichnungen (-L) zwischen dem ESP auf sdaund zu haben sdb.

Dadurch wird ein Ausdruck der aktuellen Startreihenfolge erstellt, z

Timeout: 0 seconds
BootOrder: 0009,0008,0000,0001,0002,000B,0003,0004,0005,0006,0007
Boot0000  Windows Boot Manager
Boot0001  DTO UEFI USB Floppy/CD
Boot0002  DTO UEFI USB Hard Drive
Boot0003* DTO UEFI ATAPI CD-ROM Drive
Boot0004  CD/DVD Drive 
Boot0005  DTO Legacy USB Floppy/CD
Boot0006* Hard Drive
Boot0007* IBA GE Slot 00C8 v1550
Boot0008* Ubuntu
Boot000B  KingstonDT 101 II PMAP
Boot0009* Ubuntu #2

Beachten Sie, dass Ubuntu # 2 (sdb) und Ubuntu (sda) die ersten in der Startreihenfolge sind.

Starten Sie neu

Jetzt können wir neu starten.

exit # from chroot
exit # from sudo -s
sudo reboot

Das System sollte nun in Ubuntu neu starten (Möglicherweise müssen Sie zuerst die Ubuntu Live-Installationsmedien entfernen.)

Nach dem Booten können Sie ausführen

sudo update-grub

um den Windows-Bootloader an die Grub-Bootkette anzuhängen.

Fallstricke der virtuellen Maschine

Wenn Sie dies zuerst in einer virtuellen Maschine ausprobieren möchten, gibt es einige Einschränkungen: Anscheinend wird der NVRAM, der die UEFI-Informationen enthält, zwischen Neustarts, nicht jedoch zwischen den Zyklen des Herunterfahrens und Neustarts gespeichert. In diesem Fall landen Sie möglicherweise an der UEFI-Shell-Konsole. Die folgenden Befehle sollten Sie von /dev/sda1(verwenden FS1:für /dev/sdb1) in Ihren Computer booten :

FS0:
\EFI\ubuntu\grubx64.efi

Die erste Lösung in der Top-Antwort von UEFI-Boot in virtualbox - Ubuntu 12.04 könnte ebenfalls hilfreich sein.

Simulieren eines Festplattenfehlers

Der Ausfall eines RAID-Komponentengeräts kann mit simuliert werden mdadm. Um jedoch zu überprüfen, ob das Boot-Zeug einen Festplattenfehler überlebt, musste ich den Computer herunterfahren und die Stromversorgung von einer Festplatte trennen. Wenn Sie dies tun, stellen Sie zunächst sicher, dass die MD-Geräte synchronisiert sind .

cat /proc/mdstat 

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : active raid1 sdb3[2] sda3[0]
      216269952 blocks super 1.2 [2/2] [UU]
      bitmap: 2/2 pages [8KB], 65536KB chunk

md0 : active raid1 sda2[0] sdb2[2]
      33537920 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>

In den folgenden Anweisungen ist sdX das ausgefallene Gerät (X = a oder b) und sdY das in Ordnung befindliche Gerät.

Trennen Sie ein Laufwerk

Den Computer herunterfahren. Trennen Sie ein Laufwerk. Neustart. Ubuntu sollte nun mit den RAID-Laufwerken im herabgesetzten Modus starten. (Feiern Sie! Dies ist, was Sie erreichen wollten!)

cat /proc/mdstat 

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : active raid1 sda3[0]
      216269952 blocks super 1.2 [2/1] [U_]
      bitmap: 2/2 pages [8KB], 65536KB chunk

md0 : active raid1 sda2[0]
      33537920 blocks super 1.2 [2/1] [U_]
      bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>

Wiederherstellung von einer ausgefallenen Festplatte

Dies ist der folgende Vorgang, wenn Sie eine fehlerhafte Festplatte ersetzen müssen. Wenn Sie einen Ersatz emulieren möchten, können Sie eine Ubuntu Live-Sitzung starten und verwenden

dd if=/dev/zero of=/dev/sdX

Wischen Sie die Festplatte sauber, bevor Sie das reale System neu starten. Wenn Sie gerade die Boot- / RAID-Redundanz im obigen Abschnitt getestet haben, können Sie diesen Schritt überspringen. Sie müssen jedoch mindestens die folgenden Schritte 2 und 4 ausführen, um die vollständige Boot- / RAID-Redundanz für Ihr System wiederherzustellen.

Das Wiederherstellen des RAID + -Bootsystems nach einem Festplattentausch erfordert die folgenden Schritte:

  1. Partitionieren Sie das neue Laufwerk.
  2. Füge Partitionen zu md Geräten hinzu.
  3. Klonen Sie die Startpartition.
  4. Fügen Sie einen EFI-Datensatz für den Klon hinzu.

1. Partitionieren Sie das neue Laufwerk

Kopieren Sie die Partitionstabelle vom fehlerfreien Laufwerk:

sudo sgdisk /dev/sdY -R /dev/sdX

Randomisieren Sie die UUIDs auf dem neuen Laufwerk neu.

sudo sgdisk /dev/sdX -G

2. Fügen Sie zu md Geräten hinzu

sudo mdadm --add /dev/md0 /dev/sdX2
sudo mdadm --add /dev/md1 /dev/sdX3

3. Klonen Sie die Boot-Partition

Klonen Sie das ESP vom fehlerfreien Laufwerk. (Vorsicht, führen Sie zuerst einen Dump-to-File-Vorgang für beide ESPs durch, um die Wiederherstellung zu ermöglichen, wenn Sie es wirklich vermasseln.)

sudo dd if=/dev/sdY1 of=/dev/sdX1

4. Legen Sie die neu belebte Diskette in die Startreihenfolge ein

Fügen Sie einen EFI-Datensatz für den Klon hinzu. Ändern Sie die Bezeichnung -L nach Bedarf.

sudo efibootmgr -c -g -d /dev/sdX -p 1 -L "Ubuntu #2" -l '\EFI\ubuntu\grubx64.efi'

Wenn Sie das System jetzt neu starten, sollte es wieder normal sein (die RAID-Geräte werden möglicherweise noch synchronisiert)!

Warum das Schlaf-Skript?

Es wurde von der Community vorgeschlagen, dass das Hinzufügen eines Sleep-Skripts möglicherweise nicht erforderlich ist und durch die Verwendung von GRUB_CMDLINE_LINUX="rootdelay=30"in /etc/default/grubgefolgt von ersetzt werden kann sudo update-grub. Dieser Vorschlag ist auf jeden Fall sauberer und funktioniert in einem Szenario mit Datenträgerausfall / -austausch. Es gibt jedoch eine Einschränkung ...

Ich habe meine zweite SSD abgeklemmt und festgestellt, dass rootdelay=30anstelle des Sleep-Skripts mit usw. Folgendes zutrifft:
1) Das System bootet im herabgesetzten Modus ohne das "ausgefallene" Laufwerk.
2) Bei einem nicht beeinträchtigten Startvorgang (beide Laufwerke sind vorhanden) wird die Startzeit verkürzt. Die Verzögerung ist nur spürbar, wenn das zweite Laufwerk fehlt.

1) und 2) klangen großartig, bis ich mein zweites Laufwerk wieder hinzufügte. Beim Booten konnte das RAID-Array nicht zusammengebaut werden und ließ mich an der initramfsEingabeaufforderung, ohne zu wissen, was zu tun ist. Es könnte möglich gewesen sein, die Situation zu retten, indem man a) vom Ubuntu Live-USB-Stick gebootet, b) mdadmdas Array manuell installiert und c) neu zusammengebaut hat, aber ... ich habe irgendwo etwas durcheinander gebracht. Stattdessen, wenn ich diesen Test wieder lief mit dem Schlaf - Skript (ja, habe ich das Howto von oben zum x - ten Mal starten ...), wobei das System tat Boot. Die Arrays waren im herabgesetzten Modus und ich konnte die /dev/sdb[23]Partitionen manuell ohne zusätzlichen USB-Stick neu hinzufügen . Ich weiß nicht, warum das Schlaf-Skript funktioniert, während das rootdelaynicht funktioniert. Vielleicht mdadmwird es durch zwei nicht synchronisierte Komponentengeräte verwirrt, aber ich dachte mirmdadmwurde entwickelt, um damit umzugehen. Wie auch immer, da das Schlaf-Skript funktioniert, halte ich mich daran.

Es könnte argumentiert werden, dass das Entfernen eines einwandfrei funktionierenden RAID-Komponentengeräts, das Neustarten des RAID im herabgesetzten Modus und das erneute Hinzufügen des Komponentengeräts ein unrealistisches Szenario ist: Das realistische Szenario besteht eher darin, dass ein Gerät ausfällt und durch ein neues ersetzt wird , so dass weniger Gelegenheit für mdadmverwirrt zu werden. Ich stimme diesem Argument zu. Ich kann jedoch nicht testen, wie das System einen Hardwarefehler toleriert, es sei denn, einige Hardwarekomponenten werden deaktiviert! Und nach dem Testen möchte ich zu einem redundanten, funktionierenden System zurückkehren. (Nun, ich könnte meine zweite SSD an eine andere Maschine anschließen und sie wischen, bevor ich sie wieder hinzufüge, aber das ist nicht machbar.)

Zusammenfassend: Meines Wissens ist die rootdelayLösung sauber, schneller als das Sleep-Skript für nicht beeinträchtigte Startvorgänge und sollte für ein echtes Szenario mit Laufwerksausfall / -austausch funktionieren. Ich kenne jedoch keinen praktikablen Weg, um es zu testen. Also werde ich mich vorerst an das hässliche Schlaf-Skript halten.

Niclas Börlin
quelle
Hinweis 1: Sollten Sie während der Installation versehentlich Windows starten und DHCP später beim Neustart von Ubuntu (Live oder auf andere Weise) auf mysteriöse Weise fehlschlagen (ist mir passiert), kann das Herunterfahren und Neustarten des Computers und der Router helfen. Anscheinend versuchen einige Router, bei wiederkehrenden DHCP-Anfragen "klug" zu sein, was aus irgendeinem Grund Ubuntu, aber nicht Windows betrifft ... seufz
Niclas Börlin
1
Hinweis 2: Obwohl die oben installierte Bootsequenz darauf hindeutet, dass der Bootloader auf sdb verwendet wird, stellen Sie möglicherweise fest, dass / boot / efi immer noch von sda ( mount | grep efi) bereitgestellt wird . Anscheinend hängt Linux die erste Partition ein, deren blkid passt /etc/fstab. Dies sollte jedoch kein Problem sein.
Niclas Börlin
Hinweis 3: Sollten Sie aus irgendeinem Grund nicht in der Lage sein, auf Ihren MD-Geräten zu booten (z. B. indem Sie die Wiederherstellung der Boot-Partition in Schritt 3 oben durcheinander gebracht haben), konnte ich den Zugriff wiederherstellen, indem ich mit dem Ubuntu Live-Medium und anschließend mit apt-get install mdadmund bootete mdadm -A /dev/md0 mdadm -A /dev/md1.
Niclas Börlin
3
Ja. :) So habe ich mein System konfiguriert.
Niclas Börlin,
1
Ich musste installieren, grub-efi-amd64-signedandernfalls wurde der EFI-Fehler "ungültige Signatur" angezeigt, wenn der sichere Start aktiviert war.
Alecz
0

Mein Vorschlag ist für Debian OS, aber ich denke, es würde auch für Ubuntu und andere funktionieren.

Eine Möglichkeit, ein Problem zu lösen, das bei vielen Motherboards auftritt, die die UEFI-Einträge nicht korrekt verarbeiten (Debian bootet nicht, selbst wenn Sie den richtigen Eintrag vorgenommen efibootmgr -c -g -d /dev/sda -p 1 -w -L "debian" -l /EFI/debian/grubx64.efihaben. UEFI-BIOS zeigt eine bootfähige "debian" -Diskette an, bootet jedoch nicht von dieser ), ist stattdessen der generische Eintrag zu verwenden /boot/efi/EFI/boot/bootx4.efi.

Zum Beispiel mag Asus Z87C nicht /EFI/debian/grubx64.efi.

Wenn Sie also die efi-Partition /dev/sda1in den /boot/efiPfad eingebunden haben :

mkdir /boot/efi/EFI/boot
cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx4.efi

Starten Sie dann neu.

Das UEFI-BIOS erkennt eine allgemeine "UEFI OS" -Diskette sowie alle anderen zuvor mit efibootmgr erstellten Einträge, bootet jedoch problemlos von der allgemeinen "UEFI OS" -Diskette.

Nicola Giampietro
quelle