Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 lol)

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 big_smile)

#
# 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