#1 Le 19/11/2015, à 15:05
- batmad
Ne faire apparaitre GRUB que si on appuie sur une touche
Bonjour à tous,
J'ai depuis peu changé de machine, avec une carte mère récente. J'ai un dual boot windows et ubuntu sur le même disque dur. J'ai découvert avec joie que ma carte mère pouvait servir de boot manager et appeler les boot loaders de windows ou ubuntu.
Donc en gros ça me donnait un comportement du type:
-Je ne touche à rien au démarrage -> ça boote sur ubuntu
-J'appuie sur F11 -> le choix des boot loaders s'affiche et je choisis entre windows et ubuntu.
Le problème est que la carte mère semble galérer avec le boot loader de windows et une fois sur 2 quand je démarre windows tous les périphériques USB sont désactivés...
Je me suis donc dis que j'allais faire ça plus traditionnellement et laisser GRUB gérer le dual boot, mais j'aimerais reproduire avec GRUB le comportement décrit ci dessus (sans le bug usb bien entendu )
Existe t'il un moyen de faire en sorte que, si je ne touche à rien, grub ne s'affiche même pas et boote directement sur ubuntu, et si j'appuie sur une touche au démarrage, grub s'affiche et me laisse choisir mon OS et les options genre memtest?
merci à tous d'avance pour vos lumières!
Hors ligne
#2 Le 19/11/2015, à 16:30
- Arbiel
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Bonjour
Oui, tout cela me semble assez facile. Peux-tu afficher ton fichier de configuration grub (/boot/grub/grub.cfg) pour que je puisse t'indiquer exactement ce que tu peux faire pour obtenir le comportement que tu souhaites ?
Arbiel
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#3 Le 19/11/2015, à 16:37
- batmad
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
hop:
(je précise qu'il s'agit de windows 7, donc son boot loader n'est pas sur la racine du disque ni sur la partition de l'installation de W7 a proprement parler, à l'installation il créé une petite partition dédiée au boot manager/loader, enfin il me semble c'est un peu flou tout ça pour moi qui était encore sous XP il y a un mois )
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function recordfail {
set recordfail=1
if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_gpt
insmod ext2
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 3ef187cf-7506-4543-9985-7f9eadb196d5
else
search --no-floppy --fs-uuid --set=root 3ef187cf-7506-4543-9985-7f9eadb196d5
fi
font="/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=fr_FR
insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=10
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=10
fi
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 44,0,30,0; then
clear
fi
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
set gfxpayload="${1}"
if [ "${1}" = "keep" ]; then
set vt_handoff=vt.handoff=7
else
set vt_handoff=
fi
}
if [ "${recordfail}" != 1 ]; then
if [ -e ${prefix}/gfxblacklist.txt ]; then
if hwmatch ${prefix}/gfxblacklist.txt 3; then
if [ ${match} = 0 ]; then
set linux_gfx_mode=keep
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=keep
fi
else
set linux_gfx_mode=text
fi
export linux_gfx_mode
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-3ef187cf-7506-4543-9985-7f9eadb196d5' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 3ef187cf-7506-4543-9985-7f9eadb196d5
else
search --no-floppy --fs-uuid --set=root 3ef187cf-7506-4543-9985-7f9eadb196d5
fi
linux /boot/vmlinuz-3.19.0-33-generic.efi.signed root=UUID=3ef187cf-7506-4543-9985-7f9eadb196d5 ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.19.0-33-generic
}
submenu 'Options avancées pour Ubuntu' $menuentry_id_option 'gnulinux-advanced-3ef187cf-7506-4543-9985-7f9eadb196d5' {
menuentry 'Ubuntu, avec Linux 3.19.0-33-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-33-generic-advanced-3ef187cf-7506-4543-9985-7f9eadb196d5' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 3ef187cf-7506-4543-9985-7f9eadb196d5
else
search --no-floppy --fs-uuid --set=root 3ef187cf-7506-4543-9985-7f9eadb196d5
fi
echo 'Chargement de Linux 3.19.0-33-generic…'
linux /boot/vmlinuz-3.19.0-33-generic.efi.signed root=UUID=3ef187cf-7506-4543-9985-7f9eadb196d5 ro quiet splash $vt_handoff
echo 'Chargement du disque mémoire initial…'
initrd /boot/initrd.img-3.19.0-33-generic
}
menuentry 'Ubuntu, with Linux 3.19.0-33-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-33-generic-init-upstart-3ef187cf-7506-4543-9985-7f9eadb196d5' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 3ef187cf-7506-4543-9985-7f9eadb196d5
else
search --no-floppy --fs-uuid --set=root 3ef187cf-7506-4543-9985-7f9eadb196d5
fi
echo 'Chargement de Linux 3.19.0-33-generic…'
linux /boot/vmlinuz-3.19.0-33-generic.efi.signed root=UUID=3ef187cf-7506-4543-9985-7f9eadb196d5 ro quiet splash $vt_handoff init=/sbin/upstart
echo 'Chargement du disque mémoire initial…'
initrd /boot/initrd.img-3.19.0-33-generic
}
menuentry 'Ubuntu, with Linux 3.19.0-33-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-33-generic-recovery-3ef187cf-7506-4543-9985-7f9eadb196d5' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 3ef187cf-7506-4543-9985-7f9eadb196d5
else
search --no-floppy --fs-uuid --set=root 3ef187cf-7506-4543-9985-7f9eadb196d5
fi
echo 'Chargement de Linux 3.19.0-33-generic…'
linux /boot/vmlinuz-3.19.0-33-generic.efi.signed root=UUID=3ef187cf-7506-4543-9985-7f9eadb196d5 ro recovery nomodeset
echo 'Chargement du disque mémoire initial…'
initrd /boot/initrd.img-3.19.0-33-generic
}
menuentry 'Ubuntu, avec Linux 3.19.0-15-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-15-generic-advanced-3ef187cf-7506-4543-9985-7f9eadb196d5' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 3ef187cf-7506-4543-9985-7f9eadb196d5
else
search --no-floppy --fs-uuid --set=root 3ef187cf-7506-4543-9985-7f9eadb196d5
fi
echo 'Chargement de Linux 3.19.0-15-generic…'
linux /boot/vmlinuz-3.19.0-15-generic root=UUID=3ef187cf-7506-4543-9985-7f9eadb196d5 ro quiet splash $vt_handoff
echo 'Chargement du disque mémoire initial…'
initrd /boot/initrd.img-3.19.0-15-generic
}
menuentry 'Ubuntu, with Linux 3.19.0-15-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-15-generic-init-upstart-3ef187cf-7506-4543-9985-7f9eadb196d5' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 3ef187cf-7506-4543-9985-7f9eadb196d5
else
search --no-floppy --fs-uuid --set=root 3ef187cf-7506-4543-9985-7f9eadb196d5
fi
echo 'Chargement de Linux 3.19.0-15-generic…'
linux /boot/vmlinuz-3.19.0-15-generic root=UUID=3ef187cf-7506-4543-9985-7f9eadb196d5 ro quiet splash $vt_handoff init=/sbin/upstart
echo 'Chargement du disque mémoire initial…'
initrd /boot/initrd.img-3.19.0-15-generic
}
menuentry 'Ubuntu, with Linux 3.19.0-15-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-15-generic-recovery-3ef187cf-7506-4543-9985-7f9eadb196d5' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 3ef187cf-7506-4543-9985-7f9eadb196d5
else
search --no-floppy --fs-uuid --set=root 3ef187cf-7506-4543-9985-7f9eadb196d5
fi
echo 'Chargement de Linux 3.19.0-15-generic…'
linux /boot/vmlinuz-3.19.0-15-generic root=UUID=3ef187cf-7506-4543-9985-7f9eadb196d5 ro recovery nomodeset
echo 'Chargement du disque mémoire initial…'
initrd /boot/initrd.img-3.19.0-15-generic
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/20_memtest86+ ###
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (sur /dev/sda4)' --class windows --class os $menuentry_id_option 'osprober-efi-AC2A-1160' {
insmod part_gpt
insmod fat
set root='hd0,gpt4'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt4 --hint-efi=hd0,gpt4 --hint-baremetal=ahci0,gpt4 AC2A-1160
else
search --no-floppy --fs-uuid --set=root AC2A-1160
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
set timeout=10
fi
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
menuentry 'System setup' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
### END /etc/grub.d/30_uefi-firmware ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
Hors ligne
#4 Le 19/11/2015, à 17:00
- Arbiel
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
La commande ci-dessous, sans aucune autre manipulation (pas besoin de update-grub), a pour but de demander à grub de lancer la première entrée du menu (set timeout=0) sans le faire apparaître, sauf si la touche est "Majuscule"(--shift) est enfoncée au démarrage, auquel cas le menu de grub t'est présenté pour que tu puisses faire ton choix.
sudo cat 1>/boot/grub/custom.cfg <<<"if ! keystatus --shift; then set timeout=0; fi;"
Pour faire la même chose avec la touche "Contrôle", remplace --shift par --ctrl, touche "Alt", par --alt.
Cependant, je ne sais pas à quoi correspond la dernière ligne du menu "System setup".
L'avant dernière ligne me semble correspondre au démarrage de Windows (/EFI/Microsoft/Boot/bootmgfw.efi)
Arbiel
Dernière modification par Arbiel (Le 19/11/2015, à 17:21)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#5 Le 19/11/2015, à 18:08
- batmad
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
génial! j'essaie ça tout de suite, merci!!
Hors ligne
#6 Le 19/11/2015, à 21:54
- batmad
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Arf, malheureusement ça ne marche pas!
Ubuntu démarre et grub ne s'affiche pas, mais beau appuyer sur shift comme un bourrin rien ne se passe!
J'ai tenté un update-grub et ça ne marche toujours pas.
Un indice peut être, quand je lance
sudo cat 1>/boot/grub/custom.cfg <<<"if ! keystatus --shift; then set timeout=0; fi;"
le terminal ne me demande même pas mon mot de passe et me dit directement:
bash: /boot/grub/custom.cfg: Permission non accordée
J'ai du faire un sudo su d'abord puis lancer ta commande, là le terminal ne me dis rien du tout.
Hors ligne
#7 Le 19/11/2015, à 23:06
- Arbiel
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Peux-tu me donner le résultat de la commande
cat /boot/grub/custom.cfg
Si le fichier
/boot/grub/custom.cfg
n'existe pas, tu peux le créer à la main avec comme contenu la ligne
if ! keystatus --shift; then set timeout=0; fi;
Mais je ne vois pas pourquoi la commande que je t'ai indiquée pourrait ne pas l'avoir créé.
Arbiel
PS et pour vérifier que l'on passe bien par ce fichier, ajoute une seconde ligne
echo "grub passe bien par là où je pense" ; sleep 5;
et indique moi si le message s'affiche. Tu disposes de 5 secondes avant qu'il ne disparaisse.
Dernière modification par Arbiel (Le 19/11/2015, à 23:11)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#8 Le 20/11/2015, à 00:59
- Babdu89
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Bonsoir.
Existe t'il un moyen de faire en sorte que, si je ne touche à rien, grub ne s'affiche même pas et boote directement sur ubuntu, et si j'appuie sur une touche au démarrage, grub s'affiche et me laisse choisir mon OS et les options genre memtest?
On peut aussi , en root dans le fichier /etc/default/grub, cacher le menu au démarrage.
Changer;
#GRUB_HIDDEN_TIMEOUT=0
pour
GRUB_HIDDEN_TIMEOUT=0
En enlevant le croisillon (#) en début de ligne.
Puis faire une mise à jour de grub
sudo update-grub
Pour que le modif soit prise en compte.
Au démarrage, il ne doit plus y avoir affichage du menu Grub. Pour l'afficher au démarrage, tapoter sur la touche " Échap" .
https://doc.ubuntu-fr.org/grub-pc?s[]=grub&s[]=pc#configuration_manuelle
@+. Babdu89 .
Dernière modification par Babdu89 (Le 20/11/2015, à 01:05)
J'ai découvert Ubuntu avec la 07.10.... Et alors?!... Depuis je regarde de temps en temps si Windows marche toujours....
Hors ligne
#9 Le 20/11/2015, à 09:49
- Arbiel
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Bonjour
Oui, c'est effectivement une bonne idée pour ne pas faire apparaître le menu.
Mais comment le fais-tu réapparaître à la demande lors d'un nouveau démarrage, puisque c'est là la question posée par batman ?
J'avais lu quelque part que cela était possible, mais je n'ai pas retrouvé l'information, et les essais que j'ai effectués n'ont pas été concluants.
Arbiel
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#10 Le 20/11/2015, à 15:49
- Babdu89
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Bonjour.
Arbiel à écrit;
Mais comment le fais-tu réapparaître à la demande lors d'un nouveau démarrage, puisque c'est là la question posée par batman ?
Post#8, Babdu89 a écrit;
Au démarrage, il ne doit plus y avoir affichage du menu Grub. Pour l'afficher au démarrage, tapoter sur la touche " Échap" .
Et pour avoir l’affichage permanent du menu grub, remettre le croisillon devant; GRUB_HIDDEN_TIMEOUT=0 , puis refaire une maj de Grub.
la doc à dit;
#GRUB_HIDDEN_TIMEOUT=0 : avec le croisillon « # », le menu de grub sera visible.
Sans le « # », le menu de grub sera invisible ; c'est utile si on n’a qu’un seul système sur le disque ou si grub est lancé via un autre gestionnaire d’amorçage.
Le nombre fixe, en secondes, la durée permettant d’appuyer sur les touches Échap ou majuscule (Shift) pour faire apparaître le menu invisible (→ exemple).
@. Babdu89 .
Dernière modification par Babdu89 (Le 20/11/2015, à 15:51)
J'ai découvert Ubuntu avec la 07.10.... Et alors?!... Depuis je regarde de temps en temps si Windows marche toujours....
Hors ligne
#11 Le 20/11/2015, à 16:19
- Arbiel
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Je viens de tester de nouveau. Sur mon système, ni Echap ni Maj ne permettent de faire apparaître le menu.
Arbiel
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#12 Le 20/11/2015, à 16:41
- Babdu89
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Dans
#GRUB_HIDDEN_TIMEOUT=0
En passant de 0 à 10 ou plus, çà ne permet toujours pas d'avoir le temps d'afficher le menu grub, avec les touches indiquées?. 0 secondes c'est juste pour réagir.
Ne pas oublier la maj de grub après modif du fichier /etc/default/grub.
@+. Babdu89 .
J'ai découvert Ubuntu avec la 07.10.... Et alors?!... Depuis je regarde de temps en temps si Windows marche toujours....
Hors ligne
#13 Le 21/11/2015, à 01:47
- Arbiel
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Effectivement, le fait de supprimer le commentaire de la ligne de définition de la temporisation
#GRUB_HIDDEN_TIMEOUT=0
permet, en maintenant la temporisation à 0, de répondre au besoin de batman.
Lorsque la temporisation est égale à 0, il faut appuyer sur la touche "Echap" ou "Maj" dès le début de la procédure de démarrage pour faire apparaître le menu.
Dans le cas contraire (valeur différente de 0), un écran violet, vierge de tout affichage, est affiché pendant la durée de la temporisation. Cette dernière peut être interrompue par l'appui sur une des deux touches, et le menu est alors affiché. Si aucune des deux touches n'est appuyée avant la fin de la temporisation, grub poursuit la procédure sans présenter de menu, mais bien sûr après le délai correspondant à la temporisation.
Cependant, ce comportement est conditionné par le fait que la variable d'environnement "recordfail" de grub ne soit pas égale a 1. Or, dans ma configuration, grub la réinitialise à 1 à chaque démarrage. Les réponses de l'équipe de développement de grub, que j'ai interrogée sur le sujet, ne m'ont pas paru très claires. La commande
sudo grub-editenv /boot/grub/grubenv unset recordfail
permet de résoudre le problème, pour le seul démarrage immédiatement suivant, et sous réserve que le bloc d'environnement utilisé par grub à son prochain démarrage soit effectivement celui qui est monté en /boot/grub/grubenv lors de l'exécution de la commande, ce qui n'est pas systématiquement le cas dans un environnement avec de multiples OS GNU/Linux. Et il n'est pas possible (ou du moins, pas possible sans passer par un dialogue direct entre grub et le noyau, dialogue accessible à de seuls experts) de localiser le bloc d'environnement utilisé par grub au démarrage.
Enfin, lorsque le menu lui est présenté, l'utilisateur dispose d'un temps de réaction pour choisir l'OS qu'il souhaite lancer. Le fait que la variable d'environnement "recordfail" vaille 1 entraîne, chez moi, l'initialisation de cette temporisation à 10 secondes. Ce qui signifie que le menu est alors systématiquement affiché, même avec GRUB_HIDDEN_TIMEOUT=x.
La solution que j'ai proposée a batman consiste à forcer cette temporisation à 0 ce qui correspond à un démarrage immédiat de grub, et ceci indépendamment de la valeur de "recordfail".
La commande
grub-editenv /boot/grub/grubenv list
liste les variables d'environnement du bloc /boot/grub/grubenv. Il est alors possible d'y lire la variable "recordfail" et de vérifier son impact sur la gestion du menu, pour constater s'il est identique ou non à ce qui se passe chez moi.
Arbiel
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#14 Le 21/11/2015, à 16:24
- Arbiel
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Bonjour
Une petite explication supplémentaire.
La variable d'environnement "recordfail" a comme objet de forcer l'affichage du menu grub, même lorsque l'utilisateur a supprimé la marque # de la ligne GRUB_HIDDEN_TIMEOUT avant de mettre grub à jour, signifiant par là que l'OS par défaut soit lancé sans intervention de sa part.
A cette fin, grub enregistre la valeur 1 dans la variable "recordfail" et le système, une fois correctement lancé, vient l'effacer. Au démarrage, la valeur 1 dans "recordfail" indique, a priori, que le démarrage précédent a échoué et qu'il n'y a donc pas lieu de répéter la même séquence qui conduirait au même résultat. D'où la nécessité du menu pour permettre un choix différent du choix par défaut.
Dans ma configuration, le bloc d'enregistrement utilisé par grub pour enregistrer la variable "recordfail" n'est pas celui dans lequel le système vient la purger. J'ai donc toujours la valeur 1 dans recordfail, et pour régler le problème, j'ai pris l'habitude de forcer grub à ne plus présenter le menu, sauf si je le demandais explicitement par l'appui sur la touche "Ctrl", "Maj" ou "Alt".
Cette manière de faire n'a donc pas lieu d'être utilisée lorsque la gestion du menu s'effectue correctement.
Arbiel
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#15 Le 22/11/2015, à 01:05
- batmad
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Le commande
cat /boot/grub/custom.cfg
donne bien pour résultat
if ! keystatus --shift; then set timeout=0; fi;
!
Bizarre du coup...
Hors ligne
#16 Le 23/11/2015, à 11:31
- Arbiel
Re : Ne faire apparaitre GRUB que si on appuie sur une touche
Bonjour
Encore une petite information.
À la relecture complète de mon fichier grub.cfg et d'un certains nombre de ceux qui sont publiés sur le forum, j'ai constaté que
GRUB_HIDDEN_TIMEOUT=0
ne fonctionne pas correctement du fait de la présence dans le fichier grub.cfg des lignes ci-dessous, crées par 30_os-prober lorsqu'ont été trouvés un ou plusieurs OS autres que l'OS en cours d'utilisation
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
set timeout=10
fi
qui reviennent à forcer l'affichage du menu avec une temporisation inconditionnellement réinitialisée à 10 secondes.
La solution revient alors soit à initialiser GRUB_HIDDEN_TIMEOUT à une valeur différente de 0, soit à forcer la temporisation par le biais de custom.cfg comme je l'ai indiqué ici.
Arbiel
Dernière modification par Arbiel (Le 23/11/2015, à 11:35)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne