logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 13-05-2024 17:52:49

potemkine17
Membre
Distrib. : Débian Bookworm Cinnamon
Noyau : amd64
Inscription : 17-09-2014

Memtest86 -Résolu, merci Raleur.

Bonjour,
j'ai une simple question concernant MemTest86. Pour disposer d'un outil de dépannage, j'ai choisi MX Linux, installé sur une simple clé usb. Pour rendre cette clé compatible avec la plus part des machines (enfin, je l'espère), je l'ai configuré pour qu'elle démarre autant en UefI qu'en Legacy. Aucun problème jusque là si ce n'est l'affichage -et donc la possibilité d'usage- de Memtest86 au menu de Grub. Sur une installation séparée, il y a bien une entré  qui s'affiche au démarrage que ce soit en bios ou en efi. Mais pas quand les 2 chargeurs sont présents. Ce sujet a déjà été abordé ici et ailleurs, conclu souvent par des incompatibilités avec l'Uefi. Nativement, Memtest86+ est installé sur MX ; en ajoutant le logiciel proprio. ( je sais, c'est pas bien...) depuis ce tuto, : https://www.memtest86.com/tech_configuring-grub.html, j'obtiens une entré  utilisable quand la clé démarre en hérité et aussi une entré en mode efi, qui , hélas, se termine par une erreur :

impossible de trouver la commande chainloader 'hd1,gpt1'  

.
mon fichier 40_custom :

#!/bin/sh
exec tail -n +3 $0
# 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.
menuentry 'MemTest86' {
         insmod part_gpt
         insmod fat
         set root='hd1,gpt1'
         chainloader($root)/EFI/memtest86/BOOTX64.efi
         }


D'après vous, mon erreur est-elle du à mon fichier mal rédigé ? Ou plus simplement, qu'il n'y a pas vraiment de possibilité de configurer la clé avec MemTest86 pour chacun des  chargeurs et il vaudrait mieux ne pas insister (ce que je ferais pour ne pas vous faire perdre votre temps) ? Une idée ?

Dernière modification par potemkine17 (15-05-2024 11:41:47)

Hors ligne

#2 14-05-2024 09:03:00

raleur
Membre
Inscription : 03-10-2014

Re : Memtest86 -Résolu, merci Raleur.

potemkine17 a écrit :

chainloader($root)/EFI/memtest86/BOOTX64.efi


Il manque un espace entre "chainloader" et "$(root)/...".
Et il vaudrait mieux utiliser l'UUID de la partition EFI pour l'identifier, la numérotation des disques (hdN) par l'UEFI n'est pas fiable.

potemkine17 a écrit :

Aucun problème jusque là si ce n'est l'affichage -et donc la possibilité d'usage- de Memtest86 au menu de Grub. Sur une installation séparée, il y a bien une entré  qui s'affiche au démarrage que ce soit en bios ou en efi. Mais pas quand les 2 chargeurs sont présents


Qu'appelles-tu "installation séparée" ?
Quelle est la version du paquet memtest86+ ? Le script pour GRUB de la version 6.10 incluse dans Debian 12 ajoute une entrée legacy ou UEFI selon le mode d'amorçage courant lors de l'exécution de update-grub.

potemkine17 a écrit :

en ajoutant le logiciel proprio


Quel "logiciel proprio" ?

Dernière modification par raleur (14-05-2024 09:04:57)


Il vaut mieux montrer que raconter.

Hors ligne

#3 14-05-2024 15:56:15

potemkine17
Membre
Distrib. : Débian Bookworm Cinnamon
Noyau : amd64
Inscription : 17-09-2014

Re : Memtest86 -Résolu, merci Raleur.

Bonjour Raleur, merci de m'accorder du temps pour m'éclairer.

Et il vaudrait mieux utiliser l'UUID de la partition EFI pour l'identifier, la numérotation des disques (hdN) par l'UEFI n'est pas fiable.


Je modifie le fichier mais pas comme il le faudrait : Un nouveau message s'affiche "Aucun serveur n'est indiqué".

#!/bin/sh
exec tail -n +3 $0
# 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.
menuentry 'MemTest86' {
         insmod part_gpt
         insmod fat
         set root='UUID=9427-CCD8'
         chainloader ($root)/EFI/memtest86/BOOTX64.efi
         }
 


Bizarrement, je ne vois pas d'entrée en mettent à jour le grub bien qu'elle soit présente au menu de grub.

root@mxyz:/home/libres# update-grub
Generating grub configuration file ...
Found theme: /boot/grub/themes/mx_linux/theme.txt
Found linux image: /boot/vmlinuz-6.1.0-21-amd64
Found initrd image: /boot/initrd.img-6.1.0-21-amd64
Found linux image: /boot/vmlinuz-6.1.0-20-amd64
Found initrd image: /boot/initrd.img-6.1.0-20-amd64
Adding boot menu entry for EFI firmware configuration
done
 


Qu'appelles-tu "installation séparée" ?
Quelle est la version du paquet memtest86+ ? Le script pour GRUB de la version 6.10 incluse dans Debian 12 ajoute une entrée legacy ou UEFI selon le mode d'amorçage courant lors de l'exécution de update-grub.


Oui, c'est aussi celle utilisée par MX (version 23.2) qui est basée sur Bookworm. Et effectivement, ça fonctionne bien quand on utilise les amorçages séparément.

Quel "logiciel proprio" ?


J'ai installé Memtest86  selon les indications d’éditeur depuis le lien que j'ai donné plus haut. Je n'ai pas trouvé d'autre solution pour permettre à ce logiciel de fonctionner dans tout les cas. Des messages sur le web signalent les problèmes de Memtest86+ en uefi; j'ai donc essayé la version non-libre. J'ajoute que je me suis inspiré de ce poste : https://debian-facile.org/viewtopic.php?id=30063.
Plutôt que de perdre du temps, j'aurais souhaiter savoir si il y avait une possibilité que j'arrive à mes fins ou, si il valait mieux passer à autre chose.
En dernier recours, est-ce qu'un formatage de la partition EFI en fat16 aurait pu changer quelque chose ?

Dernière modification par potemkine17 (14-05-2024 16:15:19)

Hors ligne

#4 14-05-2024 17:06:43

raleur
Membre
Inscription : 03-10-2014

Re : Memtest86 -Résolu, merci Raleur.

potemkine17 a écrit :

Je modifie le fichier mais pas comme il le faudrait


En effet ; il faut utiliser la commande search. Voir les exemples dans /boot/grub/grub.cfg.

potemkine17 a écrit :

Bizarrement, je ne vois pas d'entrée en mettent à jour le grub bien qu'elle soit présente au menu de grub.


Si tu parles de ton script, c'est normal car il n'envoie rien sur la sortie d'erreur.
Si tu parles du script /etc/grub.d/20_memtest86+ en revanche, il devrait afficher un message du style "Found memtest86+ image".
Par contre il n'est pas terrible, j'y relève plusieurs problèmes.

potemkine17 a écrit :

j'aurais souhaiter savoir si il y avait une possibilité que j'arrive à mes fins


Oui mais il faut un autre script que celui installé par le paquet, qui puisse ajouter des entrées pour l'amorçage EFI et legacy quel que soit le mode d'amorçage.
En tout cas je ne vois pas l'intérêt d'installer memtest86+ autrement qu'avec le paquet fourni par la distribution. La discussion que tu pointes date d'une époque ou le paquet Debian ne contenait pas encore les binaires EFI.


Il vaut mieux montrer que raconter.

Hors ligne

#5 14-05-2024 18:17:43

potemkine17
Membre
Distrib. : Débian Bookworm Cinnamon
Noyau : amd64
Inscription : 17-09-2014

Re : Memtest86 -Résolu, merci Raleur.

Bonsoir Raleur,
J’essaie de suivre tes indications mais ça dépasse mes connaissances, je n'ai plus l'age où l'on apprend facilement.

En effet ; il faut utiliser la commande search. Voir les exemples dans /boot/grub/grub.cfg.


Je m'y perd. En revenant à la configuration de départ 'sans UUID mais 'hd1,gpt1' ou 'hd1,gpt2', j'ai le message "disque indisponible". En fait, je ne sais pas quoi modifier.
Le fichier grub.cfg :

[#!/bin/sh

#tag for mx-system update
#mx-system 20.11.02+4

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/")"

efi_dir=/sys/firmware/efi

if [ ! -e "$efi_dir" ] && [ -e /boot/memtest86+.bin ]; then
  MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+.bin" )
  echo "Found memtest86+ image: $MEMTESTPATH" >&2
  cat << 'EOF'
if [ "${grub_platform}" == "pc" ]; then
true
menuentry "Memory test (memtest86+)" {
EOF

  printf '%s\n' "${prepare_boot_cache}"
  cat << EOF
  $LX $MEMTESTPATH
}
fi
EOF

fi

if [ -e "$efi_dir" ] && [ -e /boot/uefi-mt/mtest-64.efi ]; then
  MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/uefi-mt/mtest-64.efi" )
  echo "Found mtest-64.efi image: $MEMTESTPATH" >&2
  cat << 'EOF'
if [ "${grub_platform}" == "efi" ]; then
   if [ "${grub_cpu}" == "x86_64" ]; then
true
menuentry "Memory Test (64-bit UEFI)" {
EOF

  printf '%s\n' "${prepare_boot_cache}"
  cat << EOF
  chainloader $MEMTESTPATH
}
  fi
fi
EOF

fi



Si tu parles du script /etc/grub.d/20_memtest86+ en revanche, il devrait afficher un message du style "Found memtest86+ image".


Oui, il devrait y avoir une entré menu. C'est bien là le problème..

#!/bin/sh

#tag for mx-system update
#mx-system 20.11.02+4

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/")"

efi_dir=/sys/firmware/efi

if [ ! -e "$efi_dir" ] && [ -e /boot/memtest86+.bin ]; then
  MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+.bin" )
  echo "Found memtest86+ image: $MEMTESTPATH" >&2
  cat << 'EOF'
if [ "${grub_platform}" == "pc" ]; then
true
menuentry "Memory test (memtest86+)" {
EOF

  printf '%s\n' "${prepare_boot_cache}"
  cat << EOF
  $LX $MEMTESTPATH
}
fi


En tout cas je ne vois pas l'intérêt d'installer memtest86+ autrement qu'avec le paquet fourni par la distribution.


Le paquet est bien installé :

$ ls -l /boot
total 177012
-rw-r--r-- 1 root root   259525 11 avril 23:17 config-6.1.0-20-amd64
-rw-r--r-- 1 root root   259504  3 mai   14:36 config-6.1.0-21-amd64
drwxrwxr-x 3 root root     4096  1 janv.  1970 efi
drwxr-xr-x 7 root root     4096 14 mai   18:40 grub
-rw-r--r-- 1 root root 81798365 30 avril 18:11 initrd.img-6.1.0-20-amd64
-rw-r--r-- 1 root root 81831617 11 mai   17:06 initrd.img-6.1.0-21-amd64
drwx------ 2 root root    16384 30 avril 17:15 lost+found
-rw-r--r-- 1 root root   144312 11 mai   17:14 memtest86+.bin
-rw-r--r-- 1 root root   138712 11 févr.  2023 memtest86+ia32.bin
-rw-r--r-- 1 root root   139776 11 févr.  2023 memtest86+ia32.efi
-rw-r--r-- 1 root root   144312 11 févr.  2023 memtest86+x64.bin
-rw-r--r-- 1 root root   145408 11 févr.  2023 memtest86+x64.efi
-rw-r--r-- 1 root root       83 11 avril 23:17 System.map-6.1.0-20-amd64
-rw-r--r-- 1 root root       83  3 mai   14:36 System.map-6.1.0-21-amd64
-rw-r--r-- 1 root root  8167616 11 avril 23:17 vmlinuz-6.1.0-20-amd64
-rw-r--r-- 1 root root  8169408  3 mai   14:36 vmlinuz-6.1.0-21-amd64
 



Pour le paquet proprio :

$ ls -l /boot/efi/EFI
total 12
drwxrwxr-x 2 root root 4096 30 avril 17:35 BOOT
drwxrwxr-x 3 root root 4096 12 mai   17:36 memtest86
drwxrwxr-x 2 root root 4096 30 avril 17:35 mx
 


Oui mais il faut un autre script que celui installé par le paquet, qui puisse ajouter des entrées pour l'amorçage EFI et legacy quel que soit le mode d'amorçage.


Je vais essayé de trouver ça. Parce que je n'ai pas trop de réussite quand j'en rédige.

Dernière modification par potemkine17 (14-05-2024 18:27:56)

Hors ligne

#6 14-05-2024 19:14:03

raleur
Membre
Inscription : 03-10-2014

Re : Memtest86 -Résolu, merci Raleur.

potemkine17 a écrit :

Le fichier grub.cfg


Tu veux dire le fichier /etc/grub.d/20_memtest86+ ? Il ne correspond pas du tout à celui du paquet Debian, quelle que soit la version. Ce doit être une version spécifique à MX...
On peut voir qu'il se termine sans rien faire si le système a été amorcé en mode EFI, ce qui est le cas ici (en témoigne la ligne "Adding boot menu entry for EFI firmware configuration" lors de l'exécution de update-grub, ce qui explique pourquoi il n'affiche rien. Du coup je ne vois pas comment il peut ajouter une entrée de menu si le système est en EFI.

potemkine17 a écrit :

Le paquet est bien installé


Mais il y a un fichier memtest86+.bin qui ne devrait pas être là, d'ailleurs il est plus récent que les autres fichiers memtest* alors que c'est un nom utilisé par les anciennes versions de memtest86+. D'où vient-il ? Est-ce une copie de memtest86+x64.bin (même taille) ?

Je vais te préparer un fichier affichant conditionnellement l'entrée de menu correspondant au mode d'amorçage EFI ou legacy.


Il vaut mieux montrer que raconter.

Hors ligne

#7 14-05-2024 19:49:48

potemkine17
Membre
Distrib. : Débian Bookworm Cinnamon
Noyau : amd64
Inscription : 17-09-2014

Re : Memtest86 -Résolu, merci Raleur.

Tu veux dire le fichier /etc/grub.d/20_memtest86+ ? Il ne correspond pas du tout à celui du paquet Debian, quelle que soit la version. Ce doit être une version spécifique à MX...
On peut voir qu'il se termine sans rien faire si le système a été amorcé en mode EFI, ce qui est le cas ici (en témoigne la ligne "Adding boot menu entry for EFI firmware configuration" lors de l'exécution de update-grub, ce qui explique pourquoi il n'affiche rien. Du coup je ne vois pas comment il peut ajouter une entrée de menu si le système est en EFI.


Il le fait si l'amorçage est en uefi seulement. Comme il le fait en legacy. Donc, c'est la configuration MX qui serait en cause ? Sur leur forum, il y a bien des messages à ce sujet mais ils sont anciens et ne se rapportent pas à un double amorçage.

Mais il y a un fichier memtest86+.bin qui ne devrait pas être là, d'ailleurs il est plus récent que les autres fichiers memtest* alors que c'est un nom utilisé par les anciennes versions de memtest86+. D'où vient-il ? Est-ce une copie de memtest86+x64.bin (même taille) ?


C'était une solution de ce forum donnée pour afficher l'entrée au grub. Qui, évidement, n'a pas marché. (https://forum.mxlinux.org/viewtopic.php … =memtest86).

Je vais te préparer un fichier affichant conditionnellement l'entrée de menu correspondant au mode d'amorçage EFI ou legacy.


C'est sympa mais ne te prend pas la tête pour moi. Il faudrait que je m'y colle depuis le temps. Si je pouvais comprend, ça me permettrait d'apprendre. Je m'y remets demain, si je peux. Peut-être sur Bookworm directement, si l’installateur le permet.. C'est plus compliqué qu'avec MX.

Dernière modification par potemkine17 (14-05-2024 19:50:21)

Hors ligne

#8 14-05-2024 21:27:38

raleur
Membre
Inscription : 03-10-2014

Re : Memtest86 -Résolu, merci Raleur.

Voici un script à mettre dans /etc/grub.d/ et à rendre exécutable (chmod +x)
https://debian-facile.org/paste-C5C6A599D6
Le fichier grub.cfg généré par update-grub contient des entrées de menu conditionnelles pour chaque fichier memtest86+ présent et seule celle qui correspond au mode d'amorçage (EFI ou legacy) et à l'architecture du processeur (32 ou 64 bits) sera affichée.

Il vaut mieux montrer que raconter.

Hors ligne

#9 15-05-2024 11:40:16

potemkine17
Membre
Distrib. : Débian Bookworm Cinnamon
Noyau : amd64
Inscription : 17-09-2014

Re : Memtest86 -Résolu, merci Raleur.

Résultats :

root@mxzz:/home/libres# update-grub
Generating grub configuration file ...
Found theme: /boot/grub/themes/mx_linux/theme.txt
Found linux image: /boot/vmlinuz-6.1.0-21-amd64
Found initrd image: /boot/initrd.img-6.1.0-21-amd64
Found linux image: /boot/vmlinuz-6.1.0-17-amd64
Found initrd image: /boot/initrd.img-6.1.0-17-amd64
Found memtest86+ image: /memtest86+.bin
Found memtest86+ 64bit EFI image: /memtest86+x64.efi
Found memtest86+ 32bit EFI image: /memtest86+ia32.efi
Found memtest86+x64 image: /memtest86+x64.bin
Found memtest86+ image: /memtest86+ia32.bin
Found Debian GNU/Linux 12 (bookworm) on /dev/sda1
done



Parfait. Un grand merci à toi, Raleur. La clé est totalement fonctionnelle. je vais essayé de travailler les scripts, j'ai trop de lacunes dessus. A bientôt.

Hors ligne

#10 15-05-2024 19:30:14

raleur
Membre
Inscription : 03-10-2014

Re : Memtest86 -Résolu, merci Raleur.

Ce script n'est pas le meilleur exemple pour apprendre mais il est dans le style de ceux de /etc/grub.d/ servant à générer le script du menu de GRUB.
De plus il combine deux types de scripts : le script shell qui génère et le script GRUB qui est généré, notamment avec les "cat <<EOF", ce qui n'est pas facile à lire.

PS: La ligne "Found memtest86+ image: /memtest86+.bin" est générée par un autre script que le mien, probablement 20_memtest86+. Pour éviter les doublons, il faut le supprimer ou supprimer memtest86+.bin.

Dernière modification par raleur (15-05-2024 19:36:20)


Il vaut mieux montrer que raconter.

Hors ligne

#11 15-05-2024 19:50:43

potemkine17
Membre
Distrib. : Débian Bookworm Cinnamon
Noyau : amd64
Inscription : 17-09-2014

Re : Memtest86 -Résolu, merci Raleur.

Ce sera fait, merci. J'ai négligé l'apprentissage des scripts pour aller me perdre dans celui du PHP (pour la gestion d'un site) sans vraiment aller au bout. je vais revoir ça.

Hors ligne

Pied de page des forums