# [solved] initramfs - kernel panic - kein initram FS?

## mcimaster

Hello,

ich habe Gentoo mit LVM2 und DM-Crypt installiert und zwar nach dieser Anleitung: http://en.gentoo-wiki.com/wiki/Root_filesystem_over_LVM2,_DM-Crypt_and_RAID. Die RAID Option habe ich einfach weggelassen.

Nachdem ich das dm-crypt Passwort eingebe, bekomme ich folgende Fehlermeldung:

```
Unable to make device node for 'vg-root'

/dev/mapper/vg-root: open failed: No such file or directory

   2 logical volume(s) in volume group "vg" now active

mount: mounting /dev/mapper/vg-root on /newroot failed: No such file or directory

BusyBox v1.15.3 (2010-09-30 15:49:47 CEST) multi-call binary

Usage: switch_root [-c /dev/console] NEW_ROOT NEW_INIT [ARGS]

Free initramfs and switch to another root fs:

chroot to NEW_ROOT, delete all in /, move NEW_ROOT to /,

execute NEW_INIT. PID must be 1. NEW_ROOT must be a mountpoint.

Options:

        -c DEV  Reopen stdio to DEV after switch

[   15.233541] Kernel panic - not syncing: Attempted to kill init!

[   15.233787] Pid: 1, comm: busybox Not tainted 2.6.35-gentoo-r9 #3

[   15.234030] Call Trace:

[   15.234288]  [<ffffffff81569116>] panic+0xa0/0x152
```

Danach friert der Bildschirm ein.

Meine System Settings:

 *Quote:*   

> Kernel: 2.6.35-gentoo-r10
> 
> Partitions:
> 
> /dev/sda1 --> Windows 7
> ...

 

Meine fstab:

```
# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>

/dev/sda3               /boot           ext2            defaults,noatime        1 2

/dev/mapper/vg-root             /               ext4            noatime         0 1

/dev/mapper/vg-swap             none            swap            sw              0 0

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

shm                     /dev/shm        tmpfs           nodev,nosuid,noexec     0 0
```

Meine grub.conf:

```
default 0

timeout 3

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

title Gentoo Linux 2.6.35-gentoo-r10

root (hd0,2)

kernel /boot/kernel-2.6.35-gentoo-r10

initrd /boot/initramfs

title Windows 7

rootnoverify (hd0,0)

makeactive

chainloader +1
```

Meine jetzige init:

```
#!/bin/busybox sh

mount -t proc proc /proc

CMDLINE=`cat /proc/cmdline`

mount -t sysfs sysfs /sys

#wait a little to avoid trailing kernel output

sleep 3

#If you don't have a qwerty keyboard, uncomment the next line

loadkmap < /etc/kmap-de

#If you have a msg, show it:

cat /etc/msg

#dm-crypt

/bin/cryptsetup luksOpen /dev/sda4 vault

sleep 2

#lvm

#/bin/vgscan

/bin/vgchange -ay vg

sleep 2

#root filesystem

mount -r /dev/mapper/vg-root /newroot

#unmount pseudo FS

umount /sys

umount /proc

#umount /dev

#root switch

#exec /bin/busybox switch_root /newroot /sbin/init ${CMDLINE}

exec switch_root /newroot /sbin/init
```

Meine vorherige init:

```
#!/bin/sh

mount -t proc proc /proc

CMDLINE=`cat /proc/cmdline`

mount -t sysfs sysfs /sys

#wait a little to avoid trailing kernel output

sleep 3

#If you don't have a qwerty keyboard, uncomment the next line

loadkmap < /etc/kmap-de

#If you have a msg, show it:

#cat /etc/msg

#dm-crypt

/bin/cryptsetup luksOpen /dev/sda4 vault

#lvm

#/bin/vgscan

/bin/vgchange -ay vg

#root filesystem

mount -r /dev/mapper/vg-root /newroot

#unmount pseudo FS

umount /sys

umount /proc

#root switch

exec /bin/busybox switch_root /newroot /sbin/init ${CMDLINE}
```

Bei der ersten Installation habe den Kernel 2.6.35-gentoo-r9 verwendet und sda4 hatte ext3 als Filesystem. Nach der neuen Installation habe ich den Kernel 2.6.35-gentoo-r10 probiert und als FS ext4 gewählt. Die Fehler blieben jedoch die selben. Ich habe busybox-1.15.3 und auch busybox-1.17.1-r1 probiert, ohne jeglichen Erfolg.

Wenn ich versuche irgendein Gerät in der initramfs zu mounten, dann findet er den Mountpoint nicht. Jedoch ist er in Wirklichkeit vorhanden. Ein ls während dem init Prozess zeigt mir diese Ornder an:

```
bin

dev

etc

init

newroot

proc

root

sys

var
```

Ich weiß nicht ob es von Bedeutung ist, aber bei vgchange -ay vg bekomme ich folgenden Output:

```
livecd ~ # vgchange -ay vg

  Internal error: Maps lock 14192640 < unlock 14196736

  Internal error: Maps lock 14196736 < unlock 14200832

  2 logical volume(s) in volume group "vg" now active
```

Das war schon bei der Installation der Fall. Im Internet habe ich gelesen, dass das kein ernst zunehmendes Problem ist. (Quelle weiß ich leider nicht mehr) 

Ich hoffe ihr könnt mir weiterhelfen.

----------

## firefly

er findet den mountpoint nicht sondern das device unter /dev/devicemapper/vg-root .

Weil die initrd wiso auch immer das device /dev/devicemapper/vg-root nicht erstellen kann.

----------

## mcimaster

 *firefly wrote:*   

> er findet den mountpoint nicht sondern das device unter /dev/devicemapper/vg-root .
> 
> Weil die initrd wiso auch immer das device /dev/devicemapper/vg-root nicht erstellen kann.

 

Was kann hierbei der Grund sein?

----------

## firefly

befindet sich unter /dev ein verzeichnis namens devicemapper in der initrd? Wenn nein eventuell hilft es, wenn du dieses verzeichnis erstellst.

----------

## mcimaster

 *firefly wrote:*   

> befindet sich unter /dev ein verzeichnis namens devicemapper in der initrd? Wenn nein eventuell hilft es, wenn du dieses verzeichnis erstellst.

 

Ja, /dev/mapper ist vorhanden.

EDIT: Sorry, Du meinst ja explizit devicemapper. Nein, ich werde es mal versuchen..

----------

## mcimaster

Also, ich habe den Ordner erstellt. Es hat leider nichts gebracht.

----------

## Finswimmer

Versuch mal, das Init-Skript Stück für Stück auszuführen.

Ich denke, es hängt bei /bin/cryptsetup luksOpen /dev/sda4 vault 

Ich kenne vault nicht, ich öffne es immer ohne.

Wird denn danach etwas in /dev/mapper/ angezeigt?

----------

## mcimaster

 *Finswimmer wrote:*   

> Versuch mal, das Init-Skript Stück für Stück auszuführen.
> 
> Ich denke, es hängt bei /bin/cryptsetup luksOpen /dev/sda4 vault 
> 
> Ich kenne vault nicht, ich öffne es immer ohne.
> ...

 

Wie kann man es ohne Argument öffnen? Ich muss doch ein Argument angeben.

In /dev/mapper befinden sich:

```
control

vault

vg-root -> ../dm-2

vg-swap

```

Kurz bevor ich mounte, mache ich ls /dev/mapper:

```
...

#dm-crypt

/bin/cryptsetup luksOpen /dev/sda4 vault

#lvm

#/bin/vgscan

/bin/vgchange -ay vg

ls /dev/mapper

sleep 15

#root filesystem

mount -r /dev/mapper/vg-root /newroot

...
```

----------

## root_tux_linux

Nimm doch einfach  genkernel?

----------

## mcimaster

 *root_tux_linux wrote:*   

> Nimm doch einfach  genkernel?

 

Was soll ich mit einem Genkernel?

----------

## mcimaster

Ich bin jetzt in der init shell gelandet, um den Fehler step by step zu reproduzieren:

```
/ # /bin/cryptsetup luksOpen /dev/sda4 vault

Enter passphrase for /dev/sda4:

/ # /bin/vgchange -ay vg

   Unable to make device node for 'vg-root'

   /dev/mapper/vg-root: open failed: No such file or directory

   2 logical volume(s) in volume group "vg" now active

/ #
```

Habt ihr eine Idee, wie ich fortfahren soll?

----------

## schachti

 *mcimaster wrote:*   

> 
> 
> In /dev/mapper befinden sich:
> 
> ```
> ...

 

Ich finde hier den Symlink auf ../dm-2 merkwürdig, das existiert sicher nicht in Deiner initram... Ich denke, hier könnte das Problem liegen.

----------

## Finswimmer

vg-root scheint es also zu geben?

Was ist, wenn du den vgchange Schritt ignorierst?

----------

## mcimaster

 *Finswimmer wrote:*   

> vg-root scheint es also zu geben?
> 
> Was ist, wenn du den vgchange Schritt ignorierst?

 

Ja, aber vg-root ist auf ../dm-2 verlinkt.

Wenn ich vgchange auslasse, dann habe ich genau dasselbe Ergebnis, mit oder ohne.

----------

## mcimaster

 *schachti wrote:*   

>  *mcimaster wrote:*   
> 
> In /dev/mapper befinden sich:
> 
> ```
> ...

 

Was könnte hier falsch sein?

----------

## schachti

Ich vermute, beim Schritt

```

cp -a /dev/mapper/vg-root dev/mapper

```

aus der von Dir verlinkten Anleitung ist was schiefgegangen. Vor einiger Zeit waren, wenn ich mich richtig erinnere, die Eintrage unter /dev/mapper keine Symlinks auf /dev/dm-X - das hat sich scheinbar geändert, und Du hast nun einen Symlink auf eine (an dieser Stelle nicht existierende) Gerätedatei anstatt der Gerätedatei selbst kopiert.

----------

## mcimaster

Welche ist die richtige Gerätedatei? Heißt das, das ich den Link vor dem Erstellen des initramfs erstellen muss?

----------

## manuels

 *mcimaster wrote:*   

> Ich bin jetzt in der init shell gelandet, um den Fehler step by step zu reproduzieren:
> 
> ```
> / # /bin/cryptsetup luksOpen /dev/sda4 vault
> 
> ...

 

Hast du strace installiert? Das wäre mal interessant:

```
strace -e trace=open /bin/vgchange -ay vg
```

----------

## mcimaster

Schachti hatte es erkannt.  :Smile: 

Der Symlink vg-root -> ../dm-2 war tot. Das Gerät dm-2 war in meiner initramfs nicht enthalten. Jetzt habe ich alle dm-* in die intramfs kopiert und alles funkt wunderbar.

Danke für eure Hilfe!

Alles Gute und schönen Abend noch.

----------

## root_tux_linux

 *mcimaster wrote:*   

>  *root_tux_linux wrote:*   Nimm doch einfach  genkernel? 
> 
> Was soll ich mit einem Genkernel?

 

Dann hättest du dir das gefrickel von initramfs erspart?

http://www.gentoo.de/doc/de/genkernel.xml

Warum einfach wenns kompliziert geht  :Smile: 

----------

