# [solved] Erster Reboot - VFS: Unable to mount root fs - Grub

## spider-j

Hallo. Ich nutze jetzt seit einigen Jahren Ubuntu und da kam mir mal der Gedanke, ich könnte doch mal Linux austesten  :Wink: 

Wie dem auch sei: natürlich hatte ich nach kompilieren etc... beim ersten Versuch zu booten die erste "kernel panic" meines Lebens. Gehört ja wohl auch dazu. Na und nun, gilt es herauszufinden, woran es liegt. Ja, ich habe bereits google befragt und weiß, dass zu dem Thema viel zu finden ist. Allerdings habe ich eine sehr, ich würde sagen, "spezielle" Festplattensituation, mit der ich einfach den Durchblick verloren habe. D.h. ich bin mir einfach nicht sicher, ob ich einfach im Kernel eine Funktion zu viel deaktiviert habe oder ob ich einfach Grub nicht korrekt konfiguriert habe. 

Grundsituation: Ich hab hier einen Desktop mit drei internen Festplatten. 1x IDE, 2x SATA. Auf einer SATA habe ich Ubuntu /boot, swap + /, auf der zweiten SATA Ubuntu /home und auf der IDE Platte wollte ich jetzt mal Gentoo austesten. Im Bios sind die Platten wie folgt Nummeriert: CH0 = IDE, CH2 = SATA Ubuntu boot , CH3 = SATA Ubuntu home. Ich kann die Bootreihenfolge im Bios konfigurieren. Für alle Tests habe ich CH0 als erstes Bootdevice nach CDROM ausgewählt. 

fdisk -l von der Live-CD gibt folgendes aus:

```
Disk /dev/hda: 250.1 GB, 250059350016 bytes

255 heads, 63 sectors/track, 30401 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00061a44

   Device Boot      Start         End      Blocks   Id  System

/dev/hda1               1          33      265041   83  Linux

/dev/hda2              34         546     4120672+  83  Linux

/dev/hda3             547       30401   239810287+  83  Linux

Disk /dev/sda: 500.1 GB, 500107862016 bytes

255 heads, 63 sectors/track, 60801 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x56c14c9d

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1           60739       60802      500737    5  Extended

/dev/sda2   *           1       60739   487883776   83  Linux

/dev/sda5           60739       60802      500736   82  Linux swap / Solaris

Partition table entries are not in disk order

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes

255 heads, 63 sectors/track, 121601 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0xbf401897

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1      121601   976760001   83  Linux
```

Sprich: die IDE Platte wird vom Live-System mit hda bezeichnet. 

Ich habe mich größtenteils an das Gentoo Handbuch gehalten und die Platte so wie im Beispiel paritioniert:

/dev/hda1 = boot (ext2)

/dev/hda2 = swap

/dev/hda3 = / (ext3)

Die grub.cfg sieht wie folgt aus:

```
default 0

timeout 30

#splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.36-r5

root (hd0,0)

kernel /boot/kernel-2.6.36-gentoo-r5 root=/dev/hda3
```

Naja, wie gesagt kommt dann beim Versuch zu booten, nach der Auswahl im Grub irgendwann die Meldung, dass "hda3" nicht gemountet werden konnte und die Kernel panic: VFS: Unable to mount root fs Meldung.

Kann es sein, dass bei meiner Festplattenkonfiguration hd0,0 doch irgendwie verkehrt ist (obwohl es ja seltsam ist, dass der Kernel ja scheinbar versucht hat zu starten und der liegt ja auf /dev/hda1)? Ich muss dazu sagen, dass die Platte in meiner alten grub.cfg von Ubuntu als hd2,1 gelistet wurde (also Link zu Windows XP Installation, die da vorher drauf war). Aber da habe ich im Bios ja auch immer von CH2 gebootet und die Platte wird unter Ubuntu eh als sdc bezeichnet und nicht als hda.

Allerdings kann es auch sein, dass ich mit den Dateisystemen im Kernel irgendwie Murks gemacht habe. Weil ich hier externe Festplatten mit ntfs und ext4 habe, habe ich wie im Wiki berschrieben im Kernel fuse und ext4 aktiviert und auch beide Module in /etc/modules.autoload.d/kernel-2.6 hinzugefügt. Natürlich auch installiert mit 

```
emerge ext4
```

 und 

```
USE="suid" emerge ntfs3g
```

. Alle anderen mir bekannten Dateisysteme (also außer ext2/3, ext4, fuse) habe ich vorher im Kernel allerdings auch deaktiviert. Vielleicht war da doch eines zu viel?

Naja, also falls hier jemand so halbwegs bei meinem Geschreibsel durchblickt und spontan ne Idee hat, wäre schön zu wissen. Ansonsten werde ich die ganze Installation einfach nochmal versuchen.

Vielen Dank!Last edited by spider-j on Sun Feb 27, 2011 3:50 pm; edited 1 time in total

----------

## AmonAmarth

ändere folgende zeile ab: 

```
kernel /boot/kernel-2.6.36-gentoo-r5 root=/dev/hda3
```

zu:

```
kernel /boot/kernel-2.6.36-gentoo-r5 root=/dev/sda3
```

----------

## Max Steel

Eine Erklärung gibt es dazu auch:

Anders als das Live-System ist es auf dem fertigen System die Regel das die "ATA/ATAPI/MFM/RLL support" Deprecated sind und in normalen Fällen durch die "Serial ATA and Parallel ATA drivers" ausgetauscht werden sollten.

Also das ist die Norm, dadurch bekommt jedes Device einen sd Namen (hd gibs einfach nichmehr) (CDROMs und DVDs bekommen den Namen sr<Zahl>). Ändern tut sich ab dem Kernel nichtsmehr.

Grub muss dementsprechend konfiguriert sein, und Achtung, es kann sein das die Reihenfolge wie grub diese sieht anders ist als die Reihenfolge die dir der Kernel durchgibt (selten, vorallem gerne sind IDE hinter SATA Festplatten).

Auf jeden Fall sollte dir der Kernel,

 z.B. bei fehlerhaftem root= Eintrag in der grub.cfg (also /dev/sda2 gibt es nicht, ob du statt Gentoo, die *buntu Platte auswähltest kann der Kernel nicht unterscheiden),

die möglichen Einträge anzeigen und evtl lässt er dich auswählen welche du möchtest (ohne Neustart).

----------

## schmutzfinger

Bevor die Fehlermeldung kommt sollte der Kern alle gefunden Partitionen auflisten. Das kann dir helfen die richtige zu finden. Grub findet ja offensichtlich einen Kern also kann die grub config schonmal nicht ganz falsch sein. Du solltest überprüfen, dass das auch wirklich dein Kern ist und nicht der ubuntu-Kern.

Und jetzt zum wichtigsten Punkt. Wenn dein Kern das Dateisystem nicht unterstützt dann kann er es auch nicht mounten. Dein root Dateisystem musst du entweder fest einbauen oder eine initrd benutzen. Andere Distributionen (zB ubuntu) haben meist nur wenige Dateisysteme fest eingebaut und verwenden immer eine initrd. Für dich ist es am einfachsten zunächst mal dein Root Dateisystem fest in den Kern einzubauen.

Erklärung:

Das ext4 Modul liegt auf einer ext4 Partition und könnte daher erst nach dem mounten geladen werden. Das selbe gilt für /etc/modules.autoload.d/.

Eine initrd ist ein kleines Dateisystem, das beim booten kurz für / verwendet wird. Dieses Archiv wird normalerweise von einem Script gebaut. Und dieses Script kriegt raus welche Module in die Ramdisk rein müssen. Die Ramdisk selbst enthält neben den Modulen noch allerlei Programme und Scripte um die richtigen Module zu laden und schliesslich zum eigentlichen Root-Dateisystem umzuschalten und dort den init-Prozess zu starten.

Solche Ramdisks werden gerne verwendet wenn man einen Kern haben will, der auf möglichst vielen verschiedenen Rechnern für alle möglichen Bootszenarien herhalten soll. So ein ubuntu Kern und seine Ramdisk können eine Vielzahl von Dateisystemen, können Netzlaufwerke als / nutzen etc. Gleichzeitig sind sie aber nicht riesig groß weil die vielen Komponenten eben nicht fest eingebaut sind sondern ja nach Szenario von der Ramdisk nachgeladen werden. Dein Kern ist wahrscheinlich nur für den einen Rechner und somit ist es ok das Dateisystem fest einzubauen und erstmal auf die Ramdisk zu verzichten.

----------

## spider-j

Hm. Also erstmal Danke für die Antworten. Bin allerdings noch nicht weiter gekommen... Meint ihr mit dem "Auflisten", dass normalerweise etwas hinter "here are the available partitions:" stehen sollte? Da steht bei mir nämlich gar nix. Ich denke, ich werde jetzt mal die SATA Platten komplett abklemmen und dann nochmal ganz von vorne beginnen. Von hda3 auf sda3 umzustellen (in grub und fstab) hat nämlich auch nix gebracht.

EDIT: Achso, bei der gentoo Platte hab ich ext2 (boot) und ext3 (/) verwendet. Soweit ich das verstanden habe, habe ich ext4 Unterstützung ja nur zusätzlich aktiviert...

EDIT2: *peinlich* jetzt nach dem Löschen der Partitionen fällt mir gerade mal auf, dass ich Depp das Bootflag gar nicht gesetzt hatte   :Very Happy: 

EDIT3: hm. Immer noch das gleiche Problem nach kompletter Neuinstallation/kompilierung. ext4 habe ich erstmal weggelassen.

----------

## root_tux_linux

S-ATA/AHCI/EXT Treiber im Kernel vergessen?  :Smile: 

Btw  *Quote:*   

> Hallo. Ich nutze jetzt seit einigen Jahren Ubuntu und da kam mir mal der Gedanke, ich könnte doch mal Linux austesten  

 . Ich wusste doch Ubuntu ist kein Linux *fg*

----------

## Josef.95

Magst du mal die "lspci" Ausgabe posten?!

so das mal ersichtlich wird was für HDD Controller vorhanden sind.

Damit könnte man dann am ehesten herausfinden welche Treiber am besten zu verwenden sind.

----------

## spider-j

Jo. Ich geh auch schwer davon aus, dass ich irgendwas im Kernel vergessen habe. Hab jetzt noch einige Varianten von sdaX-sdcX durch und auch mal mit dem OS-Prober vom Grub 1.98 von der Ubuntu Partition versucht. Ist ja schon verdächtig, dass gar keine Partitionen gelistet werden. Ich hab mich bei den Kerneloptionen immer an der lshw Ausgabe von der Ubuntu Installation gehalten, bzw. wenn in der Beschreibung stand "Y if unsure" hab ich die Optionen auch drin gelassen. Aber bei der Menge an Optionen kann man schnell was übersehen, gerade, wenn man das noch nie gemacht hat.

Was vielleicht auch noch wichtig sein könnte. Ich habe einen Athlon64 4000+, will aber ein 32 Bit System kompilieren. Ist es dann eventuell verkehrt, das "athlon64" CFLAG zu benutzen? Hier mal die lspci Ausgabe:

```
00:00.0 Host bridge: VIA Technologies, Inc. K8T800Pro Host Bridge

00:00.1 Host bridge: VIA Technologies, Inc. K8T800Pro Host Bridge

00:00.2 Host bridge: VIA Technologies, Inc. K8T800Pro Host Bridge

00:00.3 Host bridge: VIA Technologies, Inc. K8T800Pro Host Bridge

00:00.4 Host bridge: VIA Technologies, Inc. K8T800Pro Host Bridge

00:00.7 Host bridge: VIA Technologies, Inc. K8T800Pro Host Bridge

00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI bridge [K8T800/K8T890 South]

00:09.0 Multimedia audio controller: Creative Labs SB Audigy (rev 03)

00:09.1 Input device controller: Creative Labs SB Audigy Game Port (rev 03)

00:09.2 FireWire (IEEE 1394): Creative Labs SB Audigy FireWire Port

00:0d.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8110SC/8169SC Gigabit Ethernet (rev 10)

00:0f.0 IDE interface: VIA Technologies, Inc. VIA VT6420 SATA RAID Controller (rev 80)

00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)

00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)

00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)

00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)

00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)

00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 86)

00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South]

00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration

00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map

00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller

00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control

01:00.0 VGA compatible controller: nVidia Corporation G73 [GeForce 7600 GT] (rev a2)
```

Achso: finde ich die ".config" von den Kerneloptionen nach der Kompilierung noch irgendwo oder wird die automatisch gelöscht?Last edited by spider-j on Sun Feb 27, 2011 2:25 pm; edited 1 time in total

----------

## doedel

 *Quote:*   

> Achso: finde ich die ".config" von den Kerneloptionen nach der Kompilierung noch irgendwo oder wird die automatisch gelöscht?

 

Die bleibt in /usr/src/linux/, beim nächsten mal make menuconfig ist die noch da.

Schau dass du unter Device Drivers "ATA/ATAPI/MFM/RLL support (DEPRECATED)  --->" deaktiviert hast.

Und unter "Serial ATA and Parallel ATA drivers" sämtliche VIA Teile mal anmachst.

AHCI Sata Support an

Und generic PATA/SATA anmachen, kann nie schaden.

SCSI Disk muss auch an sein.

An heisst nicht als Modul, sondern *

----------

## spider-j

Yeah, Danke! Ich hatte tatsächlich die VIA-Einträge übersehen.

----------

## doedel

Dann is ja gut  :Smile: 

Wir haben hier (schmerzlich) eine (genaue) Fehlermeldung vermisst - klar copy&paste geht ja wohl schlecht - aber abschreiben+tippen oder ein Fotohandy tuns auch, damit wäre dir sicher schon eher geholfen  :Wink: 

----------

## spider-j

 *doedel wrote:*   

> 
> 
> Wir haben hier (schmerzlich) eine (genaue) Fehlermeldung vermisst

 

Sorry. Ich gelobe Besserung. Wusste halt nicht genau, was außer der im Threadtitel zitierten Fehlermeldung noch relevant war. Und da ich weder Handy noch Fotokamera besitze, schwang da auch etwas Faulheit mit  :Wink: 

----------

