web-dev-qa-db-fra.com

Comment restaurer des fichiers supprimés dans / boot? (vmlinuz manquant, le système ne démarre pas)

J'ai effacé par erreur l'un des fichiers vmlinuz de mon répertoire /boot. Cependant, j'ai effectué une sauvegarde de /boot dans /tmp, juste pour en être sûr.

Par conséquent, je ne peux pas démarrer car je reçois l'erreur de fichier vmlinuz manquante. J'ai donc démarré en utilisant une clé USB, mais lorsque je suis entré dans le répertoire /boot de mon disque dur (sda5), il est complètement vide. Si je copie les fichiers de /tmp/boot dans ce répertoire /boot, je ne peux toujours pas démarrer.

Comment puis-je restaurer ces fichiers dans le répertoire approprié?

6
NVaughan

vmlinuz est l'image du noyau Linux elle-même (le z indique qu'elle est compressée).

Réinstallation du paquetage de noyau actuellement référencé par linux-image-generic (ou votre noyau HWE ) et probablement linux-singed-image-generic dans les environnements de démarrage sécurisé UEFI devrait résoudre votre problème.

Réinstallation d'un noyau à partir d'un chroot

Démarrez de préférence le support live de la même version et montez la partition de votre installation (vous pouvez le faire avec Nautilus, ce sera quelque chose comme /media/ubuntu/… alors) ou votre partition /boot (ce sera un peu plus complexe). Ce sera ${my_installation} dans les instructions suivantes.

Examinez le /lib/modules/ de votre installation (${my_installation}/lib/modules/) pour connaître les versions de noyau particulières installées et choisissez le numéro de version le plus récent que vous pouvez trouver. Il est référencé par ${kernel_ver} dans les instructions suivantes, lors de mon test VM c'était 3.16 .0-46.

Comme je le disais dans un commentaire précédent, la procédure est très similaire à la réinstallation de Grub dans chroot, alors laissez-moi citer cette réponse avec de légères modifications:

  1. Bind mount d'autres choses nécessaires:

    for i in /sys /proc /run /dev; do Sudo mount --bind "$i" "${my_installation}$i"; done
    
  2. chroot dans votre installation Ubuntu:

    Sudo chroot ${my_installation}
    
  3. À ce stade, vous êtes dans votre installation, pas dans la session en direct, et vous exécutez en tant que root. …

Maintenant, réinstallez votre noyau (le package signed est destiné à l’amorçage sécurisé UEFI):

apt-get install --reinstall linux-image-${kernel_ver}-generic linux-signed-image-${kernel_ver}-generic

Vérifiez le répertoire /boot si le initrd de ce noyau est toujours manquant. Pour le générer manuellement, exécutez:

mkinitramfs -o /boot/initrd.img-${kernel_ver}-generic ${kernel_ver}-generic

Mon exemple:

mkinitramfs -o /boot/initrd.img-3.16.0-46-generic 3.16.0-46-generic

Ensuite, lancez update-grub comme dans la réponse citée afin de vous assurer que le "nouveau" noyau et initrd sont inclus.

Si vous devez également réinstaller Grub, vous pouvez suivre les étapes restantes. Rappelez-vous que ces instructions ont été écrites pour le MBR. Si vous avez UEFI (les chargeurs de démarrage de différents systèmes d’exploitation ne doivent pas s’écraser), vous devez vérifier que grub-efi-AMD64-bin est bien installé avant de réinstaller Grub.


8
LiveWireBT