Ich habe versucht, alte Kernel zu löschen, aber ich muss alle Kernel auf meinem Ubuntu 11.04-Laptop gelöscht haben. Gibt es eine Möglichkeit, dies per USB-Boot zu beheben oder die Festplatte auf einem anderen System zu mounten?
Ich habe versucht, alte Kernel zu löschen, aber ich muss alle Kernel auf meinem Ubuntu 11.04-Laptop gelöscht haben. Gibt es eine Möglichkeit, dies per USB-Boot zu beheben oder die Festplatte auf einem anderen System zu mounten?
Antworten:
Booten Sie eine Live-CD (oder Live-USB), hängen Sie einige Systeme ein, chrooten Sie hinein und installieren Sie den Kernel. Hängen Sie nach einer erfolgreichen Installation des Kernels die Dateisysteme aus.
sudo mount /dev/sdXY /mnt
Hängen Sie einige spezielle Partitionen ein:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
(Optional) Wenn Sie mit einem Netzwerk verbunden sind, verwenden Sie die DNS-Server aus Ihrer Live-Umgebung (andernfalls können Hostnamen möglicherweise nicht aufgelöst werden):
cp /etc/resolv.conf /mnt/etc/resolv.conf
/mnt
:sudo chroot /mnt
apt-get install linux-image-generic
(kein Sudo erforderlich, da Sie nach einer Chroot root sind)Holen Sie sich nach einer erfolgreichen Installation des Kernels die Chroot-Datei heraus und hängen Sie einige Dateisysteme aus:
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt
sudo reboot
/mnt
. Ubuntu kümmert sich normalerweise um das Abmelden / Synchronisieren der Dateisysteme, aber das sieht für mich sauberer aus.
/dev/mdxxx
bereitstellen) ordnen Sie also ein Laufwerk zu - vorausgesetzt, es ist mdadm.
/etc/resolv.conf
(entfernen, wenn es sich um einen Symlink handelt) und so etwas wie nameserver 8.8.8.8
darin einfügen ( öffentlicher DNS-Server von Google). Ersetzen Sie es bei Bedarf.
cp /etc/resolv.conf /mnt/etc/resolv.conf
bevor Sie in die Chroot gehen. Das hat bei mir trotzdem funktioniert
Diese erweiterte Prozedur erklärt die meisten Komplikationen, die auftreten können, einschließlich Probleme bei der Verbindung mit dem Internet chroot
, wenn nicht bekannt ist, welches Kernel-Paket installiert werden soll (vor Ubuntu 12.10 ist dies nicht immer der Fall linux-image-generic
), und wenn zu Beginn nicht bekannt ist, welche Partition oder überhaupt welches physische Laufwerk das /
Dateisystem enthält und über eine separate /boot
Partition verfügt.
Ich habe dies nicht mit Bezug auf eines der anderen Verfahren hier geschrieben, obwohl Sie einige Ähnlichkeiten feststellen werden. Ich habe es lose auf die Prozedur hier gestützt (obwohl diese Anweisungen für etwas ganz anderes sind, habe ich sie ausgiebig angepasst und nur einige Befehle, nicht Prosa, werden kopiert).
Sie haben alle Kernelpakete entfernt und Ubuntu kann nicht ohne einen installierten Kernel booten. Die Lösung besteht also darin, von einer Live-CD / DVD / USB chroot
in das installierte System zu booten und einen Kernel darin zu installieren.
Booten Sie von einer Ubuntu-Live-CD / DVD oder einem Live-USB-Flash-Laufwerk.
Wählen Sie Ubuntu testen (nicht Ubuntu installieren ).
Stellen Sie beim Aufrufen des Desktops sicher, dass Sie mit dem Internet verbunden sind. Wenn dies nicht der Fall ist, stellen Sie eine Verbindung zum Internet her. Eine Möglichkeit, um festzustellen, ob Sie mit dem Internet verbunden sind, besteht darin, einen Webbrowser zu öffnen. Sie können sogar den Rest der Anweisungen befolgen, indem Sie diese Frage an Ubuntu in Ihrem Webbrowser auf dem Live-CD / DVD / USB-System anzeigen. Das kann ich nur empfehlen.
Öffnen Sie ein Terminalfenster mit Ctrl+ Alt+ T.
Führen Sie im Terminalfenster diesen Befehl aus, um Ihre Partitionen aufzulisten:
sudo parted -l
Sie werden so etwas sehen (aber es wird nicht genau so sein):
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 20.4GB 20.4GB primary ext4 boot
2 20.4GB 21.5GB 1072MB extended
5 20.4GB 21.5GB 1072MB logical linux-swap(v1)
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0
has been opened read-only.
Error: Can't have a partition outside the disk!
Untersuchen Sie die Ausgabe, die Sie erhalten haben, um den Gerätenamen der Partition zu ermitteln, die das /
Dateisystem des Ubuntu-Systems enthält, das auf der Festplatte installiert ist (das Sie reparieren).
Wenn Sie nur eine ext4
Partition haben, ist dies diejenige.
Wenn Sie mehr als eine ext4
Partition haben, ist dies wahrscheinlich die erste. Wenn die erste /boot
Partition jedoch sehr klein ist - weniger als ein Gigabyte -, handelt es sich möglicherweise um eine separate Partition (denken Sie auch daran).
Bitte beachten Sie, dass , ob oder nicht boot
aufgeführt ist unter Flags
sehr wenig mit dem zu tun hat , ob eine Partition ist eine separate /boot
Partition. Mein System, dessen Informationen oben aufgeführt sind, hat keine separate /boot
Partition.
Der Gerätename für die Partition beginnt mit dem Gerätenamen für das physische Laufwerk, der unmittelbar danach Disk
in der zweiten Zeile angegeben wird. Fügen Sie dann einfach die Partitionsnummer am Ende hinzu. Der Gerätename für die Partition, die mein /
Dateisystem enthält, lautet also /dev/sda1
. Hier sind die beiden Zeilen, in denen ich diese Informationen gefunden habe:
Disk /dev/sda: 21.5GB
1 1049kB 20.4GB 20.4GB primary ext4 boot
Wenn Sie mehr als ein physisches Laufwerk haben, erhalten Sie mehr als eine Auflistung wie oben gezeigt. Wenn Sie jedoch ext4
kein anderes Unix-ähnliches System installiert haben, verfügen Sie wahrscheinlich nur über ein Laufwerk, das Partitionen enthält , zumindest ohne diese absichtlich auf einem anderen Laufwerk erstellt zu haben. Wenn Sie mehrere Laufwerke mit ext4
Partitionen haben, befindet sich die ext4
Partition, die Ihr /
Dateisystem enthält, wahrscheinlich auf einem Laufwerk, das auch eine linux-swap
Partition enthält .
Es ist möglich , dass Ihr Ubuntu - System /
Dateisystem auf einer Partition vom Typ anders als ext4
. Wenn dies passiert, ist es fast immer ext3
und fast immer auf einem ziemlich alten System. Es ist sehr ungewöhnlich, dass dies der Fall ist, es sei denn, Sie richten die Dinge absichtlich selbst so ein.
Merken Sie sich den Gerätenamen der Partition, die Ihr /
Dateisystem enthielt (oder schreiben Sie ihn auf). Wenn es sich von unterscheidet /dev/sda1
, ersetzen Sie /dev/sda1
es in den folgenden Schritten.
(Wenn es so aussah, als hätten Sie eine separate /boot
Partition, merken Sie sich auch den Gerätenamen.)
Hängen Sie das /
Dateisystem an /mnt
und hängen Sie das /dev
Dateisystem an:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
Überprüfen Sie, ob das defekte Ubuntu-System, das Sie reparieren, über eine separate /boot
Partition verfügt, die separat gemountet werden muss. (Wenn Sie sicher sind , dass dies nicht der Fall ist, können Sie dies überspringen.)
Führen Sie zum Überprüfen Folgendes aus:
ls /mnt/boot
Wenn es eine Ausgabe gibt (wie grub memtest86+.bin memtest86+_multiboot.bin
, aber nicht unbedingt genau das), befindet sich das kaputte System /boot
auf derselben Partition wie es /
und Sie müssen nichts mounten, um darauf zuzugreifen.
Aber wenn es keine Ausgabe gibt, müssen Sie das /boot
Dateisystem mounten :
sudo mount BOOT-PARTITION /mnt/boot
Ersetzen Sie BOOT-PARTITION
durch den Gerätenamen der /boot
Partition (siehe Schritt 6 oben).
chroot
Hängen Sie die verbleibenden wichtigen virtuellen Dateisysteme in das kaputte System ein und legen Sie einige wichtige Umgebungsvariablen fest:
sudo chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
Stellen Sie fest, ob der Internetzugang chroot
von ping
einem zuverlässigen Host aus funktioniert, von dem bekannt ist, dass er normal auf Pings reagiert:
ping -c 5 www.google.com
Sie sollten so etwas sehen:
PING www.l.google.com (74.125.131.147) 56(84) bytes of data.
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=1 ttl=44 time=61.3 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=2 ttl=44 time=62.3 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=3 ttl=44 time=61.8 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=4 ttl=44 time=63.8 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=5 ttl=44 time=66.6 ms
--- www.l.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 61.367/63.212/66.608/1.897 ms
Wenn es meistens so aussieht und die vorherige Nummer % packet loss
weniger als 100 chroot
ist, funktioniert die Internetverbindung in der :
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
Es funktioniert, Sie können also Schritt 11 überspringen .
Wenn es meistens so aussieht und die vorherige Nummer % packet loss
100 ist, muss die Verbindung einer Fehlerbehebung unterzogen werden. Vergewissern Sie sich, dass die Verbindung auf dem Live-CD-System (z. B. über einen Webbrowser oder durch Ausführen desselben Befehls in einem separaten, nicht als chroot
Terminal gekennzeichneten Register / Fenster) funktioniert. Stellen Sie sicher, dass Sie den Befehl richtig eingeben. Verwenden www.google.com
Sie, wenn Sie nicht gewesen sind.
Wenn die Ausgabe überhaupt nicht wie oben aussieht, sondern stattdessen lautet ping: unknown host www.google.com
, funktioniert die Netzwerkfunktion in der noch nicht chroot
.
Richten Sie das Netzwerk in der ein chroot
. Überspringen Sie diesen Schritt, es sei denn, Sie haben unknown host
in Schritt 10 oben einen Fehler festgestellt.
Sichern Sie zum Einrichten des Netzwerks die defekte Systemdatei hosts
und kopieren Sie sie über die Live-CD-Systeme hosts
und resolv.conf
-Dateien. (Sie müssen die fehlerhafte Systemversion von nicht sichern resolv.conf
, da diese Datei automatisch im laufenden Betrieb neu generiert wird.)
Öffnen Sie einen neuen Terminal-Tab ( Ctrl+ Shift+ T) oder, wenn Sie möchten, ein neues Terminal-Fenster ( Ctrl+ Shift+ Noder nur Ctrl+ Alt+ T). Führen Sie diese Befehle darin aus:
sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
sudo cp /etc/hosts /mnt/etc/hosts
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
exit
(Der exit
Befehl am Ende schließt die neue Registerkarte / das neue Fenster.)
Wiederholen Sie Schritt 10 oben, um sicherzustellen, dass der Internetzugang jetzt von der aus funktioniert chroot
. Es sollte.
Finde heraus, welches Kernelpaket installiert werden soll. Normalerweise wird dies sein linux-image-generic
. Aber nicht immer.
Wenn Sie sich nicht sicher sind, welche Version Sie installieren sollen, hängt dies zum Teil von der von Ihnen installierten Ubuntu-Version und zum Teil von anderen Informationen ab. Wenn Sie nicht sicher sind , welche Ubuntu - Version Sie installiert haben, finden Sie heraus , indem Sie diesen Befehl ausgeführt wird (in der chroot
, nicht in einem separaten Terminal - Fenster / Tab):
lsb_release -r
Unter Ubuntu 12.10 (der nächsten Ubuntu-Version, die sich derzeit in der Entwicklung befindet) wird dies immer der Fall sein linux-image-generic
. (Siehe dies , dies und das .)
Auf Ubuntu 12.04 LTS sind die wahrscheinlichen Möglichkeiten linux-image-generic
und linux-image-generic-pae
. (Im Gegensatz zu früheren Versionen verfügt 12.04 nicht mehr über separate Server- und Desktop-Kernel.)
Wenn das installierte Ubuntu-System (das Sie reparieren) die 64-Bit-Version ist, verwenden Sie linux-image-generic
. ( linux-image-generic-pae
Gilt nur für 32-Bit-Systeme.)
Es ist möglich, ein 32-Bit-Ubuntu-System auf einem 32-Bit- oder 64-Bit-Computer zu installieren. Darüber hinaus verwenden Sie möglicherweise eine 32-Bit- oder 64-Bit-Live-CD, um ein 32-Bit-System zu reparieren. Also , wenn Sie nicht wissen , ob das installierte Ubuntu - System ist 32-Bit oder 64-Bit, überprüft , indem Sie diesen Befehl ausführen (in der chroot
, nicht in einem separaten Terminal - Fenster / Tab):
dpkg-architecture -qDEB_HOST_ARCH_BITS
Die Ausgabe ist entweder 32
oder 64
.
(Bitte beachten Sie, dass uname -m
ist nicht ein richtiger Weg , um diese Informationen zu finden, denn auch wenn sie in dem läuft chroot
, das wird Ihnen sagen , die Architektur des laufenden Kernel , der das Live - CD - Systems des Kernels und nicht der installierte (gebrochen) System des Kernels.)
Wenn das installierte Ubuntu-System (das Sie reparieren) die 32-Bit-Version ist, hängt der beste Kernel davon ab, wie viel RAM Sie haben. Ich empfehle:
linux-image-generic
wenn Sie weniger als 3 GB RAM habenlinux-image-generic-pae
Wenn Sie 3 GB RAM oder mehr haben.(Dies ist , wie Ubuntu - Installer wählt , die man zu gründen, seitdem das Installationsprogramm die Fähigkeit gewonnen PAE - Kernel zu installieren. Siehe die Auflösung zu diesem Fehler . Wenn Sie möchten , erfahren , was PAE ist, finden Sie in diesem Artikel Wikipedia . Wenn Sie möchten , Weitere Informationen zu PAE in Ubuntu finden Sie auf dieser Ubuntu-Wiki-Seite .)
Wenn Sie nicht wissen, wie viel RAM Sie haben, führen Sie diesen Befehl aus, um Folgendes herauszufinden:
grep MemTotal /proc/meminfo
Das ist in Kilobyte angegeben . Teilen Sie durch 1.048.576 (1024 2 ), um in Gigabyte zu konvertieren .
On veröffentlicht Ubuntu vor 12.04, wahrscheinlich Möglichkeiten sind linux-image-generic
, linux-image-generic-pae
und linux-image-server
.
linux-image-server
.Dies ist der Moment, auf den Sie gewartet haben! Installieren Sie einen Kernel auf dem kaputten System.
(Wie zuvor, sofern nicht ausdrücklich anders angegeben, werden diese Befehle chroot
in einem separaten Terminalfenster / -register ausgeführt.)
apt-get update
apt-get -y install linux-image-generic
Ersetzen Sie sie linux-image-generic
durch ein beliebiges anderes Kernelpaket, das Sie in Schritt 12 oben installiert haben, falls dies nicht der Fall ist.
Wenn Sie Schritt 11 ausführen mussten, um das Netzwerk im einzurichten chroot
, stellen Sie die alte hosts
Datei wieder her. Wenn Sie Schritt 11 übersprungen haben, überspringen Sie auch diesen Schritt.
Führen Sie zum Wiederherstellen diesen Befehl aus:
cp /etc/hosts.old /etc/hosts
Hängen Sie die Dateisysteme exit
aus den chroot
folgenden Quellen aus :
umount /proc || umount -lf /proc
umount /sys /dev/pts
exit
sudo umount /mnt/dev /mnt
Fahren Sie das Live-CD / DVD / USB-System herunter, indem Sie die Live-CD / DVD oder das USB-Flash-Laufwerk entfernen. Starten Sie das auf der Festplatte installierte System, das Sie gerade repariert haben. Sie haben ein Kernel-Paket darin installiert (und als Teil der Installation wird der bereitgestellte Kernel wieder zum GRUB2-Startmenü hinzugefügt). Wenn alles richtig funktioniert hat, sollte Ihr System ohne Probleme booten. (Ich halte es diesmal für möglich, dass das Booten etwas länger dauert als gewöhnlich.)
HAFTUNGSAUSSCHLUSS: Ich habe das oben beschriebene Verfahren nicht auf allen möglichen Ubuntu-Systemen getestet , daher liegt möglicherweise ein Fehler vor, den ich nicht identifiziert habe.
In Zukunft empfehle ich, immer zwei Kernel installiert zu lassen. Es ist gut, zwei zu haben, falls einer aus irgendeinem Grund nicht mehr funktioniert (Sie können den anderen im GRUB2-Startmenü auswählen). Wenn Sie beabsichtigen, zwei Kernel beizubehalten und versehentlich einen Kernel mehr deinstallieren, als Sie beabsichtigt haben, und einen Neustart durchführen möchten, bleibt Ihnen noch ein Kernel zum Booten übrig.
/etc/resolv.conf
wird @ xcal400 von verwaltet resolvconf
. Es wird automatisch generiert, wenn Sie NetworkManager verwenden, und kann sicher mit entfernt werden, rm /etc/resolv.conf
wie Sie herausgefunden haben.
Als ich meinen Kernel entfernte, fand ich diese Lösung in den Ubuntu-Foren. Ich folgte jedem Schritt und das System wurde wiederhergestellt. Hoffe es würde dir helfen.
Eine Chroot könnte funktionieren. Chroot bedeutet, dass Sie beim Starten eines Systems das Root-Dateisystem ändern. Sie haben beispielsweise von einer Live-CD gestartet, aber Sie ändern das Stammverzeichnis "/" in das Verzeichnis, in dem Ihr Ubuntu installiert ist.
Nehmen wir an, Ihr Ubuntu ist auf / dev / sda2 installiert, dann können Sie die folgenden Befehle ausführen:
Code:
sudo mount /dev/sda2 /mnt
sudo cp /etc/resolv.conf /mnt/etc/
sudo cp /etc/hosts /mnt/etc/
sudo mount --bind /dev/ /mnt/dev
sudo chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
Wenn Sie sich als Root "/" auf / dev / sda2 befinden, versuchen Sie, den Kernel zu installieren
apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub
Ich musste hier ein wenig raten, da ich das noch nie zuvor tun musste, aber das sollte es sein. Ich weiß nicht, ob eine fstab-Fehlermeldung angezeigt wird (z. B. "root kann nicht gefunden werden").
Jetzt müssen Sie einige Dinge bereinigen und die bereitgestellten Partitionen aushängen: Code:
rm /etc/resolv.conf
rm /etc/hosts
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl
umount /proc # if this doesn't work try umount -lf /proc
umount /sys
umount /dev/pts
exit
sudo umount /mnt
Und Sie können neu starten, um zu sehen, ob es funktioniert hat.
URL für den Thread: http://art.ubuntuforums.org/showthread.php?t=1688928
/etc/hosts
und entfernen /sbin/initctl
? Es ist aus einem Grund da.
/sbin/initctl
oder dbus-uuidgen
oder zu tun dpkg-divert
. Sie können ersetzen müssen /etc/hosts
mit dem Internet verbinden, aber nicht in der Regel, und wenn Sie das tun, sollten Sie das Original zurück setzen. Auf einem installierten System (anstelle einer Live-CD, die bootet und dann ein Squashfs-Dateisystem entpackt) müssen Sie weder ausführen update-initramfs
noch update-grub
den Kernel installieren.
linux-image-2.6.32-26-generic
wird nicht der richtige Kernel für die meisten Leute zur Installation sein.
Nachdem ich alte Kernel von Trusty14.04 gestern entfernt (FTR: Ich habe nicht die beiden jüngsten Zahlen entfernen!) Mein System nicht mehr starten würde. GRUB zeigte
Error: File not found
Error: You need to load the kernel first
Keine Ahnung warum.
Ich folgte dann Eliah Kagans hervorragenden Anweisungen , um linux-image-generic
von einer Live-CD zu installieren . Es wurden zwar 150 MB neuer Kernel installiert, aber das hat das Problem leider nicht gelöst.
Zum Glück habe ich diese Seite gefunden . Das Boot-Repair
Tool hat es richtig gemacht, mein System läuft wieder.
Ich wollte nur meine Erfahrungen hinzufügen, die ich heute beim Upgrade auf Willy gemacht habe. Ich habe ein bisschen aufgeräumt und war nur mit memtest beschäftigt. google hat mich dazu gebracht zu verstehen, dass ich die kerne entfernt habe. Eine Einschränkung, die ich hatte, ist ein langsames Netzwerk und daher war das Herunterladen der vollständigen ISO-Datei keine Option. Also habe ich Ubuntu Minimal CD (nur 40MB) verwendet und darauf gebootet. Nachdem ich die Hardware-Option erkannt hatte (die mir geholfen hat, eine Verbindung zum WLAN herzustellen), ging ich zur Shell-Option über. Ich habe die Anweisungen von @Lekensteyn befolgt und es ist mir gelungen. Einige Dinge jedoch: Sie müssen kopieren, resolv.conf
bevor Sie in die Chroot-Umgebung wechseln. Andernfalls wird Ihr DNS-Server beschädigt, und da der angemeldete Benutzer root ist, ist sudo nirgendwo erforderlich.
Ich weiß, dass es alt ist, aber ich dachte, das Hinzufügen dieser Antwort würde denjenigen einen Mehrwert bringen, bei denen das Problem auftreten würde.