web-dev-qa-db-fra.com

Confusion avec plusieurs images du noyau Linux - Ubuntu démarre sur un noyau plus ancien

Je suis sous Ubuntu 16.04. Après une mise à jour logicielle, que j'ai ignorée, j'ai ouvert un terminal et lancé mon alias de mise à jour:

alias maintain='set -x; Sudo apt-get update && Sudo apt-get upgrade && Sudo apt autoremove && Sudo apt autoclean; set +x'

Bizarrement, aucun paquet n'a été mis à jour, mais j'ai reçu le message suivant:

The following packages have been kept back:

Il y avait 3 paquets avec les noms linux, image, les en-têtes ne se souviennent pas des noms exacts.

Après avoir vérifié ici je cours

Sudo apt-get install [3 packages names here]

et les paquets installés sans erreurs ni avertissements. Pensant que le noyau ne peut pas être complètement mis à jour pendant l'exécution, j'ai également redémarré mon ordinateur portable. Voulant vérifier si la mise à jour était terminée, j'exécute les commandes suivantes [trouvées ici lors de la recherche de l'avertissement précédent] sur mon terminal:

$ uname -r
4.4.0-21-generic
$ dpkg -l | grep linux-image
ii  linux-image-4.4.0-21-generic 4.4.0-21.37 AMD64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-22-generic 4.4.0-22.40 AMD64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-24-generic 4.4.0-24.43 AMD64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-21-generic 4.4.0-21.37 AMD64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-22-generic 4.4.0-22.40 AMD64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-24-generic 4.4.0-24.43 AMD64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-generic 4.4.0.24.25 AMD64 Generic Linux kernel image

Mis à part le fait que j'ai trois images du noyau au lieu de deux, la question est:

Pourquoi ai-je plusieurs images du noyau installées? Étant donné que mon alias exécute autoremove/autoclean [et que j'ai redémarré une nouvelle fois et que j'ai réexécuté l'alias, il ne devrait pas être supprimé. De même, Ubuntu ne devrait-il pas utiliser la dernière version du noyau après le redémarrage?

update1: résultats de ls/boot:

$ ls /boot
abi-4.4.0-21-generic     config-4.4.0-22-generic      initrd.img-4.4.0-22-generic  memtest86+_multiboot.bin     vmlinuz-4.4.0-21-generic
abi-4.4.0-22-generic     config-4.4.0-24-generic      initrd.img-4.4.0-24-generic  System.map-4.4.0-21-generic  vmlinuz-4.4.0-22-generic
abi-4.4.0-24-generic     grub                         memtest86+.bin               System.map-4.4.0-22-generic  vmlinuz-4.4.0-24-generic
config-4.4.0-21-generic  initrd.img-4.4.0-21-generic  memtest86+.elf               System.map-4.4.0-24-generic

update2: Après avoir exécuté Sudo update-grub et redémarré, j'ai toujours:

$ uname -r
4.4.0-21-generic

Je me souviens également d'avoir vu le grub mis à jour à partir de la sortie du terminal lors de l'installation des nouveaux packages du noyau.

update3: J'ai essayé de démarrer dans le noyau 4.4.0-24 à partir des options de démarrage avancées de grub2, puis de relancer Sudo update-grub. Mais après un autre redémarrage, uname -r affiche toujours 4.4.0-21 :(

update4: Je pense à d'autres angles pour aborder le problème. J’ai envisagé de configurer manuellement grub pour qu’il se charge sur le nouveau noyau, mais c’est une solution de contournement qui n’est pas une solution, car j’aurais besoin de le refaire chaque fois que je télécharge un nouveau noyau. Au cours de cette opération, je me suis rappelé que j’ai utilisé grub-customizer pour apporter quelques modifications mineures (car j’ai démarré deux fois avec win7). Je colle les entrées pertinentes dans /boot/grub/grub.cfg si les gens peuvent repérer ce qui ne va pas et comment le réparer. C'est l'entrée de menu d'ubuntu et 2 (sur 9) entrées de sous-menu d'options de démarrage avancées:

# # BEGIN /etc/grub.d/40_custom_proxy ###
menuentry "Ubuntu 16" --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-4e2b96c0-04a0-4750-bd14-479f684bf3be' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  4e2b96c0-04a0-4750-bd14-479f684bf3be
else
  search --no-floppy --fs-uuid --set=root 4e2b96c0-04a0-4750-bd14-479f684bf3be
fi
linux   /boot/vmlinuz-4.4.0-21-generic root=UUID=4e2b96c0-04a0-4750-bd14-479f684bf3be ro  quiet splash $vt_handoff
initrd  /boot/initrd.img-4.4.0-21-generic
}
# ## END /etc/grub.d/40_custom_proxy ###

menuentry "Ubuntu, with Linux 4.4.0-21-generic" --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-advanced-4e2b96c0-04a0-4750-bd14-479f684bf3be' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  4e2b96c0-04a0-4750-bd14-479f684bf3be
    else
      search --no-floppy --fs-uuid --set=root 4e2b96c0-04a0-4750-bd14-479f684bf3be
    fi
    echo    'Loading Linux 4.4.0-21-generic ...'
    linux   /boot/vmlinuz-4.4.0-21-generic root=UUID=4e2b96c0-04a0-4750-bd14-479f684bf3be ro  quiet splash $vt_handoff
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-4.4.0-21-generic
}

menuentry "Ubuntu, with Linux 4.4.0-24-generic" --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-24-generic-advanced-4e2b96c0-04a0-4750-bd14-479f684bf3be' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  4e2b96c0-04a0-4750-bd14-479f684bf3be
    else
      search --no-floppy --fs-uuid --set=root 4e2b96c0-04a0-4750-bd14-479f684bf3be
    fi
    echo    'Loading Linux 4.4.0-24-generic ...'
    linux   /boot/vmlinuz-4.4.0-24-generic root=UUID=4e2b96c0-04a0-4750-bd14-479f684bf3be ro  quiet splash $vt_handoff
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-4.4.0-24-generic
}

Je ne suis pas sûr de sa pertinence - et ce fichier est censé ne pas être modifié. Mais je suppose que quel que soit le problème, il peut créer une empreinte dans ce fichier à identifier. (Espérons.)

5
Karsus

Après avoir regardé dans /boot/grub/grub.cfg en me demandant si je devais changer de contenu, je me suis rappelé que j’avais utilisé grub-customiser lors de la configuration de mon système. Je l'ai ouvert pour voir ce que je trouverais là-bas.

Ubuntu et Windows 7 ont été supprimés. D'une manière ou d'une autre, l'entrée Ubuntu supprimée avait les détails de la version 4.4.0-24 (peut-être que update-grub l'a mise à jour automatiquement?). Je ne suis pas sûr. J'ai supprimé mon entrée et restauré celui-ci en tant que première option. Ubuntu se charge maintenant sur le dernier noyau installé:

$ uname -r
4.4.0-24-generic

et j'espère que tout ira bien. (Au moins jusqu'à la prochaine mise à jour du noyau.)

D'après certaines entrées de grub-customizer, je soupçonne que si une entrée est étiquetée comme étant personnalisée, elle ne sera pas mise à jour lorsqu'un nouveau noyau sera installé? Pas certain.

Quoi qu'il en soit, merci à tous ceux qui ont commenté et m'a aidé à comprendre. Je n'aurais pas pu me passer de toi.

2
Karsus