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é /newBoot
y 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 /boot
carpeta 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 lsblk
y efibootmgr -v
(gracias @oldfred), la nueva primera opción de arranque querría usar sda1
y no nvme0n1p4
. sda1
Es 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
UUID
configuración/boot
de fstab antes de reiniciar? - ¿Necesito una partición separada
/boot/efi
?
Respuesta1
Tener ambos /boot
sistemas /boot/efi
de archivos separados es excesivo, pero:
- Los sistemas muy antiguos basados en BIOS pueden necesitar una
/boot
partición separada para evitar las limitaciones del BIOS. - Cualquier sistema que arranque en estilo UEFI necesitará
/boot/efi
una partición ESP equivalente, porque eso es donde el firmware espera encontrar el archivo del gestor de arranque. - tener un cifrado separado
/boot
permitirá el uso de cualquier método de cifrado admitido encryptsetup
el 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 +partuuid
lo mostrará.
Tu efibootmgr
orden 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
efibootmgr
Buscará 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.efi
cargado grubx64.efi
, en sistemas configurados al estilo Debian/Ubuntu, se leerá grub.cfg
en 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 /boot
directorio (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.cfg
sistemas estilo BIOS y en /boot/efi/EFI/redhat/grub.cfg
sistemas UEFI.
Sin embargo, si desea fusionar /boot
y /boot/efi
, hay algunas cosas que debe tener en cuenta:
- La ruta del cargador de arranque proporcionada
efibootmgr
se basa en la raíz del sistema de archivos ESP. Originalmente, esa ruta comienza en/boot/efi
, por lo que\\EFI\\UBUNTU\\SHIMX64.EFI
se refiere a la/boot/efi/EFI/UBUNTU/SHIMX64.EFI
vista 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
. /boot
debe 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/boot
y/boot/efi
en 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,
/boot
solo lo necesita GRUB, no el kernel de Linux: puede dejarlo/boot
desmontado y el sistema aún arrancará bien. Pero querrás mantenerlo/boot
montado 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*.d
desmontarlo 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
- Cree una nueva
ext2
partició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. - Monte la nueva partición en algún lugar.
/newBoot
Por ejemplo - Copie sus archivos desde la partición de inicio anterior, por ejemplo usando
rsync --recursive --delete --archive /boot/ /newBoot/
- Elimina el contenido de
/newBoot/efi/
, aquí solo había una carpeta:rm -rf /newBoot/efi/EFI/
. No borresnewBoot/efi/
. Queremos montar laefi
carpeta antigua allí.
Dile efi
que use la nueva partición.
Descubra /newBoot
el 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.cfg
en 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/fstab
para 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/efi
línea /etc/fstab
permanece como estaba:
UUID=FD0E-EECA /boot/efi vfat umask=0077 0 1