Vorbereiten der neuen Bootpartition

Vorbereiten der neuen Bootpartition

Von den bestehenden FragenDassieht dem am ähnlichsten aus, was ich mache, nur dass ich versuche, meine Partition zu vergrößern, und ich nicht weiß, warum in /boot/ und /boot/efi unterschiedliche Partitionen eingebunden sind und wie ich weiter vorgehen soll, ohne mir ins Bein zu schießen.

Bisher habe ich eine neue Partition erstellt, sie gemountet /newBootund dies getan sudo rsync -a /boot/ /newBoot/, daher gehe ich davon aus, dass ich alle relevanten Dateien zum Wechseln in der neuen Partition habe.

$ lsblk -e 7 -o name,fstype,size,fsused,label,partlabel,mountpoint,uuid,partuuid
NAME                        FSTYPE   SIZE FSUSED LABEL   PARTLABEL          MOUNTPOINT UUID                                   PARTUUID
sda                                  7.3T                                                                                     
└─sda1                      crypto   7.3T                                              4dffc196-9926-43d9-a7c8-38898681f402   85b3a656-4886-4b37-b9c1-2acb0158587a
...
nvme0n1                            931.5G                                                                                     
├─nvme0n1p1                 vfat     512M   5.3M         EFI System Partition
│                                                                           /boot/efi  FD0E-EECA                              587cf214-f068-4879-a833-9dffa5ec6e3d
├─nvme0n1p2                 ext2     488M 313.7M                            /boot      606a1976-d1c2-4246-a256-a8afddb04f84   2e10e277-560f-4f5e-abce-1dce5187a7f0
...
└─nvme0n1p4                 vfat     1.5G        NEWBOOT newboot                       530D-4828                              ea886018-714f-46fb-8f21-785c74543891
$ efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0004
Boot0004* ubuntu    HD(1,GPT,587cf214-f068-4879-a833-9dffa5ec6e3d,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)
$ sudo efibootmgr -c -L ubuntuNew -l \\EFI\\UBUNTU\\SHIMX64.EFI
$ efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0000,0004
Boot0000* ubuntuNew HD(1,GPT,85b3a656-4886-4b37-b9c1-2acb0158587a,0xffff,0x3a3535ca9)/File(\EFI\UBUNTU\SHIMX64.EFI)
Boot0004* ubuntu    HD(1,GPT,587cf214-f068-4879-a833-9dffa5ec6e3d,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)

also obwohl ich nicht verstehe, warum im aktuellen /bootOrdner zwei Partitionen beteiligt sind, denke ich, dass eine auch funktionieren sollte? So lautet zumindest die ausgewählte Antwort auf die oben verlinkte Frage, oder?

Was fehlt denn nun /etc/fstab??

$ cat /etc/fstab 
...
UUID=606a1976-d1c2-4246-a256-a8afddb04f84 /boot           ext2    defaults        0       2
...
UUID=FD0E-EECA  /boot/efi       vfat    umask=0077      0       1
...

Laut lsblkund efibootmgr -v(danke @oldfred) ist die neue Option für den ersten Start nun . sda1und nicht nvme0n1p4. sda1ein externes Laufwerk, von dem ich auf keinen Fall starten möchte. Warum wurde das als Standard verwendet??

  • Welche Änderung fehlt, damit von der neuen Partition gebootet wird?
  • Muss ich vor dem Neustart das UUIDof in fstab ändern?/boot
  • Benötige ich dafür eine separate Partition /boot/efi?

Antwort1

/bootSowohl als auch als separate Dateisysteme zu haben /boot/efi, ist übertrieben, aber:

  • sehr alte BIOS-basierte Systeme benötigen möglicherweise eine separate /bootPartition, um BIOS-Einschränkungen zu vermeiden
  • Alle Systeme, die im UEFI-Stil booten, benötigen /boot/efieine entsprechende ESP-Partition, da die Firmware die Bootloaderdatei dort erwartet.
  • Wenn Sie über ein separates unverschlüsseltes Dateisystem verfügen, /bootkönnen Sie jede vom Root-Dateisystem unterstützte Verschlüsselungsmethode verwenden cryptsetup, anstatt der begrenzteren Anzahl von Verschlüsselungen, die von GRUB verstanden werden.

Die Standardpartitionierung eines modernen Debian/Ubuntu verfügt über beide als separate Partitionen, sodass die Standardkonfiguration die größtmögliche Bandbreite an Systemen abdecken kann.

Wie in den Kommentaren von oldfred erwähnt, identifiziert UEFI die zu verwendende ESP-Partition durch eine partitionsspezifische GUID in der GPT-Partitionstabelle. Diese GUID ist in Linux als PARTUUID bekannt. lsblk -o +partuuidwird sie anzeigen.

Ihr efibootmgrBefehl war fast korrekt. Um die UbuntuNew-Startoption mit der richtigen Festplatte zu erstellen, hätten Sie Folgendes verwenden sollen:

sudo efibootmgr -c -d /dev/nvme0n1 -L ubuntuNew -l \\EFI\\UBUNTU\\SHIMX64.EFI

efibootmgrsucht die PARTUUID selbst und verwendet sie automatisch, um den neuen Starteintrag zu erstellen. Sie müssen nur die Festplatte angeben (es sei denn, die Festplatte enthält mehrere EFI-Systempartitionen).

Sobald shimx64.efigeladen wurde grubx64.efi, wird es auf Systemen, die im Debian/Ubuntu-Stil konfiguriert sind, grub.cfgim selben Verzeichnis wie gelesen grubx64.efi. Diese Datei enthält nur wenige Zeilen, die die Dateisystem-UUID des Dateisystems identifizieren, das das /bootVerzeichnis enthält (ob es sich um eine separate Partition oder nur um ein normales Verzeichnis im Root-Dateisystem handelt). Daher können Debian/Ubuntu-SystemestetsDie „Haupt“-GRUB-Konfigurationsdatei sollte unter vorhanden sein /boot/grub/grub.cfg, unabhängig davon, ob das System BIOS oder UEFI verwendet. Wenn Sie eine große Anzahl von Systemen unterschiedlichen Alters haben, ist dies praktisch.

Als Referenz: RedHat 7 und 8 haben die tatsächliche GRUB-Konfiguration auf /boot/grub2/grub.cfgBIOS-Systemen bei und /boot/efi/EFI/redhat/grub.cfgauf UEFI-Systemen bei .

Jedoch/bootWenn Sie und zusammenführen möchten /boot/efi, müssen Sie einige Dinge beachten:

  • Der angegebene Bootloaderpfad efibootmgrbasiert auf dem Stamm des ESP-Dateisystems. Ursprünglich beginnt dieser Pfad bei /boot/efiund bezieht sich daher \\EFI\\UBUNTU\\SHIMX64.EFIauf /boot/efi/EFI/UBUNTU/SHIMX64.EFI, wie von Linux aus gesehen. Wenn Sie nur verwenden /boot, müssen Sie entweder das UBUNTU-Verzeichnis eine Ebene nach oben verschieben oder den Bootloaderpfad als angeben \\EFI\\EFI\\UBUNTU\\SHIMX64.EFI.
  • /bootmuss etwas sein, das von GRUB verstanden wird, damit es die Kernel- und Initramfs-Dateien von dort laden kann. Die UEFI-Version von GRUB in Ubuntu versteht definitiv ext2 und vfat; wenn Sie also in eine einzelne vfat-Partition zusammenführen /boot, /boot/efiwird GRUB keine Probleme haben. Sie können ext2 nicht verwenden, da die Firmware SHIMX64.EFI und GRUBX64.EFI von dieser Partition lesen muss und die typische UEFI-Firmware ext2 nicht verstehen kann.
  • Wird beim Booten /bootnur von GRUB benötigt, nicht vom Linux-Kernel: Sie können es /bootunmounten und das System würde trotzdem einwandfrei booten. Sie sollten es aber unmounten, /bootdamit Kernel-Updates normal durchgeführt werden können. (Oder wenn Sie es wirklich verbergen möchten, indem Sie es unmounten, können Sie Skripte hinzufügen, um /etc/kernel/pre*.d/es automatisch zu mounten, bevor Kernel-Updates installiert werden, und um /etc/kernel/post*.des wieder zu unmounten, nachdem die Installation/Entfernung eines bestimmten Kernel-Pakets abgeschlossen ist.)

Der Bootloader wird oft als „beängstigend und gefährlich“ empfunden, wenn Sie die Anforderungen nicht genau kennen. Andererseits ist er normalerweise ziemlich eigenständig, sodass Probleme, die nur mit dem Bootloader zusammenhängen, normalerweise nicht so schwer zu beheben sind ... sobald Sie die erste Hürde überwunden haben, das System von einem externen Medium zu booten, können Sie mit der Behebung beginnen. Ich würde nicht sagen, dass ein System mit einem nicht funktionierenden Bootloader „erledigt“ ist: Es braucht nur ein wenig externe Hilfe.

Antwort2

Der Bootloader sucht nach dem, was Sie aktuell gemountet haben /boot/efi. Wenn Sie also diese Partition nicht auch vergrößern möchten, können Sie die Partition so belassen, wie sie ist, und nur eine kleine Änderung an einer Datei vornehmen, wie unten beschrieben.

Vorbereiten der neuen Bootpartition

  1. Erstellen Sie eine neue ext2Partition mit der gewünschten Größe. Diese Partition benötigt kein Boot-Flag – Ihre EFI-Partition ist der Einstiegspunkt und wird an diese neue Partition delegiert.
  2. Hängen Sie die neue Partition irgendwo ein. /newBootZum Beispiel
  3. Kopieren Sie Ihre Dateien von der alten Bootpartition, zum Beispiel mitrsync --recursive --delete --archive /boot/ /newBoot/
  4. Löschen Sie den Inhalt von /newBoot/efi/, hier war das nur ein Ordner: rm -rf /newBoot/efi/EFI/. Löschen Sie nicht newBoot/efi/. Wir wollen den alten efiOrdner dort mounten.

Weisen Sie efian, die neue Partition zu verwenden

Ermitteln Sie /newBootdie UUID von :

$ lsblk -e 7 -o name,fstype,size,fsused,label,partlabel,mountpoint,uuid,partuuid
NAME                                          FSTYPE        SIZE FSUSED LABEL     PARTLABEL            MOUNTPOINT           UUID                                   PARTUUID
nvme0n1                                                   931.5G                                                                                                   
├─nvme0n1p1                                   vfat          512M   5.3M           EFI System Partition /boot/efi            FD0E-EECA                              587cf214-f068-4879-a833-9dffa5ec6e3d
├─nvme0n1p2                                   ext2          488M 313.7M                                /boot                606a1976-d1c2-4246-a256-a8afddb04f84   2e10e277-560f-4f5e-abce-1dce5187a7f0
├─nvme0n1p3                                   crypto_LUKS 927.7G                                                            e7f674b8-4bec-4502-a1e5-0e93aa34786f   2fed2ecb-b548-479b-aa3f-7f1bbfb9981f
│ └─sda3_crypt                                LVM2_member 927.7G                                                            9tx8Yv-XDCR-RmGf-fmXo-WiX2-SDpG-xH1si4 
│   ├─ubuntu--gnome--vg-root                  ext4        911.6G 734.2G                                /                    1cccfb0a-69da-4246-a071-52f882681418   
│   └─ubuntu--gnome--vg-swap_1                swap         15.8G                                       [SWAP]               e3facfb8-db2e-426d-aef4-b6c81004fd6f   
└─nvme0n1p4                                   ext2          1.5G        newBoot   newBoot                                   5aca79e7-b740-46d3-bc76-aa7e8b8b93da   9e8baf2f-2118-4042-9c47-7ffb824ada52

Bearbeiten Sie /boot/efi/EFI/ubuntu/grub.cfges entsprechend und ersetzen Sie die alte aktuelle UUID durch die neue:

# cat /boot/efi/EFI/ubuntu/grub.cfg
# search.fs_uuid 606a1976-d1c2-4246-a256-a8afddb04f84 root 
search.fs_uuid 5aca79e7-b740-46d3-bc76-aa7e8b8b93da root 
set prefix=($root)'/grub'
configfile $prefix/grub.cfg

Beenden

Jetzt sollte das System bereits von der neuen Partition booten, /boot/wäre aber nach dem Booten von der neuen Partition die alte. Bearbeiten Sie /etc/fstabes so, dass Systemupdates alle Dateien an ihrem Platz finden:

# UUID=606a1976-d1c2-4246-a256-a8afddb04f84 /boot           ext2    defaults        0       2
UUID=5aca79e7-b740-46d3-bc76-aa7e8b8b93da /boot           ext2    defaults        0       2

Die /boot/efiZeile in /etc/fstabbleibt wie sie war:

UUID=FD0E-EECA  /boot/efi       vfat    umask=0077      0       1

verwandte Informationen