Ich habe ein USB-Laufwerk, das ich zum Starten von meinem Laptop verwende, was gelegentlich Probleme mit der internen Festplatte hat. Manchmal wird es nicht im BIOS erkannt, aber es wird immer erkannt, wenn es bereits gestartet ist.
Wenn Sie systemd-boot auf Ihrem internen Laufwerk installiert haben, befolgen Sie die erste Anleitung. Wenn nicht, fahren Sie mit der zweiten Methode fort. Die Installation von systemd-boot auf Ihrem internen Laufwerk ist die empfohlene Methode
Anleitung 1: Systemd-Boot auf dem internen Laufwerk
Starten Sie eine Live-CD auf dem Computer. Schließen Sie das USB-Laufwerk an, das Sie zum Booten vom NVMe-Laufwerk verwenden.
Erstellen Sie eine FAT32-Partition auf dem USB-Laufwerk. Stellen Sie sicher, dass die Boot- und die Esp-Flags aktiviert sind. Am einfachsten geht das mit gparted.
Mounten Sie die FAT32-Partition. Für den Rest der Schritte gehe ich davon aus, dass es unter / mnt / usbboot eingehängt ist
Fügen Sie der Fstab Ihre USB-Startpartition hinzu, damit sie automatisch angehängt wird. Der einfachste Weg, dies zu tun, besteht darin, chroot (verwenden Sie Arch-chroot, es ist einfacher) in Ihr internes Laufwerk und dann auszuführen
sudo genfstab -U / > /etc/fstab
.Erstellen Sie diese Datei auf dem internen Laufwerk: `/etc/systemd/system/boot-sync.service '
Hinweis: Für diese systemd-Einheit muss rsync installiert sein.
Fügen Sie Folgendes in die gerade erstellte Datei ein:
[Einheit]
Description = "Bootdateien vom internen Laufwerk zum USB-Laufwerk synchronisieren"
RequiresMountsFor = / mnt / usbboot
[Bedienung]
Typ = Einschuss
ExecStart = / bin / bash -c "rsync -rlgopuv /boot/*.img / mnt / usbboot /"
ExecStart = / bin / rsync -rlgopuv / boot / vmlinuz-linux / mnt / usbboot /
ExecStart = / bin / rsync -rlgopuv / boot / EFI / mnt / usbboot /
ExecStart = / bin / rsync -rlgopuv / boot / loader / mnt / usbboot /
[Installieren] WantedBy = multi-user.target
Chroot in dein internes Laufwerk und führe folgenden Befehl aus:
sudo systemctl enable --now boot-sync.service
Starten Sie neu und wählen Sie das soeben erstellte USB-Laufwerk als Standardstartgerät aus.
Anleitung 2: Systemd-Boot auf dem USB-Laufwerk - Nicht empfohlen
Starten Sie eine Live-CD auf dem Computer. Schließen Sie das USB-Laufwerk an, das Sie zum Booten vom NVMe-Laufwerk verwenden.
Erstellen Sie eine FAT32-Partition auf dem USB-Laufwerk. Stellen Sie sicher, dass die Boot- und die Esp-Flags aktiviert sind. Am einfachsten geht das mit gparted.
Mounten Sie die FAT32-Partition. Für den Rest der Schritte gehe ich davon aus, dass es unter / mnt / usbboot eingehängt ist
Gehen Sie in Ihr internes Laufwerk und führen Sie diesen Befehl aus
sudo bootctl --path=/mnt/usbboot install
Führen Sie diesen Befehl aus (auch innerhalb der chroot auf Ihrem internen Laufwerk)
sudo bootctl update
(HINWEIS: Dies ist möglicherweise nicht erforderlich, aber es tut nicht weh)Erstellen Sie einen Eintrag für Ihre NVMe-Festplatte unter /mnt/usb/loader/entries/ubuntu_server.conf
Es sollte ungefähr so aussehen:
title Ubuntu Server 18.04 linux /vmlinuz-linux initrd /initramfs-linux.img options root=PARTUUID=XXXX rw
Ersetzen Sie XXXX durch die PARTUUID für die Root-Partition Ihres NVMe-Laufwerks. Dies kann gefunden werden, indem Sie blkid ausführen und nach Ihrer Root-Partition suchen.
- Erstellen Sie /mnt/usb/loader/loader.conf
Es sollte ungefähr so aussehen:
default ubuntu_server timeout 4 editor 0
HINWEIS: Führen Sie entweder Schritt 8A oder Schritt 8B aus. Wenn Sie sich dafür entscheiden, die Dateien manuell zu kopieren, müssen sie bei jeder Aktualisierung des Kernels erneut kopiert werden
8A (nicht empfohlen). Kopieren Sie manuell /boot/initramfs-linux.img
und /boot/vmlinuz-linux
von Ihrer internen Laufwerk - Boot - Partition über zu dem USB - Laufwerk. Diese Dateien müssen jedes Mal aktualisiert werden, wenn Sie Ihren Kernel aktualisieren oder Ihre initramfs neu erstellen.
8B. Wenn Sie das Skript anstelle des manuellen Kopierens verwenden möchten, fügen Sie zunächst die USB-Boot-Partition zur fstab hinzu, damit sie automatisch angehängt wird. Der einfachste Weg, dies zu tun, besteht darin, chroot (verwenden Sie Arch-chroot, es ist einfacher) in Ihr internes Laufwerk und dann auszuführen sudo genfstab -U / > /etc/fstab
.
Hinweis: Für diese systemd-Einheit muss rsync installiert sein
Erstellen Sie diese Datei auf dem internen Laufwerk: `/etc/systemd/system/boot-sync.service '
Fügen Sie Folgendes in die gerade erstellte Datei ein:
[Einheit]
Description = "Bootdateien vom internen Laufwerk zum USB-Laufwerk synchronisieren"
RequiresMountsFor = / mnt / usbboot
[Bedienung]
Typ = Einschuss
ExecStart = / bin / bash -c "rsync -rlgopuv /boot/*.img / mnt / usbboot /"
ExecStart = / bin / rsync -rlgopuv / boot / vmlinuz-linux / mnt / usbboot /
[Installieren] WantedBy = multi-user.target
Chroot in dein internes Laufwerk und führe folgenden Befehl aus:
sudo systemctl enable --now boot-sync.service
Starten Sie neu und wählen Sie das soeben erstellte USB-Laufwerk als Standardstartgerät aus.