Neuinstallation eines Kernels aus einem Chroot

Neuinstallation eines Kernels aus einem Chroot

Ich habe versehentlich eine der vmlinuzDateien in meinem /bootVerzeichnis gelöscht. Zur Sicherheit habe ich jedoch eine Sicherungskopie /bootdavon 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 /bootkopiere , kann ich trotzdem nicht booten./tmp/boot/boot

Wie kann ich diese Dateien im entsprechenden Verzeichnis wiederherstellen?

Antwort1

vmlinuzist 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 /bootPartition (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:

  1. Bind Mounten Sie einige andere notwendige Dinge:

     for i in /sys /proc /run /dev; do sudo mount --bind "$i" "${my_installation}$i"; done
    
  2. chrootin Ihre Ubuntu-Installation:

     sudo chroot ${my_installation}
    
  3. 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 (diesignedPaket 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 /bootVerzeichnis, wenn der initrdKernel 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-grubwie 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-binvor der Neuinstallation von Grub überprüfen, ob die Installation installiert ist.


verwandte Informationen