# [erledigt] schöne Bescherung mit neuem Kernel

## Christoph Schnauß

hallo,

ich habe eine Weile gebraucht, um Grub zu installieren und ihm auch noch zu sagen, was wie gemountet werden soll. Die schöne Bescherung kam vorgestern, weil ich nach vielen vergeblichen Versuchen endlich herausbekam, daß eine eigentlich noch benötigte Windows-Installation (Win XP) irgendwie gelöscht worden war, die Partition war noch da, aber völlig leer, da war also auch nix drauf, was hätte booten können.

Statt an meinem neuen Gentoo weiterbauen zu können mußte ich also erstmal Windows neu aufsetzen, dann Grub neu installieren. Siehe da, jetzt habe ich das gewünschte Menü, kann wahlweise WinXP oder Gentoo booten, und es wäre eigentlich alles in Ordnung, wenn ... nunja, wenn es da nicht ein klitzekleines Problem gäbe.

Meine /boot/grub/device.map sieht folgendermaßen aus:

```
(fd0)     /dev/fd0

(hd0)     /dev/sda

(hd1)     /dev/sdb

(hd2)     /dev/sdc

(hd3)     /dev/sdd

(hd4)     /dev/sde
```

Es gibt also noch ein Diskettenlaufwerk, dann vier Platten, und das letzte Device ist ein USB-Stick, den ich vergessen habe rauszunehmen. Grub selber wollte nach hd0,0 installiert werden, was normal ist, der Bootmanager gehört in den MBR der ersten Platte.

Die erste Platte hat nur eine Erweiterte Partition, da sind haufenweise Filme drauf, aber kein Betriebssystem. Die zweite Platte ist die Systemplatte, die hat mehrere Partitionen: eine primäre für das Windows-System, eine Erweiterte Parttion mit mehreren logischen Laufwerken, auf denen dann Projektdateien und allerhand Arbeitsverzeichnisse liegen, und schließlich eine zweite primäre Partition, auf der nun Gentoo gelandet ist. Das heißt also, /dev/sdb3 hat mein Gentoo.  Dummerweise wollte aber die grub.conf davon nichts wissen, ich brauchte sehr lange, bis ich sie so weit hatte:

```
default 0

timeout 10

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

title Gentoo

root (hd0,2)

#kernel /boot/kernel-genkernel-x86_64-3.0.6-gentoo root=/dev/sdb3

kernel /boot/kernel root=/dev/sdb3

initrd /boot/initramfs-genkernel-x86_64-3.0.6-gentoo

title Windows

rootnoverify (hd0,0)

makeactive

chainloader +1
```

Ich verstehe nicht, warum die beiden Betriebssysteme auf (dh0) gesucht und offensichtlich auch gefunden werden, obwohl sie physikalisch doch auf /dev/sdb1 (Windows) und /dev/sdb3 (Gentoo) liegen. Hier noch meine fstab:

```
#/dev/newboot      /boot      ext4

#/dev/BOOT      /boot      ext4      noauto,noatime   1 2

/dev/sdb3      /      ext4      rw      1 2

/dev/SWAP      none      swap      sw      0 0

/dev/cdrom      /mnt/cdrom   auto      noauto,ro   0 0

/dev/fd0      /mnt/floppy   auto      noauto      0 0
```

Ich habe während der Gentoo-Installation erstmal fix einen Genkernel gebaut, weil ich dachte, Feinheiten kann ich ja später ausbügeln, wenn ich nochmal einen neuen Kernel baue. Dieser Kernel bootet auch freundlicherweise von meiner Platte und läßt mich ins System, sogar der XServer läßt mich machen, wenn auch vorerst nur in einem XTerm-Fensterchen, weil noch keine grafische Oberfläche da ist. Aber der generische Kernel erkennt meinen LAN-Chip nicht und weigert sich, eth0 zu aktivieren und mir eine Verbindung herzustellen. Von der CD aus geht es problemlos, von der Platte aber nicht. 

Also mußte doch erstmal ein neuer Kernel her, und da für "make" keine Internetverbindung gebraucht wird habe ich den Bau von der Platte aus gemacht.

lspci zeigt mir als letztes:

```
01:00.0 VGA compatible controller: nVidia Corporation NV44 [GeForce 6200 LE] (rev a1)

02:00.0 Ethernet controller: Attansic Technology Corp. Atheros AR8121/AR8113/AR8114 PCI-E Ethernet Controller (rev b0)

03:00.0 IDE interface: JMicron Technology Corp. JMB368 IDE controller
```

Den neuen Kernel habe ich einfach nur "kernel" genannt und wie oben gezeigt in der grub.conf so aufgerufen:

```
kernel /boot/kernel root=/dev/sdb3
```

Er bootet auch und kommt erfreulicherweise ohne die befürchtete "kernel panic" aus, aber das System erreiche ich trotzdem nicht. Der Bootvorgang wird an folgender Stelle unterbrochen:

```
  Loading modules

  Activating mdev

  Determining root device ...

!!Block device /dev/sdb3 is not a valid root device
```

Irgendwas entweder in der grub.conf oder in der fstab muß ich wohl noch korrigieren, damit ich meinen Rechner mit Internetverbindung endlich ordentlich hochfahren und die Systeminstallatin fortsetzen kann. Aber was?Last edited by Christoph Schnauß on Tue Dec 27, 2011 1:11 am; edited 1 time in total

----------

## firefly

da es keine kernel panic ist, dann passt eher die fstab nicht  :Smile: 

----------

## Christoph Schnauß

 *firefly wrote:*   

> da es keine kernel panic ist, dann passt eher die fstab nicht :)

 

Ja, aber was paßt da nicht? Ich habe sie ja deswegen angegeben. /dev/sdb3 ist korrekt, sonst würde ich das ja nicht bei einem Start von der CD einbinden können. Eine extra /boot-Partition gibt es nicht. Und warum funktioniert diese fstab auch problemlos mit dem generischen Kernel, der ja bloß meinen LAN-Chip nicht ansprechen kann, weil er offensichtlich das Modul für den Atheros-Treiber nicht enthält?

Ich verstehe das einfach nicht, sorry. Bei einer "kernel panic" wüßte ich, daß ich den Kernel irgendwie falsch gebaut habe, das scheint aber nicht der Fall zu sein.

Gleich noch eine Kleinigkeit: früher habe ich in der Regel die Vanilla-Sourcen verwendet. Die gibt es ja auch noch, aber die würden eine Kernel-Version 2.6.x bauen, der GenKernel zeigt eine höhere Versionsnummer (3.0.6). Ist es sinnvoll, doch nochmal Vanilla zu nehmen?

----------

## hilti_hit

Hi!

Du verwendest genkernel, oder?

Dann sollte real_root=/dev/sdb3 statt root=/dev/sdb3 stehen.

Referenzen:

http://www.gentoo.org/doc/en/genkernel.xml

und

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=1&chap=10

----------

## Josef.95

Ist es noch eine IDE HDD?

Verlasse dich bitte nicht darauf das dein reales System die selben Laufwerksbezeichnungen hat wie auf der LiveCD

Je nach verwendeten HDD-Controller-Treiber könnte es auch /dev/hdxx sein. (wenn das der Fall ist könnte es die Unterschiede zwischen deinen beiden kerneln mit der selben fstab erklären)

Da eine initrd da ist solltest du ja eine Shell öffnen können - schau da doch mal nach was für Laufwerke da sind, und wie sie tatsächlich benannt sind.

Zb mit 

```
more /proc/partitions
```

btw

auch das /dev/SWAP in der fstab kommt mir ein wenig seltsam vor, überprüfe doch mal ob es das so tatsächlich gibt.

----------

## Christoph Schnauß

 *hilti_hit wrote:*   

> 
> 
> Du verwendest genkernel, oder?
> 
> Dann sollte real_root=/dev/sdb3 statt root=/dev/sdb3 stehen.

 

Wo sollte das stehen? In /etc/fstab oder in /boot/grub/grub.conf?

Das Handbuch habe ich konsultiert. Dort wird ausdrücklich darauf hingewiesen, daß die vorgefertigte /etc/fstab nicht valide ist und unbedingt korrigiert werden muß. Das ist bereits seit Jahren so.

Und: ja, ich habe auf die Schnelle die Genkernel-Sourcen geholt, weil ich glaubte, daß damit vorerst nichts schief gehen dürfte.

 *Josef.95 wrote:*   

> Ist es noch eine IDE HDD?

 

Nein, das zeigt dir auch die Bezeichnung als dev/sdb3, bei einer alten IDE-Platte wäre es /dev/hdb3. Die Platte ist so gut wie fabrikneu.

 *Josef.95 wrote:*   

> Verlasse dich bitte nicht darauf das dein reales System die selben Laufwerksbezeichnungen hat wie auf der LiveCD
> 
> Je nach verwendeten HDD-Controller-Treiber könnte es auch /dev/hdxx sein. 

 Ja, die Idee kam mir auch schon. Es deutet jedoch nichts darauf hin, 

 *Josef.95 wrote:*   

> Da eine initrd da ist solltest du ja eine Shell öffnen können - schau da doch mal nach was für Laufwerke da sind, und wie sie tatsächlich benannt sind.
> 
> Zb mit 
> 
> ```
> ...

 Es wird eine kleine Shell geöffnet, aber more ist da nicht möglich und eine Abfrage der vorhandenen Partitionen auch nicht.

 *Josef.95 wrote:*   

> auch das /dev/SWAP in der fstab kommt mir ein wenig seltsam vor, überprüfe doch mal ob es das so tatsächlich gibt.

 Richtig, die Zeile ist überflüssig und inzwischen rausgeflogen, ich brauche nicht zwingend eine eigene SWAP.

Ich habe mir inzwischen in der grub.conf einen neuen Menüeintrag erstellt zum Ausprobieren, damit ich nicht immer erst die CD wieder mounten muß. Und mit dem generischen Kernel klappt es ja auch, bis auf die Tatsache, daß er mir eben keine Internetverbindung herstellt. Aber ohne Verbindung kein emerge und auch keine Vervollständigung der Software-Ausstattung.

----------

## hilti_hit

sorry, /boot/grub/grub.conf war gemeint.

```
title Gentoo

root (hd0,2)

#kernel /boot/kernel-genkernel-x86_64-3.0.6-gentoo root=/dev/sdb3

kernel /boot/kernel real_root=/dev/sdb3

initrd /boot/initramfs-genkernel-x86_64-3.0.6-gentoo 
```

Bei dem Genkernel sind nicht alle Sachen, die Du brauchst unbedingt gesetzt, die wichtigsten Sachen sollte man trotzdem überprüfen (z.B. ob alle Treiber die Du brauchst geladen werden).

----------

## Josef.95

 *Christoph Schnauß wrote:*   

>  *Josef.95 wrote:*   Ist es noch eine IDE HDD? Nein, das zeigt dir auch die Bezeichnung als dev/sdb3, bei einer alten IDE-Platte wäre es /dev/hdb3. Die Platte ist so gut wie fabrikneu.

  Nein, das muss nicht zwingend so sein. Die Device-Benennung kommt in erster Linie vom Treiber selbst (zusammen mit udev)

Mit einem IDE Contoller und einer IDE Platte könnte je nach genutzten Treiber das Device unterschiedlich benannt sein.

Nungut..

 *Quote:*   

> Ich habe mir inzwischen in der grub.conf einen neuen Menüeintrag erstellt zum Ausprobieren, damit ich nicht immer erst die CD wieder mounten muß. Und mit dem generischen Kernel klappt es ja auch, bis auf die Tatsache, daß er mir eben keine Internetverbindung herstellt. Aber ohne Verbindung kein emerge und auch keine Vervollständigung der Software-Ausstattung.

  Warum stellst du in dem ansonsten bootfähigen genkernel dann nicht erst mal den Treiber für dein  Netzwerk Adapter bereit?

Nutze genkernel zb mit den Optionen --oldconfig und --menuconfig und konfiguriere dir den Kernel dann wie du ihn benötigst.

----------

## Christoph Schnauß

 *Josef.95 wrote:*   

> Warum stellst du in dem ansonsten bootfähigen genkernel dann nicht erst mal den Treiber für dein  Netzwerk Adapter bereit?

 

Habe ich ja gemacht, und das ist es, was ich nicht verstehe. Herausgekommen ist das Problem, daß der Bootvorgang nicht mehr komplett abläuft, was im übrigen leider auch keine neuen Zeilen in der /var/log/messages erzeugt

 *Josef.95 wrote:*   

> Nutze genkernel zb mit den Optionen --oldconfig und --menuconfig und konfiguriere dir den Kernel dann wie du ihn benötigst.

 

Genau das führt zu dem beschriebenen unverständlichen Problem.

----------

## Christoph Schnauß

morgens ;-)

so, ich habe mir den Kernel nochmal neu aus den Vanilla-Sourcen gebaut, und hier gibt es diesen dämlichen Abbruch mitten im Bootvorgang nicht mehr. Das heißt, jetzt komme ich durch bis auf die Konsole. Allerdings ist auch hier wieder das Problem, daß keine Verbindung hergestellt werden kann. Zusätzlich habe ich wohl irgendwas mit der Framebuffer-Unterstützung und den nvidia-Modulen für meine Grafikkarte zu gut gemeint. Jetzt habe ich nur eine winzige Schrift. Und hier will auch der XServer nicht mehr.

Weiß jemand, ob es für meinen Netzwerkchip irgendwas Besonderes zu beachten gibt? Nochmal die Zeile aus lspci:

```
02:00.0 Ethernet controller: Attansic Technology Corp. Atheros AR8121/AR8113/AR8114 PCI-E Ethernet Controller (rev b0)

```

----------

## Christoph Schnauß

hallo,

damit wir den Thread schließen können, das Endergebnis: ich habe nach vermutlich mehr als 20 Durchläufen beim Kernelbauen herausgefunden, was da nun falsch war. Es lag ganz einfach daran, daß in dem Abschnitt über die Gerätetreiber meine SATA-Platten nicht als Module eingebunden werden dürfen. Dasselbe noch einmal für den SCSI-Support.

Damit läuft nun der Bootvorgang ungestört durch, auch die Internetverbindung wird problemlos hergestellt.

Besten Dank für die Denkhilfen.

----------

## toralf

 *Christoph Schnauß wrote:*   

> Es lag ganz einfach daran, daß in dem Abschnitt über die Gerätetreiber meine SATA-Platten nicht als Module eingebunden werden dürfen.

 Nun ja, im Prinzip ist das schoin erlaubt, allerdings brauchst Du dann eine initramfs beim booten.

----------

