¿Agregar una opción de arranque adicional a Grub para extensiones X32?

¿Agregar una opción de arranque adicional a Grub para extensiones X32?

Trabajo con un proyecto de código abierto/libre. Un mantenedor de Debian informó una falla en X32 (no es un error tipográfico; no es X86) y estoy intentando configurar un entorno de prueba para reproducirlo.

Según DebianWiki de puertos X32, Necesito habilitar las extensiones X32 en el kernel. Para hacer eso, necesito agregar la entrada Grub. A continuación se muestra lo que agregué /etc/default/gruby está tomado de la página wiki (excepto que comenté la entrada predeterminada).

# GRUB_CMDLINE_LINUX_DEFAULT="syscall.x32=y quiet"
GRUB_CMDLINE_LINUX="syscall.x32=y"

Luego realicé una búsqueda update-gruben la página wiki y verifiqué las entradas en el menú compilado (ver más abajo).

Cuando inicio el sistema, la opción no parece estar disponible en el menú principal ni en las opciones avanzadas:

Falta la entrada de Grub para X32

Debiangrub2docs deja mucho que desear. Sólo trata sobre cómo colorear las entradas del menú (no puedes inventar este tipo de cosas...).

Esperaba lo siguiente después de seguir la prescripción proporcionada por los médicos:

  • DebianGNU/Linux
  • Debian GNU/Linux (X32)
  • Opciones avanzadas
  • Prueba de memoria (memtest86+)
  • Prueba de memoria (memtest86+, serie)
  • ...

¿Cómo agrego opciones de arranque X32 a Grub, le doy un nombre como "Debian GNU/Linux (X32)", me aseguro de que sea una opción de arranque para el kernel durante el arranque y me aseguro de que los cambios sobrevivan después de un upgradeo dist-upgrade?


Según la respuesta de Marius a continuación, agregué lo siguiente a /etc/grub.d/40_custom:

menuentry 'Debian GNU/Linux (X32)' --class debian --class gnu-linux --class gnu --class os
  $menuentry_id_option 'gnulinux-simple-a4af7dfc-640c-4aa8-bf0b-068af3d72b01' {
    linux/boot/vmlinuz-4.2.0-1-amd64 root=UUID=a4af7dfc-640c-4aa8-bf0b-068af3d72b01 ro syscall.x32=y quiet
}

Proporciona la entrada nombrada como se esperaba, pero genera un error de inicio:

error: can't find command: `linux/boot/vmlinuz-4`

Creo que eso se debió a copiar/pegar en Emacs (¿aparentemente elimina los espacios en blanco???). Entonces lo cambié a linux /boot/vmlinuz-4.2.0-1-amd64.... Resultó en pánico en el núcleo:

ingrese la descripción de la imagen aquí

Respuesta1

Si te he entendido bien, querrás encontrar una manera de elegir si deseas arrancar con o sin X32. Puedes hacerlo de dos maneras distintas:

  1. Según surja la necesidad. Arranque, en el menú de inicio presione epara edit, desplácese hacia abajo hasta la línea

    linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff quiet splash
    

y modificarlo para

  linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff syscall.x32=y quiet 

Ahora continúa arrancando.

  1. Sistemáticamente. En el directorio /etc/grub.d/hay una entrada , 40_customque sirve precisamente para esto. Tendrás que copiar en él una sección del archivo /boot/grub/grub.cfg: la parte incluida entre menuentry Debian GNU/Linux...y el final de las llaves, }. Después de la inclusión, modifique la línea.

     linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff quiet splash
    

en

     linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff syscall.x32=y quiet

Además, recuerde cambiar el nombre de la entrada del menú a 40_customalgo diferente de su primera entrada, de lo contrario no podrá distinguir las dos entradas.

Corre update-gruby listo.

Respuesta2

Si desea la opción solo para el último kernel en el menú de nivel superior, no coloque "syscall.x32=y" en /etc/default/grub. En lugar de eso, encuentra

linux_entry "${OS}" "${version}" simple \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"

y agrega /etc/grub.d/10_linuxesto después:

linux_entry "${OS} (X32)" "${version}" simple \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} syscall.x32=y"

Luego ejecute update-grubpara actualizar /boot/grub/grub.cfgen consecuencia.

De esta manera podría arrancar el último kernel con la opción "syscall.x32=y", pero no noto diferencia con arrancar sin ella. Eso es en Xubuntu 15.10 de 64 bits. En cuanto a la configuración que sobrevive después de la actualización del paquete grub, no lo sé; tal vez la instalación detecte un archivo de configuración personalizado y le dé la opción de conservarlo. Al menos esto sobrevive a las actualizaciones del kernel.

Respuesta3

Podrías agregar foo=baren grub

Desde una terminal ejecuta:

gksudo gedit /etc/default/grub

e ingresa tu contraseña.

Busque la línea que comienza con GRUB_CMDLINE_LINUX_DEFAULT y agregue foo=bar hasta su final. Por ejemplo:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash foo=bar"

Guarde el archivo y cierre el editor.

Finalmente, inicia una terminal y ejecuta:

sudo update-grub

para actualizar el archivo de configuración de GRUB (probablemente necesite ingresar su contraseña).

En el próximo reinicio, el kernel debería iniciarse con el parámetro de arranque.

Fuente: foros de Grub

información relacionada