Wie kann ich ein System wiederherstellen, nachdem ich versehentlich alle Kernel entfernt habe?
69
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?
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.
Öffnen Sie das Terminal
Mounten Sie die Ubuntu-Partition: 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
Chroot in die /mnt:sudo chroot /mnt
Installieren Sie den Linux-Kernel: 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:
Das hätte ich vorgeschlagen. Ich kann nicht verstehen, warum es nicht funktioniert hat.
Oli
Ok, danke für die Bestätigung. Ich habe auch die Finalisierungsschritte hinzugefügt, das Abhängen /mnt. Ubuntu kümmert sich normalerweise um das Abmelden / Synchronisieren der Dateisysteme, aber das sieht für mich sauberer aus.
Lekensteyn
1
@ MaheshKatta Sie müssen zuerst das RAID einbinden. Anstelle von Schritt zwei (bei dem Sie ein einzelnes Laufwerk /dev/mdxxxbereitstellen) ordnen Sie also ein Laufwerk zu - vorausgesetzt, es ist mdadm.
Oli
4
@James Bearbeiten /etc/resolv.conf(entfernen, wenn es sich um einen Symlink handelt) und so etwas wie nameserver 8.8.8.8darin einfügen ( öffentlicher DNS-Server von Google). Ersetzen Sie es bei Bedarf.
Lekensteyn
3
Nvm. Es sieht so aus, als müsste ich die Datei in chroot selbst bearbeiten. Vielleicht sollten Sie die Antwort ergänzen, cp /etc/resolv.conf /mnt/etc/resolv.confbevor Sie in die Chroot gehen. Das hat bei mir trotzdem funktioniert
Peter Raeves
56
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 /bootPartition 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 chrootin 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 ext4Partition haben, ist dies diejenige.
Wenn Sie mehr als eine ext4Partition haben, ist dies wahrscheinlich die erste. Wenn die erste /bootPartition 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 bootaufgeführt ist unter Flagssehr wenig mit dem zu tun hat , ob eine Partition ist eine separate /bootPartition. Mein System, dessen Informationen oben aufgeführt sind, hat keine separate /bootPartition.
Der Gerätename für die Partition beginnt mit dem Gerätenamen für das physische Laufwerk, der unmittelbar danach Diskin 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 ext4kein 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 ext4Partitionen haben, befindet sich die ext4Partition, die Ihr /Dateisystem enthält, wahrscheinlich auf einem Laufwerk, das auch eine linux-swapPartition 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 ext3und 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/sda1es in den folgenden Schritten.
(Wenn es so aussah, als hätten Sie eine separate /bootPartition, merken Sie sich auch den Gerätenamen.)
Hängen Sie das /Dateisystem an /mntund hängen Sie das /devDateisystem 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 /bootPartition 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 /bootauf derselben Partition wie es /und Sie müssen nichts mounten, um darauf zuzugreifen.
Aber wenn es keine Ausgabe gibt, müssen Sie das /bootDateisystem mounten :
sudo mount BOOT-PARTITION /mnt/boot
Ersetzen Sie BOOT-PARTITIONdurch den Gerätenamen der /bootPartition (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 chrootvon pingeinem 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 lossweniger als 100 chrootist, 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 loss100 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 chrootTerminal gekennzeichneten Register / Fenster) funktioniert. Stellen Sie sicher, dass Sie den Befehl richtig eingeben. Verwenden www.google.comSie, 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 hostin Schritt 10 oben einen Fehler festgestellt.
Sichern Sie zum Einrichten des Netzwerks die defekte Systemdatei hostsund kopieren Sie sie über die Live-CD-Systeme hostsund 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:
(Der exitBefehl 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-genericund 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-paeGilt 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 32oder 64.
(Bitte beachten Sie, dass uname -mist 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 haben
linux-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:
Ersetzen Sie sie linux-image-genericdurch 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 hostsDatei 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 exitaus den chrootfolgenden Quellen aus :
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.
Dies ist vielleicht die beste schriftliche Erklärung, wie man etwas Komplexes unter Linux macht, das ich je gelesen habe. Vielen Dank
ZincX
Wow, das ist so super hilfreich! Vielen Dank!
Rafał Cieślak
2
Vielen Dank, Eliah. Nachdem du dumm alle meine Linux-Images entfernt hast, hast du meinen Speck gerettet. Das einzige Problem, das ich hatte, war der folgende Schritt: sudo cp /etc/resolv.conf /mnt/etc/resolv.conf Ich habe den Fehler "cp: nicht durch baumelnden Symlink" /mnt/etc/resolv.conf "geschrieben. Ich fand diesen Thread und folgte den Anweisungen von einem Poster zu: "rm /mnt/etc/resolv.conf" vor "cp /etc/resolv.conf /mnt/etc/resolv.conf", um das baumelnde Symlink-Problem zu lösen.
Heutzutage /etc/resolv.confwird @ xcal400 von verwaltet resolvconf. Es wird automatisch generiert, wenn Sie NetworkManager verwenden, und kann sicher mit entfernt werden, rm /etc/resolv.confwie Sie herausgefunden haben.
Lekensteyn
3
Dies sollte die akzeptierte Antwort sein. Vielen Dank!
Jean-Michel Garcia,
0
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:
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:
Warum sollten Sie ersetzen /etc/hostsund entfernen /sbin/initctl? Es ist aus einem Grund da.
Lekensteyn
Dies scheint letztendlich auf LiveCDCustomization zu beruhen . Einige Schritte sind nicht erforderlich, um ein bereits installiertes System zu reparieren. Insbesondere brauchen Sie nichts mit /sbin/initctloder dbus-uuidgenoder zu tun dpkg-divert. Sie können ersetzen müssen /etc/hostsmit 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-initramfsnoch update-grubden Kernel installieren.
Eliah Kagan
Da bei diesem Verfahren kein Kernel-Metapaket installiert wird, wird der Kernel möglicherweise später nicht ordnungsgemäß aktualisiert, es sei denn, ein Metapaket ist installiert. Außerdem linux-image-2.6.32-26-genericwird nicht der richtige Kernel für die meisten Leute zur Installation sein.
Eliah Kagan
0
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-genericvon 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-RepairTool 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.confbevor 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.
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:
(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):
/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:
sudo reboot
quelle
/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 wienameserver 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 funktioniertDiese 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 Falllinux-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:
Sie werden so etwas sehen (aber es wird nicht genau so sein):
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 unterFlags
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: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 mitext4
Partitionen haben, befindet sich dieext4
Partition, die Ihr/
Dateisystem enthält, wahrscheinlich auf einem Laufwerk, das auch einelinux-swap
Partition enthält .Es ist möglich , dass Ihr Ubuntu - System
/
Dateisystem auf einer Partition vom Typ anders alsext4
. Wenn dies passiert, ist es fast immerext3
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:Ü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:
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 :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:Stellen Sie fest, ob der Internetzugang
chroot
vonping
einem zuverlässigen Host aus funktioniert, von dem bekannt ist, dass er normal auf Pings reagiert:Sie sollten so etwas sehen:
Wenn es meistens so aussieht und die vorherige Nummer
% packet loss
weniger als 100chroot
ist, funktioniert die Internetverbindung in der :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 alschroot
Terminal gekennzeichneten Register / Fenster) funktioniert. Stellen Sie sicher, dass Sie den Befehl richtig eingeben. Verwendenwww.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 nichtchroot
.Richten Sie das Netzwerk in der ein
chroot
. Überspringen Sie diesen Schritt, es sei denn, Sie habenunknown 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-Systemehosts
undresolv.conf
-Dateien. (Sie müssen die fehlerhafte Systemversion von nicht sichernresolv.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:
(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):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
undlinux-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):Die Ausgabe ist entweder
32
oder64
.(Bitte beachten Sie, dass
uname -m
ist nicht ein richtiger Weg , um diese Informationen zu finden, denn auch wenn sie in dem läuftchroot
, 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:
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
undlinux-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.)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 altehosts
Datei wieder her. Wenn Sie Schritt 11 übersprungen haben, überspringen Sie auch diesen Schritt.Führen Sie zum Wiederherstellen diesen Befehl aus:
Hängen Sie die Dateisysteme
exit
aus denchroot
folgenden Quellen aus :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.
quelle
/etc/resolv.conf
wird @ xcal400 von verwaltetresolvconf
. 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:
Wenn Sie sich als Root "/" auf / dev / sda2 befinden, versuchen Sie, den Kernel zu installieren
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:
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
quelle
/etc/hosts
und entfernen/sbin/initctl
? Es ist aus einem Grund da./sbin/initctl
oderdbus-uuidgen
oder zu tundpkg-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ührenupdate-initramfs
nochupdate-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
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.quelle
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.
quelle