
¿Cómo iniciar vmlinuz-linux desde efi shell? Salto al ESP y escribo vmlinuz-linux
(vmlinuz-linux está en el ESP) pero dice vmlinuz-linux isn't recognized as an internal or external command, operable program, or batch file
, ¿por qué tengo que iniciar un cargador de arranque primero? No lo entiendo.
Respuesta1
Solo tuve que escribir /vmlinuz-linux root=PARTUUID=3518bb68-d01e-45c9-b973-0b5d918aae96 initrd=/initramfs-linux.img
desde estohttps://wiki.archlinux.org/index.php/EFISTUB#Booting_EFISTUBpero tuve que eliminar la barra diagonal /
antes vmlinuz-linux
para que funcionara.
Respuesta2
Si necesita un cargador de arranque o no depende de si su versión particular del kernel de Linux es compatible con EFI BOOT STUB.
Consulte lo siguiente para obtener más información:https://www.kernel.org/doc/Documentation/efi-stub.txt
Respuesta3
IIRC, el shell EFI no iniciará archivos como programas si sus nombres no terminan en .efi
. Por lo tanto, primero debe cambiar el nombre del archivo del kernel para que termine en .efi
.
Si no puede cambiar el nombre del archivo del kernel, aún puede iniciar un kernel usando el cargador de código auxiliar EFI a través de otro programa de administración de arranque, como gummiboot/systemd-boot o rEFInd. A estas herramientas no les importa la extensión del nombre del archivo, al menos no tanto como al shell. (La función de escaneo automático de rEFInd coincide con *.efi
, vmlinuz*
, bzImage*
y kernel*
, pero la configuración de inicio manual para ambos programas funcionará con cualquier nombre de archivo).
Además, como dice fpmurphy1, el kernel debe compilarse con soporte para stub EFI. La mayoría de las distribuciones han incluido este soporte en sus kernels 3.3.0 y posteriores, pero puede que no sea 100% universal, especialmente si usted mismo compila su kernel. (La última vez que verifiqué, la compatibilidad con el código auxiliar de EFI no formaba parte de la configuración predeterminada del kernel para la fuente del kernel obtenida de kernel.org
).
Respuesta4
La mejor descripción está en Documentation/efi-stub.txt
este ejemplo:
fs0:> bzImage.efi console=ttyS0 root=/dev/sda4
No da más detalles sobre ese fs0:>
mensaje, ni menciona (U)EFI Shell para reemplazar un cargador de arranque "convencional". En mi caso, después de iniciar Uefi Shell, aparece Shell>
un mensaje y primero tengo que elegir un sistema de archivos ESP/FAT. (Puedes tener más de un ESP incluso por unidad)
El segundo punto es agregar la extensión ".efi" a bzImage. No tengo que hacer eso (AMI 2.7). Entonces se puede reducir a:
fsX:> bzImage root=/dev/sda4 [initrd=...] [...]
Otra confusión pueden ser las barras diagonales de estilo DOS y la necesidad de rutas absolutas en .nsh
los scripts. Con las imágenes en una carpeta propia "distro", la línea se ve así:
distro\bzImage initrd=distro\initrd root=/dev/sdaX
Tenga en cuenta que el parámetro raíz tiene barras diagonales; lo utiliza el kernel, no Uefi Shell.