Page 1 sur 1
[grub] réparation du grub nécessaire à chaque mise à jour
Publié : lun. 04 nov. 2024, 08:51
par jackinthebox
Bonjour, depuis quelque temps, je suis obligé à chaque mise à jour de passer par une clef usb pour réinstaller grub. Au démarrage, le système présente de défauts de montage. Je suis également obligé, lors de la réparation de grub, de réinstaller linux filesystem sans quoi mkinitcpio -p linux me renvoie une erreur.
Merci d'avance.
Re: [grub] réparation du grub nécessaire à chaque mise à jour
Publié : lun. 04 nov. 2024, 09:50
par benjarobin
Bonjour,
Il va nous falloir beaucoup plus d'information, et surtout avec les messages d'erreurs exactes pour tout ce que tu rencontres. Peux-tu donner aussi exactement les commandes que tu réalises.
Par exemple, que sous-entends-tu par "réinstaller linux filesystem" ?
Peux-tu donner aussi la sortie de :
Et peux-tu nous décrire les partitions et comment elles sont montées ?
Re: [grub] réparation du grub nécessaire à chaque mise à jour
Publié : lun. 04 nov. 2024, 17:29
par jackinthebox
Merci! D'abord le retour des commandes demandées :
Code : Tout sélectionner
cat /etc/fstab
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda2
UUID=fa1c05a0-86d4-430d-b768-5c7d0a0688e2 / ext4 rw,relatime,data=ordered 0 1
# /dev/sda1
UUID=CB99-9562 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
# /dev/sda3
# UUID=24d7ddcf-b89c-4d48-b7db-7e0433242616 none swap defaults 0 0
#documents
UUID=7e9443ad-d2f0-4547-af70-63b8bf79e3af /mnt/Documents ext4 defaults 0 0
#Trucs en vrac
UUID=5ec2e189-b156-4dd8-bfea-1fcb6a3adb29 /mnt/Trucs\040en\040vrac ext4 defaults 0 0
#Media
UUID=072d3c08-bfd0-401e-9274-8d3efe666db8 /mnt/Media ext4 defaults 0 0
#mariadb
/home/mrx/Media/.mysql /var/lib/mysql bind ,x-systemd.requires=/mnt/Media,defaults,bind 0 0
Code : Tout sélectionner
sudo blkid
/dev/loop1: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/sdb2: UUID="5ec2e189-b156-4dd8-bfea-1fcb6a3adb29" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="cbe9671f-02"
/dev/sdb3: UUID="072d3c08-bfd0-401e-9274-8d3efe666db8" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="cbe9671f-03"
/dev/sdb1: UUID="7e9443ad-d2f0-4547-af70-63b8bf79e3af" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="cbe9671f-01"
/dev/loop4: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop2: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop0: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/sdc2: SEC_TYPE="msdos" LABEL_FATBOOT="MISO_EFI" LABEL="MISO_EFI" UUID="07BE-0A1D" BLOCK_SIZE="512" TYPE="vfat"
/dev/sdc1: BLOCK_SIZE="2048" UUID="2024-07-30-08-28-21-00" LABEL="MANJARO_XFCE_2405" TYPE="iso9660"
/dev/sda2: UUID="fa1c05a0-86d4-430d-b768-5c7d0a0688e2" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="a0051cfa-d486-0d43-b768-5c7d0a0688e2"
/dev/sda1: UUID="CB99-9562" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="f6fc2850-4e60-1246-919a-3040937257a5"
/dev/loop5: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop3: BLOCK_SIZE="131072" TYPE="squashfs"
Code : Tout sélectionner
sudo fdisk -l
Disque /dev/sda : 465,76 GiB, 500107862016 octets, 976773168 secteurs
Modèle de disque : CT500MX500SSD1
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : gpt
Identifiant de disque : E062D943-3EC1-4C17-8F41-B86FAF580937
Périphérique Début Fin Secteurs Taille Type
/dev/sda1 2048 1050623 1048576 512M Système EFI
/dev/sda2 1050624 976773119 975722496 465,3G Système de fichiers Linux
Disque /dev/sdb : 931,51 GiB, 1000204886016 octets, 1953525168 secteurs
Modèle de disque : ST1000DM010-2EP1
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0xcbe9671f
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sdb1 2048 512002047 512000000 244,1G 83 Linux
/dev/sdb2 512002048 1024002047 512000000 244,1G 83 Linux
/dev/sdb3 1024002048 1953523711 929521664 443,2G 83 Linux
Disque /dev/loop0 : 55,66 MiB, 58363904 octets, 113992 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Disque /dev/loop1 : 91,69 MiB, 96141312 octets, 187776 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Disque /dev/loop2 : 4 KiB, 4096 octets, 8 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Disque /dev/loop3 : 38,83 MiB, 40714240 octets, 79520 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Disque /dev/loop4 : 164,82 MiB, 172830720 octets, 337560 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Disque /dev/loop5 : 55,66 MiB, 58363904 octets, 113992 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Disque /dev/sdc : 14,91 GiB, 16013852672 octets, 31277056 secteurs
Modèle de disque : USB Flash Drive
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x00000000
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sdc1 * 64 6921339 6921276 3,3G 0 Vide
/dev/sdc2 6921340 6929531 8192 4M ef EFI (FAT-12/16/32)
Sda est un ssd contenant sda1 ,la partition boot et sda2, la partition linux.
sdb est un disque dur de stockage découpé en trois partitions et monté dans différents répertoire de /home/mrx.
sdc est un cléf usb.
Après la mise à jour du système, le pc ne boote pas et me renvoie des messages d'erreurs concernant le montage de certaines partitions de sdb que je n'ai malheureusement pas eu la présence d'esprit de clairement noter...
Lors de la réparation du grub depuis une clef usb, la commande
me renvoie une erreur du type
Code : Tout sélectionner
lib/modules/x.x.-x-ARCH is not a valid kernel module directory
que je parviens à circonvenir en faisant
.
Re: [grub] réparation du grub nécessaire à chaque mise à jour
Publié : mar. 05 nov. 2024, 00:03
par benjarobin
Pourquoi tu indiques "lors de la réparation du grub" ? Qu'est-ce que tu fais en lien avec Grub ? Ce dernier ne devrait pas être "réparé", il y a rarement besoin de réparer Grub, sauf si, par exemple, tu as un Windows qui le détruit complètement (ce qui est assez rare au final).
Tu ne donnes malheureusement pas toutes les informations : Ce que tu fais depuis ton live USB, les commandes sont depuis un chroot (comment entres-tu dans ce chroot), ... ?
Est-ce que tu montes bien la partition de boot/ESP depuis le live USB quand tu essayes de réparer (je pense que non) ?
Je pense savoir où est le problème, mais, sans les informations, il est difficile d'aider (c'est classiquement un problème de partition de boot, erreur réalisée durant l'installation).
Je suppose que tu as Grub d'installé comme tu le cites ? Comment celui-ci est installé (ligne de commande utilisée) ? Est-ce un boot UEFI (je suppose) ou un boot legacy/MBR ?
Quel est le contenu du grub.cfg ? Vérifie qu'il y a bien un seul grub.cfg (voir question ci-dessous).
Quel est le contenu de la partition de boot/ESP ? Quel est le contenu du dossier /boot si la partition de boot/ESP n'est pas montée ?
Depuis un chroot, quelle est la version du kernel linux installé (pacman -Q linux
), et quel est le contenu de : ls -l /usr/lib/modules
Re: [grub] réparation du grub nécessaire à chaque mise à jour
Publié : mar. 05 nov. 2024, 17:54
par jackinthebox
La version de linux est la suivante : linux 6.11.6.arch1-1 .
ls -l /usr/lib/modules
me retourne
Code : Tout sélectionner
total 28
drwxr-xr-x 3 root root 4096 30 déc. 2022 6.0.12-arch1-1
drwxr-xr-x 3 root root 4096 6 janv. 2023 6.1.1-arch1-1
drwxr-xr-x 3 root root 4096 12 janv. 2023 6.1.3-arch1-1
drwxr-xr-x 3 root root 4096 18 janv. 2023 6.1.4-arch1-1
drwxr-xr-x 3 root root 4096 22 janv. 2023 6.1.6-arch1-3
drwxr-xr-x 6 root root 4096 4 nov. 08:26 6.11.6-arch1-1
drwxr-xr-x 3 root root 4096 4 nov. 08:11 6.6.59-1-lts
.
LE boot est bien un boot EFI.
la partition de boot contient les fichiers suivants:
.
Voilà ce que contient grub.cfg :
Code : Tout sélectionner
#
# 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 ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
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 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,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 fa1c05a0-86d4-430d-b768-5c7d0a0688e2
else
search --no-floppy --fs-uuid --set=root fa1c05a0-86d4-430d-b768-5c7d0a0688e2
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_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-fa1c05a0-86d4-430d-b768-5c7d0a0688e2' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
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 CB99-9562
else
search --no-floppy --fs-uuid --set=root CB99-9562
fi
echo 'Chargement de Linux linux…'
linux /vmlinuz-linux root=UUID=fa1c05a0-86d4-430d-b768-5c7d0a0688e2 rw loglevel=3 nvidia_drm.modeset=1 quiet
echo 'Chargement du disque mémoire initial…'
initrd /intel-ucode.img /initramfs-linux.img
}
submenu 'Options avancées pour Arch Linux' $menuentry_id_option 'gnulinux-advanced-fa1c05a0-86d4-430d-b768-5c7d0a0688e2' {
menuentry 'Arch Linux, avec Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-fa1c05a0-86d4-430d-b768-5c7d0a0688e2' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
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 CB99-9562
else
search --no-floppy --fs-uuid --set=root CB99-9562
fi
echo 'Chargement de Linux linux…'
linux /vmlinuz-linux root=UUID=fa1c05a0-86d4-430d-b768-5c7d0a0688e2 rw loglevel=3 nvidia_drm.modeset=1 quiet
echo 'Chargement du disque mémoire initial…'
initrd /intel-ucode.img /initramfs-linux.img
}
menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-fa1c05a0-86d4-430d-b768-5c7d0a0688e2' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
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 CB99-9562
else
search --no-floppy --fs-uuid --set=root CB99-9562
fi
echo 'Chargement de Linux linux…'
linux /vmlinuz-linux root=UUID=fa1c05a0-86d4-430d-b768-5c7d0a0688e2 rw loglevel=3 nvidia_drm.modeset=1 quiet
echo 'Chargement du disque mémoire initial…'
initrd /intel-ucode.img /initramfs-linux-fallback.img
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/15_ostree ###
### END /etc/grub.d/15_ostree ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/25_bli ###
if [ "$grub_platform" = "efi" ]; then
insmod bli
fi
### END /etc/grub.d/25_bli ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
if [ "$grub_platform" = "efi" ]; then
fwsetup --is-supported
if [ "$?" = 0 ]; then
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
fi
fi
### END /etc/grub.d/30_uefi-firmware ###
### BEGIN /etc/grub.d/35_fwupd ###
### END /etc/grub.d/35_fwupd ###
### 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 ###
Voilà ce que je fait depuis ma clef usb quand une mise a jour du noyau plante le démarrage :
Code : Tout sélectionner
mount /dev/sda2 /mnt
mount /dev/sda1 /mnt/boot/efi
manjaro-chroot /mnt
mkinitcpio --p linux
Je récupère alors l'erreur
lib/modules/6.11.6-1-ARCH is not a valid kernel module directory
.
Je poursuis avec
Code : Tout sélectionner
pacman -S filesystem linux
grub-mkconfig -o /boot/grub/grub.cfg
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Archlinux
Je quitte, je redémarre, et tout fonctionne.
Re: [grub] réparation du grub nécessaire à chaque mise à jour
Publié : mar. 05 nov. 2024, 18:44
par benjarobin
Ton fstab indique que la partition ESP est monté dans /boot, et lorsque tu répares tu la montes dans /boot/efi...
Le fichier grub.cfg que tu donnes ne peux pas fonctionner avec un montage de la partition de boot en tant que /boot/efi...
Hum, c'est un peu le désordre... Je ne suis pas sûr de comprendre comment cela tombe en marche...
Tu n'as pas répondu à ces questions :
- Quel est le contenu de la partition de boot/ESP ? => Tu m'as donné une partie de la sortie. Peux tu donner le contenu complet, par exemple via la commande : find /boot
- Quel est le contenu du dossier /boot si la partition de boot/ESP n'est pas montée ? => Non répondu.
---
Bon, le plus simple est de tout nettoyer (méthode bourrin) et de tout réinstaller.
Alors tu dois faire ceci depuis le live USB (je fais l’hypothèse qu'il n'y a pas d'autres OS d'installé) :
La commande efibootmgr dois te lister les bootloader enregistrés dans la NVRAM de ta carte mère.
Tu dois supprimer toutes les entrées en lien avec Grub/Arch Linux. Donc pour chaque entrée
BootXXXX
que tu veux supprimer :
Puis nettoyage et montage des partitions en dehors du chroot
Code : Tout sélectionner
mount /dev/sda2 /mnt
rm -rf /mnt/boot/*
mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi
rm -rf /mnt/boot/efi/*
rm -rf /mnt/usr/lib/modules/*arch1*
Tu dois corriger le fstab pour monter la partition ESP dans /boot/efi, et non /boot.
Tu peux éditer le fichier à la main, ou utiliser cette commande :
Entrée dans le chroot, et réparation...
Code : Tout sélectionner
manjaro-chroot /mnt
pacman -S linux grub
# En fonction de ton CPU
pacman -S amd-ucode
pacman -S intel-ucode
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Archlinux
grub-mkconfig -o /boot/grub/grub.cfg
Tu peux quitter le chroot, et reboot.
Re: [grub] réparation du grub nécessaire à chaque mise à jour
Publié : mar. 05 nov. 2024, 21:50
par jackinthebox
Bonsoir,
Merci pour ton aide. J'ai procédé comme tu me l'as indiqué, le boot s'interrompt après avoir indiqué que sda2 était clean et renvoyé l'erreur
failed to start mariadb 11.5.2 database server
. Puis bien plus tard failed to start wait for network to be configured
et failed to start postgresql database server
J'ai constaté que je pouvais basculer sur les tty. J'ai essayé de démarrer avec les options fallback initramfs avec le même résultat.
Re: [grub] réparation du grub nécessaire à chaque mise à jour
Publié : mar. 05 nov. 2024, 22:39
par benjarobin
Hum, il y a de fortes chances que ces erreurs étaient déjà avant, au vu de l'état de ton système... Ce n'est clairement pas ton problème ici.
Je te rassure, bien que cela n'en a pas l'air, ton PC est presque totalement réparé, bien mieux qu'avant

Par contre, j'ai fait une petite bêtise / oubli, tu dois réinstaller tous les paquets qui fournissent des fichiers modules (dkms et autres).
Tu dois réinstallé tous les paquets des commandes suivantes :
Code : Tout sélectionner
pacman -Ql | grep -F "/lib/modules/" | awk '{print $1}' | sort -u
pacman -Qsq dkms
Il doit à minima te manquer ton driver graphique.
Re: [grub] réparation du grub nécessaire à chaque mise à jour
Publié : mer. 06 nov. 2024, 06:22
par jackinthebox
Super, merci, ça fonctionne à présent. Comment ça "au vu de l'état de mon système "

? C'est une installation d 'archlinux qui a plus de dix ans... J'ai du coup suivi les conseils de
https://wiki.archlinux.org/title/System ... %C3%A7ais) . Si tu as vu passé certaines choses dans mon système qui t'ont fait te dresser les cheveux sur la tête , n'hésite pas à me le signaler ! Merci encore à toi.
Re: [grub] réparation du grub nécessaire à chaque mise à jour
Publié : mer. 06 nov. 2024, 08:40
par benjarobin
Cool, désolé pour l'erreur qui a temporairement cassé ton système...
Concernant les erreurs précédentes, peux tu donner la sortie de :
systemctl --fail --all
Et éventuellement le log complet d'un boot (via un site de type pastebin) :
journalctl -b