Preparando la nueva partición de arranque

Preparando la nueva partición de arranque

De las preguntas existentes,esteSe parece más a lo que estoy haciendo, solo que intento hacer crecer mi partición y no entiendo por qué hay diferentes particiones montadas en /boot/ y /boot/efi y cómo proceder sin dispararme.

Hasta ahora creé una nueva partición, la monté /newBooty lo hice sudo rsync -a /boot/ /newBoot/, así que supongo que tengo todos los archivos relevantes en la nueva partición para cambiar.

$ 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)

Entonces, aunque no entiendo por qué hay dos particiones involucradas en la /bootcarpeta actual, creo que una también debería funcionar. Al menos así se lee en la respuesta seleccionada de las preguntas vinculadas anteriormente, ¿verdad?

¿Ahora qué falta? /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
...

Ahora, según lsblky efibootmgr -v(gracias @oldfred), la nueva primera opción de arranque querría usar sda1y no nvme0n1p4. sda1Es un disco externo desde el que ciertamente no quiero arrancar. ¿Por qué optó por eso por defecto?

  • ¿Qué cambio falta para que arranque desde la nueva partición?
  • ¿Tengo que cambiar la UUIDconfiguración /bootde fstab antes de reiniciar?
  • ¿Necesito una partición separada /boot/efi?

Respuesta1

Tener ambos /bootsistemas /boot/efide archivos separados es excesivo, pero:

  • Los sistemas muy antiguos basados ​​en BIOS pueden necesitar una /bootpartición separada para evitar las limitaciones del BIOS.
  • Cualquier sistema que arranque en estilo UEFI necesitará /boot/efiuna partición ESP equivalente, porque eso es donde el firmware espera encontrar el archivo del gestor de arranque.
  • tener un cifrado separado /bootpermitirá el uso de cualquier método de cifrado admitido en cryptsetupel sistema de archivos raíz, en lugar del conjunto más limitado de cifrados que entiende GRUB.

La partición predeterminada de un Debian/Ubuntu moderno tiene ambas particiones separadas, por lo que la configuración predeterminada puede cubrir la gama más amplia posible de sistemas.

Como se menciona en los comentarios de oldfred, UEFI identifica la partición ESP que utilizará un GUID exclusivo de la partición en la tabla de particiones GPT. Ese GUID se conoce como PARTUUID en Linux. lsblk -o +partuuidlo mostrará.

Tu efibootmgrorden fue casi correcta. Para crear la opción de arranque ubuntuNew usando el disco correcto, debería haber usado:

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

efibootmgrBuscará el PARTUUID por sí solo y lo usará automáticamente para crear la nueva entrada de inicio. Solo necesitará especificar el disco (a menos que el disco tenga varias particiones del sistema EFI).

Una vez shimx64.eficargado grubx64.efi, en sistemas configurados al estilo Debian/Ubuntu, se leerá grub.cfgen el mismo directorio que grubx64.efi. Ese archivo contiene solo unas pocas líneas que identifican el UUID del sistema de archivos que contiene el /bootdirectorio (ya sea una partición separada o simplemente un directorio normal en el sistema de archivos raíz). Como resultado, los sistemas Debian/Ubuntu puedensiempretenga el archivo de configuración "principal" de GRUB en /boot/grub/grub.cfg, sin importar si el sistema usa BIOS o UEFI. Si tiene una gran cantidad de sistemas de diferentes edades, es conveniente.

Como referencia, RedHat 7 y 8 tienen la configuración GRUB real en /boot/grub2/grub.cfgsistemas estilo BIOS y en /boot/efi/EFI/redhat/grub.cfgsistemas UEFI.

Sin embargo, si desea fusionar /booty /boot/efi, hay algunas cosas que debe tener en cuenta:

  • La ruta del cargador de arranque proporcionada efibootmgrse basa en la raíz del sistema de archivos ESP. Originalmente, esa ruta comienza en /boot/efi, por lo que \\EFI\\UBUNTU\\SHIMX64.EFIse refiere a la /boot/efi/EFI/UBUNTU/SHIMX64.EFIvista desde Linux. Si usa solo /boot, necesitará mover el directorio UBUNTU un nivel arriba o especificar la ruta del cargador de arranque como \\EFI\\EFI\\UBUNTU\\SHIMX64.EFI.
  • /bootdebe ser algo que GRUB entienda, para que pueda cargar los archivos kernel e initramfs desde allí. La versión UEFI de GRUB de Ubuntu definitivamente entenderá ext2 y vfat; entonces, si fusiona /booty /boot/efien una sola partición vfat, GRUB no tendrá problemas. No puede usar ext2 porque el firmware necesitará leer SHIMX64.EFI y GRUBX64.EFI de esa partición, y el firmware UEFI típico no podrá entender ext2.
  • En el momento del arranque, /bootsolo lo necesita GRUB, no el kernel de Linux: puede dejarlo /bootdesmontado y el sistema aún arrancará bien. Pero querrás mantenerlo /bootmontado para que las actualizaciones del kernel puedan ocurrir normalmente. (O si realmente desea ocultarlo dejándolo desmontado, entonces puede agregar scripts para /etc/kernel/pre*.d/montarlo automáticamente antes de que se instalen las actualizaciones del kernel y para /etc/kernel/post*.ddesmontarlo nuevamente después de que se complete la instalación/eliminación de un paquete de kernel en particular).

El gestor de arranque a menudo se percibe como "aterrador y peligroso" si no se tienen una idea clara de cuáles son sus requisitos. Por otro lado, suele ser bastante autónomo, por lo que los problemas relacionados sólo con el gestor de arranque no suelen ser tan difíciles de solucionar... una vez que haya superado el primer obstáculo de arrancar el sistema desde un medio externo, podrá empezar a solucionarlo. él. No diría que un sistema con un gestor de arranque no funcional esté "tostado": sólo necesita un poco de ayuda externa.

Respuesta2

El cargador de arranque buscará lo que tiene actualmente montado /boot/efi, por lo que si no desea hacer crecer esa partición, puede mantenerla como está y simplemente hacer un pequeño cambio en un archivo como se describe a continuación.

Preparando la nueva partición de arranque

  1. Cree una nueva ext2partición con el tamaño deseado. Esta partición no necesita un indicador de inicio: su partición efi es el punto de entrada y delegará en esta nueva partición.
  2. Monte la nueva partición en algún lugar. /newBootPor ejemplo
  3. Copie sus archivos desde la partición de inicio anterior, por ejemplo usandorsync --recursive --delete --archive /boot/ /newBoot/
  4. Elimina el contenido de /newBoot/efi/, aquí solo había una carpeta: rm -rf /newBoot/efi/EFI/. No borres newBoot/efi/. Queremos montar la eficarpeta antigua allí.

Dile efique use la nueva partición.

Descubra /newBootel UUID de:

$ 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

Edite /boot/efi/EFI/ubuntu/grub.cfgen consecuencia, reemplazando el antiguo UUID actual por el nuevo:

# 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

Terminando

Ahora el sistema ya debería arrancar desde la nueva partición, pero /boot/sería la antigua después de arrancar desde la nueva. Edite /etc/fstabpara que las actualizaciones del sistema encuentren todos los archivos en su lugar:

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

La /boot/efilínea /etc/fstabpermanece como estaba:

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

información relacionada