Bonjour,
Avec une installation fraîche de Debian Sid, j’ai quatre entrées memtest86+ différentes dans GRUB2.
Si je vois bien l’intérêt d’en avoir une, pourquoi y en a t-il trois autres ? À quoi servent-elles ?
Merci d’avance
Bonjour,
Avec une installation fraîche de Debian Sid, j’ai quatre entrées memtest86+ différentes dans GRUB2.
Si je vois bien l’intérêt d’en avoir une, pourquoi y en a t-il trois autres ? À quoi servent-elles ?
Merci d’avance
J’ai toujours eu deux entrées memtest dans mon grub. Sauf que je ne me souviens pas de les avoir eues après avoir installé Debian. Il me semblait qu’elles appartenaient à Ubuntu. Apparemment, les tiennes s’affichent en double. Tu as refait un
suivi d’un
update-grub
?
en fait ce sont quatre entrées memtest86+ différentes !
Je les noterai au prochain redémarrage pour vous les donner ici, merci
Pas besoin de redémarrer. Donne nous juste le contenu de /boot/grub/grub.cfg
Compare les différentes entrées se rapportant à memtest
$ grep -i memtest /boot/grub/grub.cfg
Memtest86/memtest86+ …
/usr/share/doc/memtest86+/README.Debian
J’ai
[quote]### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry “Memory test (memtest86+)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos1)‘
search --no-floppy --fs-uuid --set=root 41daf169-089a-413f-b727-89ca4025b421
linux16 /boot/memtest86+.bin
}
menuentry “Memory test (memtest86+, serial console 115200)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos1)‘
search --no-floppy --fs-uuid --set=root 41daf169-089a-413f-b727-89ca4025b421
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
menuentry “Memory test (memtest86+, experimental multiboot)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos1)‘
search --no-floppy --fs-uuid --set=root 41daf169-089a-413f-b727-89ca4025b421
multiboot /boot/memtest86+_multiboot.bin
}
menuentry “Memory test (memtest86+, serial console 115200, experimental multiboot)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 41daf169-089a-413f-b727-89ca4025b421
multiboot /boot/memtest86+_multiboot.bin console=ttyS0,115200n8
}
donc je devrai au moins en avoir deux (legacy, et experimental multiboot) ? C’est quoi « multiboot » ? C’est un peu le principe de GRUB quand même, non ?!
Le README, le fichier dont la lecture est toujours conseillée te révèle qu’il y a deux memtests,
/boot/memtest86+.bin
et
/boot/memtest86+_multiboot.bin
Regarde en /etc/grub.d/20_memtest86+
/boot/memtest86+.bin x 2 (sans/avec “console=ttyS0,115200n8”)
if test -e /boot/memtest86+.bin ; then
MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+.bin" )
echo "Found memtest86+ image: $MEMTESTPATH" >&2
cat << EOF
menuentry "Memory test (memtest86+)" {
EOF
printf '%s\n' "${prepare_boot_cache}"
cat << EOF
$LX $MEMTESTPATH
}
menuentry "Memory test (memtest86+, serial console 115200)" {
EOF
printf '%s\n' "${prepare_boot_cache}"
cat << EOF
$LX $MEMTESTPATH console=ttyS0,115200n8
}
EOF
fi
+
/boot/memtest86+_multiboot.binx x 2 (sans/avec “console=ttyS0,115200n8”)
gnu.org/software/grub/manua … iboot.html
Merci
Au final j’ai toujours pas compris pourquoi il y avait 4 entrées.
La version multiboot étant expérimentale, ils gardent la legacy pour le moment j’imagine ?
Et les deux autres, elles servent à quoi ?
Pourquoi 4 : déjà répondu …
Tout le monde n’est pas passé à grub2.
Certains utilisent encore et toujours grub1, d’autres utilisent lilo ou autres gestionnaires de démarrages qui ne sont pas visés par cette image “multiboot” spéciale grub2.
gnu.org/software/grub/manual … ck-booting
[quote]GRUB loading a specially made small image and passing it as ramdisk to the kernel. This is achieved by commands kfreebsd_module, knetbsd_module_elf, kopenbsd_ramdisk, initrd (see initrd), initrd16 (see initrd), multiboot_module, multiboot2_module or xnu_ramdisk depending on the loader
[/quote]
L’option “multiboot” de grub est une option propre de grub que la documentation de “Multiboot” ne décrit pas. La doc de Multiboot est théorique et n’indique pas comment faire fonctionner grub.
Approche simpliste du “Multiboot” en grub:
Ce que grub charge directement que ce soit linux,*BSD,Hurd,xen…,un kernel ou une image est “Multiboot”.
Tout ce qui est démarrage délégué à un autre bootloader, en cascade (chainloader partition Microsoft|BSD|MacOS|linux …) n’est pas “Multiboot”.
gnu.org/software/grub/manual … ot-methods
insmod = “insérer module” , grub2 utilise les modules se trouvant en /boot/grub
ici, deux modules
part_msdos= partitionnement MSDOS, disque à MBR (/boot/grub/part_msdos.mod)
ext2 =système de fichiers ext2 et ses successeurs ext3, ext4 (/boot/grub/ext2.mod)
linux16 linux en 16 bits
gnu.org/software/grub/manual/grub.html#linux
[quote]14.3.24 linux
— Command: linux file …
Load a Linux kernel image from file. The rest of the line is passed verbatim as the kernel command-line. Any initrd must be reloaded after using this command (see initrd).
On x86 systems, the kernel will be booted using the 32-bit boot protocol. Note that this means that the ‘vga=’ boot option will not work; if you want to set a special video mode, you will need to use GRUB commands such as ‘set gfxpayload=1024x768’ or ‘set gfxpayload=keep’ (to keep the same mode as used in GRUB) instead. GRUB can automatically detect some uses of ‘vga=’ and translate them to appropriate settings of ‘gfxpayload’. The linux16 command (see linux16) avoids this restriction.
Next: list_env, Previous: linux, Up: Command-line and menu entry commands
14.3.25 linux16
— Command: linux16 file …
Load a Linux kernel image from file in 16-bit mode. The rest of the line is passed verbatim as the kernel command-line. Any initrd must be reloaded after using this command (see initrd16).
The kernel will be booted using the traditional 16-bit boot protocol. As well as bypassing problems with ‘vga=’ described in linux, this permits booting some other programs that implement the Linux boot protocol for the sake of convenience.
This command is only available on x86 systems. [/quote]
gnu.org/software/grub/manual … l-terminal
Pour utiliser les ports série (clavier, moniteur).
Si tu ne veux plus voir les entrées avec “serial console”, il te suffit de supprimer ou commenter les passages en /etc/grub.d/20_memtest86+
# menuentry "Memory test (memtest86+, serial console 115200)" {
#EOF
# printf '%s\n' "${prepare_boot_cache}"
# cat << EOF
# $LX $MEMTESTPATH console=ttyS0,115200n8
#}
puis de mettre grub à jour.
Merci beaucoup, c’est très clair, notamment la Serial Console sur laquelle je m’interrogeais encore
[quote=“etxeberrizahar”]
Si tu ne veux plus voir les entrées avec “serial console”, il te suffit de supprimer ou commenter les passages en /etc/grub.d/20_memtest86+
# menuentry "Memory test (memtest86+, serial console 115200)" {
#EOF
# printf '%s\n' "${prepare_boot_cache}"
# cat << EOF
# $LX $MEMTESTPATH console=ttyS0,115200n8
#}
puis de mettre grub à jour.[/quote]
Pour info ce code génère des erreurs chez moi lors de la mise à jour de GRUB
J’ai négligé EOF dans mon modèle …
EOF, EndOfFile, fin de flux.
extrait de /etc/grub.d/20_memtest86+, en adjoignant EOF (et fi pour boucler “if”) à la fin du “menuentry” précédent.
(solution radicale : supprimer tout ce qui est commenté, placer EOF, fi)
if test -e /boot/memtest86+.bin ; then
MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+.bin" )
echo "Found memtest86+ image: $MEMTESTPATH" >&2
cat << EOF
menuentry "Memory test (memtest86+)" {
EOF
printf '%s\n' "${prepare_boot_cache}"
cat << EOF
$LX $MEMTESTPATH
}
EOF
fi
# menuentry "Memory test (memtest86+, serial console 115200)" {
# EOF
# printf '%s\n' "${prepare_boot_cache}"
# cat << EOF
# $LX $MEMTESTPATH console=ttyS0,115200n8
#}
#EOF
#fi
J’obtiens cette fois : [quote]Syntax error: end of file unexpected (expecting “fi”)[/quote]
en commentant depuis la ligne menuentry jusqu’à fi inclus, les deux fois
Copie-nous l’intégralité de /etc/grub.d/20_memtest86+ s’il te plait.
[quote]#!/bin/sh
set -e
if [ -f /usr/lib/grub/grub-mkconfig_lib ]; then
. /usr/lib/grub/grub-mkconfig_lib
LX=linux16
elif [ -f /usr/lib/grub/update-grub_lib ]; then
. /usr/lib/grub/update-grub_lib
LX=linux
else
echo “Cannot find grub config file, exiting.” >&2
exit 0
fi
case ${GRUB_DEVICE_BOOT} in
/dev/loop/*|/dev/loop[0-9]) exit 0 ;;
esac
prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e “s/^/\t/”)"
if test -e /boot/memtest86+.bin ; then
MEMTESTPATH=$( make_system_path_relative_to_its_root “/boot/memtest86+.bin” )
echo “Found memtest86+ image: $MEMTESTPATH” >&2
cat << EOF
menuentry “Memory test (memtest86+)” {
EOF
printf ‘%s\n’ "${prepare_boot_cache}"
cat << EOF
$LX $MEMTESTPATH
}
if test -e /boot/memtest86+_multiboot.bin ; then
MEMTESTPATH=$( make_system_path_relative_to_its_root “/boot/memtest86+_multiboot.bin” )
echo “Found memtest86+ multiboot image: $MEMTESTPATH” >&2
cat << EOF
menuentry “Memory test (memtest86+, experimental multiboot)” {
EOF
printf ‘%s\n’ "${prepare_boot_cache}"
cat << EOF
multiboot $MEMTESTPATH
}
Tu as complétement zappé EOF et fi à la fin des “menuentry”.
Version révisée avec EOF et fi qui te donnera un grub.cfg sans “serial console”
#!/bin/sh
set -e
if [ -f /usr/lib/grub/grub-mkconfig_lib ]; then
. /usr/lib/grub/grub-mkconfig_lib
LX=linux16
elif [ -f /usr/lib/grub/update-grub_lib ]; then
. /usr/lib/grub/update-grub_lib
LX=linux
else
# no grub file, so we notify and exit gracefully
echo "Cannot find grub config file, exiting." >&2
exit 0
fi
# We can't cope with loop-mounted devices here.
case ${GRUB_DEVICE_BOOT} in
/dev/loop/*|/dev/loop[0-9]) exit 0 ;;
esac
prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
if test -e /boot/memtest86+.bin ; then
MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+.bin" )
echo "Found memtest86+ image: $MEMTESTPATH" >&2
cat << EOF
menuentry "Memory test (memtest86+)" {
EOF
printf '%s\n' "${prepare_boot_cache}"
cat << EOF
$LX $MEMTESTPATH
}
EOF
fi
# menuentry "Memory test (memtest86+, serial console 115200)" {
# EOF
# printf '%s\n' "${prepare_boot_cache}"
# cat << EOF
# $LX $MEMTESTPATH console=ttyS0,115200n8
# }
# EOF
# fi
if test -e /boot/memtest86+_multiboot.bin ; then
MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+_multiboot.bin" )
echo "Found memtest86+ multiboot image: $MEMTESTPATH" >&2
cat << EOF
menuentry "Memory test (memtest86+, experimental multiboot)" {
EOF
printf '%s\n' "${prepare_boot_cache}"
cat << EOF
multiboot $MEMTESTPATH
}
EOF
fi
# menuentry "Memory test (memtest86+, serial console 115200, experimental multiboot)" {
# EOF
# printf '%s\n' "${prepare_boot_cache}"
# cat << EOF
# multiboot $MEMTESTPATH console=ttyS0,115200n8
# }
# EOF
# fi
Pense à if et fi comme à des parenthèses.
Lorsqu’une parenthèse est ouverte, elle reste ouverte tant qu’on ne la ferme pas.
( parenthèse ouverte, non fermée
(parenthèse ouverte, fermée )
if ouvre, fi ferme.
if
condition ouverte toujours courante
if
condition ouverte
fi
Les éditeurs de texte traditionnels comportent des modes où il est plus facile de repérer ces paires.
Excuse moi je dois être fatigué, mais je ne vois pas la différence ?
J’ai déjà commenté depuis la ligne menuentry jusqu’à fi inclus, les deux fois
regarde bien il manque
EOF
fi
avant les commentaires
ah oui, tiens ! c’est bizarre je n’ai touché à rien avant les lignes commentées !
Merci
J’ai redémarré tout roule, thanks