
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/grub
y 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-grub
en 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:
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 upgrade
o 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:
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:
Según surja la necesidad. Arranque, en el menú de inicio presione epara
edit
, desplácese hacia abajo hasta la línealinux /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.
Sistemáticamente. En el directorio
/etc/grub.d/
hay una entrada ,40_custom
que sirve precisamente para esto. Tendrás que copiar en él una sección del archivo/boot/grub/grub.cfg
: la parte incluida entremenuentry 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_custom
algo diferente de su primera entrada, de lo contrario no podrá distinguir las dos entradas.
Corre update-grub
y 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_linux
esto después:
linux_entry "${OS} (X32)" "${version}" simple \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} syscall.x32=y"
Luego ejecute update-grub
para actualizar /boot/grub/grub.cfg
en 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=bar
en 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