Installieren eines neuen Systems mit einer GPT- partitionierten Festplatte, die einer einzelnen Partition zugeordnet ist, ext4- formatiert, extlinux (Version 4.05) als Bootloader, Ubuntu Core Version 13.10 amd64 als rootfs und Ubuntu linux-image-3.11.0-18-generic als Kernel, und extlinux-update zur Erzeugung der Bootloader-Konfiguration.
Das Ergebnis nach dem Neustart (noch in einer KVM-basierten virtuellen Maschine) ist eine (initramfs) -Aufforderung und diese Meldungen:
mount: can't read '/etc/fstab': No such file or directory
mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory
The filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.
BusyBox ist v1.20.2.
Regression:
- Das Dateisystem wurde mit überprüft
fsck.ext4
Überprüfen Sie, ob Root vorhanden ist
(initramfs) ls -l /dev/[hs]da*
ls: /dev/[hs]da*: No such file or directory
Root-Boot-Argument
(initramfs) cat /proc/cmdline
initrd=/boot/initrd.img-3.11.0-18-generic ro quiet BOOT_IMAGE=/boot/vmlinuz-3.11.0-18-generic
Überprüfen Sie die geladenen Module
(initramfs) cat /proc/modules
e1000 145368 0 - Live 0xffffffffa0000000
/ boot Ordnerinhalt
$ sudo ls -l boot
-rw------- 1 root root 3296162 Feb 18 22:37 System.map-3.11.0-18-generic
-rw-r--r-- 1 root root 1007681 Feb 18 22:37 abi-3.11.0-18-generic
-rw-r--r-- 1 root root 163258 Feb 18 22:37 config-3.11.0-18-generic
drwxr-xr-x 2 root root 4096 Mar 17 20:13 extlinux
-rw-r--r-- 1 root root 4995000 Mar 16 23:35 initrd.img-3.11.0-18-generic
-rw------- 1 root root 5634192 Feb 18 22:37 vmlinuz-3.11.0-18-generic
Wie lässt man dieses System zur erwarteten Standard-Bash-Eingabeaufforderung booten?
Antworten:
Ändern Sie Ihren Kernel-Boot-Parameter, indem Sie die
root=/dev/sdaX
Option setzen.sdaX
wäre deine/
oderroot
Partition. Beim nächsten Start werden Sie feststellen, dass Sieinitramfs
versuchen, die Partition zu mounten, bevor Sie versuchen, auf/etc/fstab
die Dateisysteme zuzugreifen und diese zu mounten .Weitere Informationen finden Sie in der Frage " Verwendet initramfs / etc / fstab? ".
quelle
root=/dev/sdaX
verbessert die Situation, ist es nicht mehr ein ,(initramfs)
sondern einbash
Login - Prompt statt.root=/dev/sdaX
zum Kernel-Boot muss ich das vorgeschlagene aktualisieren/mnt/etc/default/extlinux
und ändern und erneut ausführen .EXTLINUX_ROOT=""
EXTLINUX_ROOT="/dev/sdaX"
extlinux-update
Was Sie verstehen müssen,
initramfs
ist, dass es sich um ein Dateisystem handelt. Seit Kernel 2.6 ist es im Grunde das einzige vom Kernel auferlegte Dateisystem (abgesehen von VFS, das vermutlich auch ein Dateisystem ist) auf Ihrem Computer. Ihrinitramfs image
ist ein Disk-Image.In Ihrer
initramfs image
Liste finden Sie alle Dateien, die Ihre Distribution als entscheidend genug erachtet hat, um Ihre Root-Festplatte zu finden. Normalerweise sind das Busybox und alle Kernel-Module, die Sie benötigen, um Ihr Root-Gerät zu finden und zu mounten. Dies funktioniert nicht für Sie.Alles in allem gibt es hier kein wirkliches Rätsel. Wenn Sie sich in einer Eingabeaufforderung des Terminals zurechtfinden, können Sie im Navigationsbereich navigieren.
initramfs.
Sie müssen ihn jedoch zuerst entmystifizieren.In erster Linie und noch einmal - dies ist nur
/.
der Linux-Stamm, der Linux-Stammtypen ausführt. Wenn es sich in einer separaten Datei von Ihrem Kernel befindet, ist es tatsächlich bereits Ihr zweites Root-Gerät. Jeder Linux-Kernel enthält ein im Grunde genommen leeres,/
das zuerst gemountet wird, bevor Sie es herunterladeninitramfs.
Was mehr
initramfs
ist, ist die wahre Wurzel. Hier initialisiert der Linux-Kernel den Benutzerbereich,init
indem er alle Verantwortlichkeiten für eventuell auftretende Probleme ausführt und anschließend aufgibt . Sieinit
scheinen wie viele andere Busybox zu sein, was bedeutet, dass die Steuerung der Aktionen so einfach sein sollte wie das Bearbeiten der zugehörigen Shell-Skripte.Warum dann der Fehler, dass er nicht gefunden wird? Mit
init?
ziemlicher Sicherheit handelt es sich um ein Programm mit dem Namen, ininit
das sich Ihr tatsächlicherinit
Code über ein Shell-Skript ausführen soll.Am auffälligsten ist für mich, dass die Kernel-Pseudo-Dateisysteme -
dev sys proc
- nicht eingebunden werden . Dies ist entweder sehr beunruhigend oder ein sehr guter Hinweis. Sie erwähnen KVM, was mich dazu bringt, die Kernelfähigkeiten in Frage zu stellen. Aber können wir zuerst etwas anderes ausprobieren, bevor wir diese dunkle und geriffelte Straße entlangfahren?Es fällt mir auf, dass die Fehlermeldung immer wieder auftritt:
Andernfalls müssen Sie Ihr
initramfs
Image neu erstellen . Starten Sie dazu eine Live-CD und führen Sie das von Ihrer Distribution bereitgestellte Tool aus, um dieses Ziel zu erreichen. Oh, und bitte stellen Sie sicher, dass diese Live-Diskette im EFI- Modus geladen ist .Also hier ist das einzig wirklich Außergewöhnliche
initramfs - switchroot.
Der Linux-Kernel bietet einen speziellen Systemaufruf für den frühen Benutzerbereich und für die Verwaltung des Wechsels von
initramfs
Ihrem Root-Plattengerät. Es funktioniert, indem Sie zuerst Ihre Root-Festplatte in einen Mountpoint einhängeninitramfs
und dann das Root-Dateisystem hineinschwenken. Ich nehme an, Ihrinitramfs's
Ziel-Mount-Punktroot
basiert auf der Art und Weise, wie er darüber stöhnt. Warum nicht sicherstellen, dass es da ist?Für weitere Nachforschungen müssen Sie ein wenig grobkörnig werden. Passen Sie Ihren Bootloader an ...
... als Kernelparameter.
quelle
efibootmgr
an Ihrer Eingabeaufforderung in Ihrer virtuellen Maschine außer Betrieb setzen können .Ich hatte das gleiche problem Was Alex gesagt hat, ist richtig. Zuerst habe ich meine fstab angepasst, aber das hat nicht geholfen. Also habe ich meine Made überprüft. Wenn Sie die Möglichkeit haben, auf das Menü zuzugreifen.
Das hat mein Problem gelöst. Nach dem Neustart benötigte mein Linux längere Zeit, um die Festplatte zu überprüfen. Aber jetzt klappt es wieder.
Ich hoffe, ich konnte dir helfen.
Grüße
quelle