[Archlinux] will nicht mehr starten / emergency shell

TheShooter

Lt. Junior Grade
Registriert
Juni 2011
Beiträge
370
Hi,
seit eben gerade wirft mich Arch Linux nur noch in die emergency shell. Habe seit dem letzten boot nur Windows gestartet, was aber keine Probleme machen sollte, da das auf einer anderen Platte ist.
Arch Linux = sdb
sdb1 = root partition
sdb2 = swap
sdb3 = home
Windows = sda

Konsolenoutput:

Loading ../vmlinuz-linux......
Loading ../initramfs-linux.img.....ready.
Probing EED (edd=off to disable)... ok

Decompressing Linux... Parsing ELF... done.
Booting the kernel.
:: running early hook [udev]
:: running hook [udev]
:: Triggering uevents...
:: performing fsck on `/dev/sdb1`
fsck: fsck.ntfs: not found
fsck: error 2 while executing fsck.ntfs for /dev/sdb1
ERROR: fsck failed on `/dev/sdb1`
:: mounting `dev/sdb1` on real root
mount: unknown filesystem type `ntfs`
You are now being dropped into emergency shell.
sh: can`t access tty; job control turned off
[rootfs /]# _ (Hier kann ich dann Eingebungen machen)

Ich erinnere mich, dass das Filesystem frueher wahrscheinlich ext4 oder so aehnlich war, ich habe unter windows diese Festplatte (sdb) nicht angefasst. Bei frueheren Windowsstarts funktionierte Archi noch ohne Probleme.
Allerdings habe ich das letzte mal Arch versucht mit "shutdown " herunterzufahren, worauf ich aufgefordert wurde entweder Strg + D zu druecken, oder Enter (Glaube ich). Ich habe mich fuer ersteres entschieden, und ich konnte wieder Eingaben mit root machen. Danach waehlte ich die Option reboot um in Win7 zu booten. Jetzt, da ich wieder Archi starten wollte, gibt es diese Probleme.

Waehre dankbar fuer Hilfe.

MfG,
TheShooter
 
Hast du irgendetwas geändert so das vielleicht sda jetzt sdb ist und sdb jetzt sda? ...ändere es doch einfach mal von Hand im Bootmanager.
 
Zuerst die gute Nachricht: Da Dein Rechner schon mal das Kernel-Image ("Loading ../vmlinuz-linux......") lädt, ist die Wahrscheinlichkiet groß, daß Deine Linux-Daten überlebt haben.

Allerdings hätte ich noch zwei Frage zu Deiner Konfiguration:
1) Wie lädst Du Linux? (Zuerst Win7-Bootloader, dann GRUB?)
2) Du hast Linux nicht auf einer NTFS-Partition installiert, oder?


Was Du versuchen könntest um wieder Linux booten zu können wäre:

1) Supergrub2
Das iso-Image von Supergrub2 von

http://www.supergrubdisk.org/super-grub2-disk/ -> download

(Ich empfehle Version 1.99b1, geht sehr schnell, da nur 2MB groß)
runterladen und dann das iso auf CD brennen.
Von dieser CD booten und die angebotenen Bootalternativen durchprobieren...

2) Knoppix (o.ä. Live Distro)
Von einer Knoppix-CD (oder wahlweise auch DVD) booten, /dev/sdb1 testweise mounten und nachsehen, ob sdb1 wirklich NTFS ist bzw. ob nicht evtl. sda und sdb vertauscht worden sind... Falls ja, musst Du in der grub.lst dies halt entsprechend korrigieren.
Und "fdisk -l /dev/sda" bzw. "fdisk -l /dev/sdb" solltest Du Dir auch ansehen...


HTH

BigNum
 
Da er denkt, dass sdb1 mit NTFS formatiert ist, könnte es natürlich sein, dass sich da irgendetwas gedreht hat, und sda jetzt sdb ist bzw. umgekehrt. Du könntest also im Bootloader einfach mal e drücken, um den Booteintrag zu bearbeiten, dann einfach bei root den Eintrag auf /dev/sda1 ändern. Wobei das überhaupt seltsam ist, da er ja das Kernel-Image noch lädt, und das sollte ja nach deiner Darstellung auch auf sdb1 liegen. Wenn du noch die Installations-CD/Usb-stick hast, könntest du den booten und damit mal nachschauen, wie das mit deinen Partitionen aussieht. Vielleicht auch einfach das Kernelimage neubauen. Dazu der Anleitung zum chroot folgen und dann einfach folgenden Befehl ausführen:

mkinitcpio -p linux
 
Also, ich boote Linux direkt aus dem Bios. Wenn ich die emergency shell mit poweroff -f beende, kann ich ganz normal wieder in Arch reinbooten. Kein Datenverlust, nichts. Wenn ich Linux allerdings ordnungsgemaess runterfahre, lande ich wieder in der e-shell. Wie es scheint wird bei so einem boot dann der fsck ausgefuehrt.

Kommt man so vielleicht einer Problemloesung naeher?

PS: sdb ist nicht mit ntfs formatiert, sondern:

sdb
sdb1 (root) = ext4
sdb2 (swap) = swap (82)
sdb3 (home) = ext4

Wird so unter cfdisk nach einem erfolgreichen boot erkannt.
 
Code:
/etc/fstab:

# UUID=453719cd-40a7-4a4f-a3b5-8106f798583e
/dev/sdb1                             /                            ext4             rw,relatime,data=ordered     0 1

# UUID=(wird das benoetigt? Schlimme schreibarbeit)
/dev/sdb3                             /home                   ext4              rw,relatime,data=ordered     0 2

# (wieder zu faul)
/dev/sdb2                             none                      swap            defaults      00
Wie gesagt, nach einem poweroff in der emergencyshell laesst sich arch wunderbar starten, nach einem poweroff in dem erfolgreich gebooteten Linux jedoch nicht.

Waere dankbar fuer Hilfe. :)
 
Sind denn überhaupt irgendwo (eventuell auf einer ganz anderen Platte) NTFS-Partitionen vorhanden? Ansonsten würde mir spontan einfallen in der /etc/fstab UUIDs statt /dev/sdxN Pfade zu verwenden, also in etwa

Code:
UUID=453719cd-40a7-4a4f-a3b5-8106f798583e / ext4 rw,relatime,data=ordered 0 1
 
Ja, auf der Windowsplatte sind beide vorhandene Partitionen (sda2;sda2) mit ntfs formatiert. Sollte das denn Probleme machen? Kann man damit das "poweroff -f Problem" erklaeren?

Das mit den UUIDs werde ich mal testen, da ich glaube, dass Linux die auch standartmaessig benutzt, oder?

MfG,
TheShoooter
 
Dies hat leider nichts gebracht, der Fehler tritt immer noch auf. Weiss jemand vielleicht noch eine Loesung?
 
Aus meinen Resterinnerungen zu Linux schließe ich, dass er - daran ist gerne mal ein Kernel Update Schuld - die Platten nun anders nummeriert. Darum ist die Windows-Platte nicht mehr sda sondern nun sdb.

Du musst die fstab jetzt passend umändern, dann läuft das wieder. Alternativ verwendest du die UUIDs, da ist es wurscht, ob der Kernel eine Platte jetzt sda oder sdb nennt.
 
Wie gesagt, ich verwende UUIDs. Habe Arch Linux nochmal KOMPLETT neu aufgesetzt, und fstab diesmal mit -U anstatt mit -p generiert. Trotzdem tritt das selbe Problem auf. Was kann das bloss sein?

Waere wie immer dankbar fuer Hilfe. Wie gesagt, nach einem poweroff -f in der emergency shell bootet es hervorragend. Allerdings ist das jedesmal unnoetiger Zeitvertreib. :(

MfG,
TheShooter
 
Das war schlau. Wenn ich die NTFS Windowsplatte abklemme, findet er aufeinmal sdb1 nicht mehr. "Waiting for /dev/sdb1 for 10 seconds..." Ich komme dann in eine recoveryshell. Allerdings hat meine Linuxplatte nur 200 GB, und genau das wird bei sdb unter Linux angezeigt. (Wenn der boot erfolgreich war) Meine NTFS Windowsplatte hat 1,5 TB, und die wird unter sda angezeigt. Irgendwie scheint Linux da was zu verwechseln... Es scheitert dann immer am fsck. Wohlgemerkt benutzte ich UUIDs...

Waere dankbar fuer Hilfe,
TheShooter
 
TheShooter schrieb:
Irgendwie scheint Linux da was zu verwechseln... Es scheitert dann immer am fsck. Wohlgemerkt benutzte ich UUIDs...
UUID ist schon der richtige Ansatz, allerdings nicht in der "/etc/fstab", sondern in der "grub.cfg"!

Boote Linux, suche die Datei "grub.cfg" (sollte normalerweise unter "/boot/grub2/grub.cfg" liegen) und mache davon eine Sicherheitskopie.
Nun editierst Du diese Datei und kopierst die Zeilen unter "menuentry <DeinArchlinux>" und fügst sie gleich wieder ein.
Nun änderst Du den Eintrag "linux ... root=/dev/sdb1 ..." wie in

http://forums.fedoraforum.org/showthread.php?t=262670

oder

https://wiki.archlinux.org/index.php/GRUB2#Combining_the_use_of_UUIDs_and_basic_scripting

beschrieben, so daß im neuen Eintrag Deine UUID erscheint, also "linux ... root=UUID=<Deine UUID>..." und gibst ihm einen Namen (menuentry) wie "Archlinux UUID" oder ähnlich.

Dann noch einen Eintrag "timeout=5" in die "grub.cfg" hinzufügen, falls es diesen noch nicht gibt.
Jetzt "grub.cfg" speichern und neu booten.

Nach dem Booten sollte beim GRUB2 Startbildschirm (mindestens) Deine zwei "Archlinux..."-Einträge auswählbar sein. Hier den Eintrag mit "Archlinux UUID" auswählen und booten.
Wenn das funktioniert, kannst Du den alten Eintrag mit dem festverdrahtetem "... root=/dev/sdb1 ..." und das "timeout=5" (falls es das ursprünglich auch nicht gab) löschen ;)


HTH

BigNum
 
Mhh, leider verwende ich syslinux und nicht grub. Gibt es eine ähnliche Vorgehensweise für Syslinux?
Ich habe schon in der /boot/syslinux/syslinux.cfg unter APPEND Linux und Fallback die Bootplatte auf sdb1 ro gewechselt.

Wäre wie immer dankbar für Hilfe.

MfG,
TheShooter
 
Und ich dachte Archlinux verwendet auch GRUB, naja wieder was gelernt ;)!

Aber mit Syslinux kann man auch die "festverdrahtete Variante" durch UUID ersetzen, siehe

https://wiki.archlinux.org/index.php/Syslinux#Configuration

Also genau wie oben (meinen letzten Post): Zuerst booten, von "syslinux.cfg" Sicherheitskopie anfertigen, alles unter "LABEL Archlinux" duplizieren und schliesslich

APPEND root=/dev/sdb1 ro

durch

APPEND root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff ro

(natürlich mit Deiner UUID) ersetzen plus evtl. ein "TIMEOUT 10" mit einbauen.


HTH

BigNum
 
Zurück
Oben