2 votes

Ajouter une option de démarrage supplémentaire à Grub pour les extensions X32 ?

Je travaille sur un projet libre/open source. Un responsable Debian a signalé une défaillance sous X32 (ce n'est pas une faute de frappe ; ce n'est pas X86), et j'essaie de mettre en place un environnement de test pour la reproduire.

D'après la page d'accueil de Debian Wiki des ports X32 J'ai besoin d'activer les extensions X32 dans le noyau. Pour ce faire, je dois ajouter l'entrée Grub. Voici ce que j'ai ajouté à /etc/default/grub et elle est tirée de la page wiki (sauf que j'ai commenté l'entrée par défaut).

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

J'ai ensuite effectué une update-grub par la page wiki et vérifié les entrées dans le menu compilé (voir ci-dessous).

Lorsque je démarre le système, l'option ne semble pas être disponible dans le menu principal ou dans les options avancées :

Missing Grub entry for X32

Le site web de Debian Grub2 laisse beaucoup à désirer. Elle ne traite que de la façon de coloriser les entrées de menu (ce genre de choses ne s'invente pas...).

Je m'attendais à ce qu'il en soit ainsi après avoir suivi la prescription fournie par les médecins :

  • Debian GNU/Linux
  • Debian GNU/Linux (X32)
  • Options avancées
  • Test de mémoire (memtest86+)
  • Test de mémoire (memtest86+, série)
  • ...

Comment ajouter des options d'amorçage X32 à Grub, lui donner un nom comme "Debian GNU/Linux (X32)", s'assurer qu'il s'agit d'une option d'amorçage pour le noyau pendant l'amorçage, et s'assurer que les changements survivent après un démarrage à froid ? upgrade o dist-upgrade ?


Conformément à la réponse de Marius ci-dessous, j'ai ajouté ce qui suit à /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
}

Il fournit l'entrée nommée comme prévu, mais il en résulte une erreur de démarrage :

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

Je pense que c'est dû au copier/coller dans Emacs (qui supprime apparemment les espaces ???). Je l'ai donc changé en linux /boot/vmlinuz-4.2.0-1-amd64... . Il en est résulté une panique du noyau :

enter image description here

1voto

Vous pouvez ajouter foo=bar at Grub

A partir d'un terminal :

gksudo gedit /etc/default/grub

et entrez votre mot de passe.

Trouvez la ligne commençant par GRUB_CMDLINE_LINUX_DEFAULT et ajoutez foo=bar à la fin. Par exemple :

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash foo=bar"

Enregistrez le fichier et fermez l'éditeur.

Enfin, démarrez un terminal et exécutez :

sudo update-grub

pour mettre à jour le fichier de configuration de Grub (vous devrez probablement entrer votre mot de passe).

Au prochain redémarrage, le noyau doit être démarré avec le paramètre boot

Source : Grub forums

1voto

MariusMatutiae Points 45233

Si j'ai bien compris, vous voulez trouver un moyen de choisir de démarrer avec/sans X32. Vous pouvez le faire de deux manières distinctes :

  1. Selon les besoins. Démarrer, dans le menu de démarrage, appuyer sur e para edit , faire défiler jusqu'à la ligne

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

et la modifier pour qu'elle devienne

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

Poursuivre le démarrage.

  1. Systématiquement. Dans le répertoire /etc/grub.d/ il y a une entrée, 40_custom qui est utilisé exactement à cette fin. Vous devrez y copier une section du fichier /boot/grub/grub.cfg : la partie comprise entre menuentry Debian GNU/Linux... et la fin des brèches, } . Après l'inclusion, modifiez la ligne

     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

N'oubliez pas non plus de modifier le nom de l'entrée de menu, en 40_custom à quelque chose de différent de votre première entrée, sinon vous ne pourrez pas distinguer les deux entrées.

Exécuter update-grub et vous avez terminé.

1voto

jarno Points 275

Si vous voulez l'option uniquement pour le dernier noyau dans le menu de haut niveau, ne mettez pas "syscall.x32=y" dans /etc/default/grub . Au lieu de cela, trouvez

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

en /etc/grub.d/10_linux et ajoutez ceci à la suite :

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

Exécutez ensuite update-grub pour mettre à jour /boot/grub/grub.cfg en conséquence.

De cette façon, j'ai pu démarrer le dernier noyau avec l'option "syscall.x32=y", mais je ne vois pas de différence avec le démarrage sans cette option. C'est dans Xubuntu 15.10 64-bit. Pour ce qui est de la configration qui survit après la mise à jour du paquet Grub, je ne sais pas ; peut-être que l'installation remarque un fichier de configuration personnalisé et vous donne la possibilité de le conserver. Au moins, cela survit aux mises à jour du noyau.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X