
Ich habe versehentlich eine der vmlinuz
Dateien in meinem /boot
Verzeichnis gelöscht. Zur Sicherheit habe ich jedoch eine Sicherungskopie /boot
davon erstellt./tmp
Folglich kann ich nicht booten, da ich die Fehlermeldung „vmlinuz-Datei fehlt“ erhalte. Ich habe also mit einem Live-USB-Stick gebootet, aber als ich in das Verzeichnis auf meiner Festplatte (sda5) gelangte , war es völlig leer. Wenn ich die Dateien aus diesem Verzeichnis /boot
kopiere , kann ich trotzdem nicht booten./tmp/boot
/boot
Wie kann ich diese Dateien im entsprechenden Verzeichnis wiederherstellen?
Antwort1
vmlinuz
ist das Linux-Kernel-Image selbst (das z zeigt an, dass es komprimiert ist).
Neuinstallation des Kernelpakets, auf das aktuell verwiesen wird vonLinux-Image-generisch(oder IhreHWE-Kernel) und wahrscheinlichLinux-Singed-Image-Generikumin UEFI-Secure-Boot-Umgebungen sollte Ihr Problem gelöst sein.
Neuinstallation eines Kernels aus einem Chroot
Booten Sie vorzugsweise Live-Medien derselben Version und mounten Sie die Partition Ihrer Installation (das geht mit Nautilus, das wird /media/ubuntu/…
dann so ähnlich sein) oder Ihre /boot
Partition (das wird etwas komplexer). Dies wird ${my_installation}
in den folgenden Anweisungen beschrieben.
Suchen Sie in /lib/modules/
Ihrer Installation ( ${my_installation}/lib/modules/
) nach den jeweiligen Kernel-Versionen, die installiert wurden, und wählen Sie die neueste Versionsnummer aus, die Sie finden können. Diese wird ${kernel_ver}
in den folgenden Anweisungen referenziert, in meiner Test-VM war es 3.16.0-46.
Wie ich bereits in einem Kommentar erwähnt habe, ist das Verfahren sehr ähnlich zur Neuinstallation von Grub in chroot.diese Antwortmit einigen geringfügigen Änderungen:
Bind Mounten Sie einige andere notwendige Dinge:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "${my_installation}$i"; done
chroot
in Ihre Ubuntu-Installation:sudo chroot ${my_installation}
An diesem Punkt befinden Sie sich in Ihrer Installation (nicht in der Live-Sitzung) und führen die Sitzung als Root aus. …
Installieren Sie nun Ihren Kernel neu (diesigned
Paket ist für UEFI Secure Boot):
apt-get install --reinstall linux-image-${kernel_ver}-generic linux-signed-image-${kernel_ver}-generic
Überprüfen Sie das /boot
Verzeichnis, wenn der initrd
Kernel für diesen noch fehlt. Um ihn manuell zu generieren, führen Sie Folgendes aus:
mkinitramfs -o /boot/initrd.img-${kernel_ver}-generic ${kernel_ver}-generic
Mein Beispiel:
mkinitramfs -o /boot/initrd.img-3.16.0-46-generic 3.16.0-46-generic
Führen Sie es dann update-grub
wie in der zitierten Antwort aus, damit Sie sicher sein können, dass der „neue“ Kernel und das Initrd enthalten sind.
Wenn Sie Grub ebenfalls neu installieren müssen, können Sie die restlichen Schritte befolgen. Denken Sie daran, dass diese Anweisungen für MBR geschrieben wurden. Wenn Sie UEFI haben (wo Bootloader verschiedener Betriebssysteme sich nicht gegenseitig überschreiben sollten), müssen Sie grub-efi-amd64-bin
vor der Neuinstallation von Grub überprüfen, ob die Installation installiert ist.