Je me souviens avoir travaillé sur l’optimisation de mon système (gain de place) il y a quelques mois grâce à l’excellent billet se trouvant dans Trucs et astuces. Il semblerait que j’ai paramétré mon système pour qu’il dégage les anciens noyaux à l’installation du nouveau, chose que je ne fais pas en général (je garde toujours l’avant dernier en cas de pb).
Quelques précisions pour comprendre
La machine sur laquelle est installée ma debian est un portable Asus qui a plus de 10 ans et j’ai dû composer avec certaines contraintes pour le moderniser. Le disque dur d’origine en IDE faisait 40Go. J’ai fait une upgrade à 160Go mais pour installer un dualboot ( ancienne configuration avec XP qui n’a plus cours aujourd’hui), j’ai dû créer une partition /boot de 100Mo en tête de disque pour contenir mes fichiers de démarrage linux, le Bios (de 2002) étant incapable de lire au delà d’un certain nombre de Go.
Je ne connais pas exactement cette limite, peut-être 10Go, peut-être 20. Cela signifie que si j’installe un premier système sur les 30 premiers Go du hdd sans prendre de précaution particulière (partitionnement classique / , / home , swap )et que j’enquille le second OS sur le restant du disque, il me sera impossible de le lancer…
Ceci étant dit, la partition /boot de 100Mo a vite fait de se remplir au fur et à mesure des mises à jour et c’est la raison pour laquelle j’ai dû automatiser la procédure de retrait de fichiers d’anciens noyaux.
Aujourd’hui je n’ai qu’une squeeze sur ce portable, mais rien ne dit que demain, je ne chercherais pas à faire un dualboot avec une autre distro ou simplement une autre version de debian. D’où le maintien de ce partitionnement…
Bref revenons à nos moutons.
Comment réinstaller la version antérieure du noyau pour faire au plus simple ?
S’il s’avère que ce bug est lié à la mise à jour du noyau et que cela n’est pas résolu avec le noyau 3.2 sur Wheezy, c’est à désespérer^^
# uname -a
Linux l3c1 2.6.32-5-686 #1 SMP Wed Jan 12 04:01:41 UTC 2011 i686 GNU/Linux
[quote=“milediou”]cette option semble faire consensus et je m’y rallie sans pb.
Pourquoi dans synaptic je n’ai pas la liste des anciens noyaux comme dans les dépôts ubuntu par ex ?
Mon questionnement n’est plus de l’ordre du quoi faire, mais du comment [/quote]
Ce que tu dois comprendre, c’est que ce bogue ne touche pas toutes les versions d’un même noyau…
Preuve en est les différents posts du bogue précité… Apparemment, les développeurs n’arrivent pas à le recréer, voire à comprendre pourquoi - si j’ai bien compris -…
Bref, cela n’explique pas pourquoi en effet dans synaptic, tu n’as pas les différentes versions de kernel existantes pour ta version de Debian …
[quote=“milediou”]# uname -a
Linux l3c1 2.6.32-5-686 #1 SMP Wed Jan 12 04:01:41 UTC 2011 i686 GNU/Linux[/quote]
Tu es sûr d’avoir complètement redémarré le système ? Visiblement, c’est toujours un (très) ancien noyau (janvier 2011) qui est actif. Le dernier noyau, correspondant à la date de /boot/vmlinuz-2.6.32-5-686, devrait afficher la date du 10 mai 2013.
Si tu as bien redémarré, alors il faut regarder du côté du chargeur d’amorçage pour voir où il va chercher l’image du noyau /boot/vmlinuz-2.6.32-5-686, parce qu’apparemment il charge une vieille image. Il se peut que le même problème affecte aussi l’initramfs (/boot/initrd.img-2.6.32-5-686) car il contient le module nls_base qui est chargé à partir de l’initramfs et non de la racine.
Tu as évoqué des problèmes de place sur /boot, regarde aussi de ce côté.
[quote=“PengouinPdt”]C’est un bogue qui a l’air d’être récurrent … http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670172[/quote]
Ce rapport de bug date de plus d’un an, a été fermé et concernait un noyau 3.2 alors que milediou a un noyau 2.6.32. J’ai exactement le même noyau suite à la mise à jour de sécurité récente, et je n’ai pas le bug.
Normal : d’autres modules déjà chargés, notamment usbcore dont dépend tout l’USB, en dépendent. Pour le décharger, il faut tous les décharger avant, donc perdre l’USB notamment (dur si clavier en USB et pas d’accès réseau type SSH pour ouvrir une console à distance).
Le symbole utf8s_to_utf16s_new dont le module vfat a besoin est normalement fourni par le module nls_base. On peut vérifier si c’est bien le cas :
Si ce n’est pas le cas, il y a un GROS problème.
Ensuite on peut vérifier si depmod -a l’a bien enregistré lors de l’installation du noyau :
et si la dépendance entre les modules vfat et nls_base a bien été enregistrée :
modinfo vfat
grep vfat /lib/modules/$(uname -r)/modules.dep
Si ce n’est pas le cas, tu peux essayer de regénérer les dépendances entre modules en exécutant depmod.
Oui mon capitaine ! Le portable est arrêté tous les soirs donc depuis le 10 mai, cela fait un nb conséquent de redémarrage. Donc quand tu fais un ‘uname -a’ chez toi, tu as bien la date du 10 mai qui apparait ? Bizarre…
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
load_env
fi
set default=“0"
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
}
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)‘
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640x480
load_video
insmod gfxterm
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)'
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
set locale_dir=($root)/boot/grub/locale
set lang=fr
insmod gettext
set timeout=10
END /etc/grub.d/00_header
BEGIN /etc/grub.d/05_debian_theme
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)'
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
insmod png
if background_image /usr/share/images/desktop-base/spacefun-grub.png; then
set color_normal=light-gray/black
set color_highlight=white/black
else
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
fi
END /etc/grub.d/05_debian_theme
BEGIN /etc/grub.d/10_linux
menuentry ‘Debian GNU/Linux, avec Linux 2.6.32-5-686’ --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)'
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
echo 'Chargement de Linux 2.6.32-5-686 …'
linux /boot/vmlinuz-2.6.32-5-686 root=UUID=7e406713-3ff4-44ca-846d-e997f022ccb9 ro quiet
echo 'Chargement du disque mémoire initial …‘
initrd /boot/initrd.img-2.6.32-5-686
}
menuentry ‘Debian GNU/Linux, avec Linux 2.6.32-5-686 (mode de dépannage)’ --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)'
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
echo 'Chargement de Linux 2.6.32-5-686 …'
linux /boot/vmlinuz-2.6.32-5-686 root=UUID=7e406713-3ff4-44ca-846d-e997f022ccb9 ro single
echo 'Chargement du disque mémoire initial …'
initrd /boot/initrd.img-2.6.32-5-686
}
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+
menuentry “Memory test (memtest86+)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)‘
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
linux16 /boot/memtest86+.bin
}
menuentry “Memory test (memtest86+, serial console 115200)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)‘
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
menuentry “Memory test (memtest86+, experimental multiboot)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)‘
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
multiboot /boot/memtest86+_multiboot.bin
}
menuentry “Memory test (memtest86+, serial console 115200, experimental multiboot)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)'
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
multiboot /boot/memtest86+_multiboot.bin console=ttyS0,115200n8
}
END /etc/grub.d/20_memtest86+
BEGIN /etc/grub.d/30_os-prober
END /etc/grub.d/30_os-prober
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 $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
END /etc/grub.d/41_custom
[/code]
C’est ce qui m’interroge ! Pourquoi n’y a t’il pas davantage de monde affecté par ce bug depuis le 10 mai ?
Soft dependencies extracted from modules themselves.
Copy, with a .conf extension, to /etc/modprobe.d to use it with modprobe.
Aliases for symbols, used by symbol_request().
alias symbol:load_nls nls_base
alias symbol:unregister_nls nls_base
alias symbol:register_nls nls_base
alias symbol:unload_nls nls_base
alias symbol:utf8_to_utf32 nls_base
alias symbol:utf32_to_utf8 nls_base
alias symbol:utf8s_to_utf16s nls_base
alias symbol:load_nls_default nls_base
alias symbol:utf8s_to_utf16s_fixed nls_base
alias symbol:utf16s_to_utf8s nls_base
Device nodes to trigger on-demand module loading.[/code]
[quote]Ensuite on peut vérifier si depmod -a l’a bien enregistré lors de l’installation du noyau :
et si la dépendance entre les modules vfat et nls_base a bien été enregistrée :[/quote]
je crois que la confusion vient du fait que j’ai une partition /boot ET un dossier /boot sous la racine de ma partition système. Mon chargeur de démarrage doit s’emmêler les pinceaux et pointer sur le mauvais noyau.
Je viens de m’en rendre compte en installant un autre noyau ( 2.6.32-5-486 ) et en l’intégrant au menu de démarrage.
[code]# cat /boot/grub/grub.cfg
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
load_env
fi
set default=“0”
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
}
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)’
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640x480
load_video
insmod gfxterm
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)’
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
set locale_dir=($root)/boot/grub/locale
set lang=fr
insmod gettext
set timeout=10
END /etc/grub.d/00_header
BEGIN /etc/grub.d/05_debian_theme
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)’
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
insmod png
if background_image /usr/share/images/desktop-base/spacefun-grub.png; then
set color_normal=light-gray/black
set color_highlight=white/black
else
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
fi
END /etc/grub.d/05_debian_theme
BEGIN /etc/grub.d/10_linux
menuentry ‘Debian GNU/Linux, avec Linux 2.6.32-5-686’ --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)’
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
echo ‘Chargement de Linux 2.6.32-5-686 …’
linux /boot/vmlinuz-2.6.32-5-686 root=UUID=7e406713-3ff4-44ca-846d-e997f022ccb9 ro quiet
echo ‘Chargement du disque mémoire initial …’
initrd /boot/initrd.img-2.6.32-5-686
}
menuentry ‘Debian GNU/Linux, avec Linux 2.6.32-5-686 (mode de dépannage)’ --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)’
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
echo ‘Chargement de Linux 2.6.32-5-686 …’
linux /boot/vmlinuz-2.6.32-5-686 root=UUID=7e406713-3ff4-44ca-846d-e997f022ccb9 ro single
echo ‘Chargement du disque mémoire initial …’
initrd /boot/initrd.img-2.6.32-5-686
}
menuentry ‘Debian GNU/Linux, avec Linux 2.6.32-5-486’ --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)’
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
echo ‘Chargement de Linux 2.6.32-5-486 …’
linux /boot/vmlinuz-2.6.32-5-486 root=UUID=7e406713-3ff4-44ca-846d-e997f022ccb9 ro quiet
echo ‘Chargement du disque mémoire initial …’
initrd /boot/initrd.img-2.6.32-5-486
}
menuentry ‘Debian GNU/Linux, avec Linux 2.6.32-5-486 (mode de dépannage)’ --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)’
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
echo ‘Chargement de Linux 2.6.32-5-486 …’
linux /boot/vmlinuz-2.6.32-5-486 root=UUID=7e406713-3ff4-44ca-846d-e997f022ccb9 ro single
echo ‘Chargement du disque mémoire initial …’
initrd /boot/initrd.img-2.6.32-5-486
}
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+
menuentry “Memory test (memtest86+)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)’
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
linux16 /boot/memtest86+.bin
}
menuentry “Memory test (memtest86+, serial console 115200)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)’
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
menuentry “Memory test (memtest86+, experimental multiboot)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)’
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
multiboot /boot/memtest86+_multiboot.bin
}
menuentry “Memory test (memtest86+, serial console 115200, experimental multiboot)” {
insmod part_msdos
insmod ext2
set root=’(hd0,msdos4)’
search --no-floppy --fs-uuid --set 7e406713-3ff4-44ca-846d-e997f022ccb9
multiboot /boot/memtest86+_multiboot.bin console=ttyS0,115200n8
}
END /etc/grub.d/20_memtest86+
BEGIN /etc/grub.d/30_os-prober
END /etc/grub.d/30_os-prober
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 $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
END /etc/grub.d/41_custom
[/code]
le truc c’est que cette nouvelle entrée n’apparaît pas dans mon menu de démarrage malgré un ‘update-grub’
# update-grub
Generating grub.cfg ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-2.6.32-5-686
Found initrd image: /boot/initrd.img-2.6.32-5-686
Found linux image: /boot/vmlinuz-2.6.32-5-486
Found initrd image: /boot/initrd.img-2.6.32-5-486
Found memtest86+ image: /boot/memtest86+.bin
Found memtest86+ multiboot image: /boot/memtest86+_multiboot.bin
done
Rien d’anormal du côté des modules, depmod et modinfo.
Par contre, tu as écrit que tu avais une partition de boot séparée de 100 Mo en début de disque. Dans la sortie de fdisk on voit bien une partition /dev/sda3 amorçable de 100 Mo en début de disque, mais elle n’est pas mentionnée dans /etc/fstab, et donc, je suppose, pas montée sur /boot. D’autre part dans grub.conf tout fait référence à la 4e partition qui semble être la partition racine et non à une partition /boot séparée.
Je me demande donc si le grub et le noyau actifs ne seraient pas dans cette partition /dev/sda3 qui n’est pas référencée par ton système et donc pas mise à jour. Monte-là sur /mnt pour voir son contenu. Si c’est bien le cas, tu as deux options : soit réinstaller grub pour qu’il prenne en compte le /boot de la partition racine, soit remonter la partition /dev/sda3 en tant que /boot après y avoir transféré le contenu du répetoire /boot de la racine.
Ce qui pourrait confirmer que le grub, son grub.cfg et les noyaux disponibles qui sont utilisés au démarrage ne sont pas ceux qui se trouvent dans le répertoire /boot de la racine mais sur une autre partition, non montée.
C’était logique.
Si tu recopies les fichiers /boot/2.6.32 et /boot/grub/grub.cfg de la racine sur la partition de boot (sans /boot/), et la remontes sur /boot dans /etc/fstab, tout devrait revenir dans l’ordre au redémarrage.
Comme un rayon de soleil perce les nuages, je file dehors pour en profiter et te laisse gérer.
La discussion a montré que milediou utilise un noyau Debian précompilé qui inclut le module vfat et que la présence de ce module a déjà été établie par d’autres moyens (message d’erreur du noyau, lsmod…).
Par contre le silence de milediou m’inquiète un peu… J’espère que ma suggestion n’a pas cassé le démarrage du système.
Au passage, je recommande d’identifier la partition à monter sur /boot dans /etc/fstab par son UUID comme les autres partitions et non par son nom de périphérique /dev/sda3, qui est susceptible de varier. Par exemple il suffit qu’un clé USB ou un autre disque soit présent au démarrage et détecté avant le disque système, et paf, il devient sda à la place de sda. L’UUID peut être retrouvé avec la commande blkid, ou en regardant le nom du lien symbolique dans /etc/disk/by-uuid/ qui pointe vers /dev/sda3.
Et plutôt que de copier grub.cfg, je pense qu’il serait plus propre de le regénérer avec update-grub (ou grub-update, je ne sais jamais) une fois les fichiers des noyaux copiés et la partition remontée sur /boot.