
Hola, tengo un gran problema porque ves que cuando lo uso efibootmgr
para crear una entrada de inicio simplemente crea un carácter japonés que no se puede iniciar en el menú de inicio de EFI y esto es muy malo.
Por otro lado, cuando uso bcfg en el shell EFI, funciona bien. El comando efibootmgr utilizado es: efibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd"
mientras que el bcfg es:bcfg boot add 3 fs0:\EFI\refind\refind_x64.efi "rEFInd"
Cuando hago bcfg boot dump -v
la diferencia entre las entradas efibootmgr y bcfg es la siguiente:
La DevPath
entrada realizada para bcfg es PciRoot(0x0)/Pci.....\EFI\refind\refind_x64.efi
mientras que para efiboomgr solo diceVenHw(99E275E7-75AO-4B37)
¿Tiene alguna idea sobre cómo hacer que efibootmgr funcione? O, alternativamente, ¿qué opción en la llamada al comando debo usar para especificar los parámetros del kernel con bcfg?
Respuesta1
Si efibootmgr
está creando una entrada como la que usted describe ( VenHw(99E275E7-75AO-4B37)
), entonces suena como un error en efibootmgr
el firmware. Dicho esto, considere el efibootmgr
comando que especificó:
efibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd"
Hay dos cosas que son inusuales en esto:
- Dispositivo de disco- La mayoría de los dispositivos de disco en Linux tienen nombres con la forma
/dev/sd?
, donde?
hay una letra dea
arriba. Algunos dispositivos, como algunas tarjetas SSD, tienen nombres de archivos que adoptan otras formas, como/dev/mmcblk0
(eso proviene de la memoria y puede que no sea del todo correcto). No recuerdo haber visto nunca un nombre de dispositivo como/dev/nvme0n1
. Eso no quiere decir que esté mal, pero al menos es inusual y deberías volver a comprobarlo. Tendría especial cuidado de no incluir el número de partición; para eso está la-p
opciónefibootmgr
. - Especificación de archivo- Las versiones anteriores de
efibootmgr
requieren que los archivos se especifiquen usando la sintaxis EFI, es decir, con barras invertidas (\
) en lugar de barras diagonales (/
) que separan las entradas del directorio. Debido a que los shells de Linux generalmente tratan las barras invertidas de manera única, esto también requiere citar el nombre de ruta completo o duplicar las barras invertidas, por lo que deberá especificar-l \\EFI\\refind\\refind_x64.efi
o-l "\EFI\refind\refind_x64.efi
. He oído que las versiones más recientes deefibootmgr
aceptarán una forma más tradicional de Unix/Linux y se "traducirán" internamente, pero no sé exactamente cuándo se agregó esa característica y no has dicho qué versión de Ubuntu tienes. re usando. Por lo tanto, le recomiendo que utilice barras invertidas duplicadas o entre comillas en lugar de barras.
Como cuestión práctica, por supuesto, si tienes una entrada funcional a través de bcfg
, no debería haber necesidad de hacer nada más con efibootmgr
. Supongo que lo preguntas porquedeberíafunciona y porque quieres poder realizar este tipo de mantenimiento desde Ubuntu.
Respuesta2
Tuve exactamente el mismo problema. Intenté crear una entrada de arranque con efibootmgr usando el disco nvme. No arrancó y el menú de arranque en la BIOS solo mostraba caracteres japoneses (¿o chinos?) para esa entrada. La inspección de las entradas de arranque de otro sistema operativo mostró que la entrada recién creada era del tipo VenHw.
Sin embargo, el problema era que el número de partición era incorrecto. Tenía una partición raíz y algunas otras en volúmenes lvm cifrados. Así que especifiqué esa partición cifrada para efibootmgr en lugar de la partición /boot que se suponía que debía especificar. Probablemente este no sea tu caso, pero aún así escribo esto en caso de que alguien más encuentre este problema por el mismo motivo. Verifique dos veces su número de partición y otros parámetros de efibootmgr.
Respuesta3
Debe editar el archivo refind.conf y cambiar la ruta a PciRoot. Escriba la descripción completa del dispositivo para que pueda ingresarla en el archivo de configuración. Solo asegúrate de elegir el PciRoot correcto;)