# [solved] Bootprobleme nach Partitionsverschlüsselung

## Jimini

Aloha.

Nachdem ich mich jetzt gut einen Tag lang durch Howtos, Foren und sonstige Erklärungen gelesen habe, poste ich mein Problem mal hier. Ich möchte ein System neu aufsetzen und hierbei die Partitionen verschlüsseln. Der Einfachheit halber enthält die Festplatte nur /, /boot (beide ext3) und die swap-Partition. /boot soll eigentlich auf einem USB-Stick liegen (was soweit auch schon funktionierte), aber um Fehler auszuschließen habe ich das Setup so einfach wie möglich gestaltet.

Ich bin nach mehreren Howtos vorgegangen:

- http://en.gentoo-wiki.com/wiki/DM-Crypt_with_LUKS

- http://de.gentoo-wiki.com/wiki/DM-Crypt/Root-Partition_verschl%C3%BCsseln_per_initramfs

- http://en.gentoo-wiki.com/wiki/Root_filesystem_over_LVM2,_DM-Crypt_and_RAID

- http://en.gentoo-wiki.com/wiki/Initramfs

Leider kam ich bisher aber nicht weiter, als dass der Bootprozess mit einem Kernelpanic anhielt:

```
No filesystem could mount root, tried: ext3 vfat msdos iso9660

Kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(8,3)
```

Ich bin wie folgt vorgegangen:

1) Festplatte partitioniert: /dev/sda1: /boot, sda2: swap & sda3: /

2) / und swap habe ich verschlüsselt: 

```
cryptsetup -c blowfish -h sha256 -d /dev/urandom create swap /dev/sda2

cryptsetup -c blowfish -h sha256 -d /dev/urandom create root /dev/sda3
```

3) danach habe ich einen Schlüssel erzeugt, um Tippfehler zu vermeiden, habe ich testweise einen sehr einfachen gewählt:

```
cryptsetup -y --cipher serpent-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sda2

cryptsetup -y --cipher serpent-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sda3 

```

4) schließlich habe ich / und swap entschlüsselt:

```
cryptsetup luksOpen /dev/sda2 swap

cryptsetup luksOpen /dev/sda3 root
```

5) danach habe wie sonst auch normal installiert (alles gemountet, in /mnt/gentoo gechrooted, Portage-Tree gesynct, Kernel-Sources und Grub installiert und diverse Configfiles angepasst).

6) bzip2, busybox und cryptsetup mit USE="static" neu emerged

8) busybox gemäß der Anleitung gebaut

9) dieses Initscript runtergeladen und ausführbar gemacht

10) schließlich habe ich das initramfs-Image erzeugt

11) ab hier hatte ich so meine Probleme. Dieses Script habe ich ausgeführt, um das initramfs zu erzeugen (beißt sich das mit dem nächsten Schritt?)

12) die im Kernel erforderlichen Module habe ich fest eingebaut: Klick - in aktuellen Kernelversionen liegt die initrd-Unterstützung allerdings in "General Setup". Den Speicherort für das initrd-Verzeichnis habe ich gemäß der Anleitung leer gelassen und statt dessen selber die initrd in /usr/src/linux/usr kopiert.

13) danach habe ich die fstab angepasst:

```
/dev/sda1               /boot           ext3    defaults,noatime        1 2 

/dev/mapper/swap        none            swap    sw                      0 0

/dev/mapper/root        /               ext3    noatime                 0 1

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

```

14) zu guter Letzt grub.conf editiert:

```
default 0

timeout 5

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

title=Bla

root (hd0,0)

kernel (hd0,0)/vmlinuz-2.6.32-gentoo-r7 root=/dev/sda3

```

15) und Grub in den MBR installiert.

Beim darauffolgenden Bootvorgang werden Grub und der Kernel geladen, bis das ganze mit oben genanntem Kernel Panic abbricht:

```
No filesystem could mount root, tried: ext3 vfat msdos iso9660

Kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(8,3)
```

Ich vermute, dass der Fehler irgendwo im initrd-Abschnitt liegt. Ich fasse das Howto so auf, dass eigentlich eine Passwortabfrage kommen sollte, nach der /dev/sda2 und /dev/sda3 gemäß /etc/fstab gemountet werden können. Aber bis dahin komme ich wie gesagt ja nicht, da die root-Partition vom Kernel nicht gemountet werden kann - irgendwie beißt sich hier der Hund in den Schwanz.

Grub lädt absolut normal, ebenso sollten zumindest kritische Treiber im Kernel drin sein (SATA-Controller etc), sonst müsste der Fehler - meine ich - anders aussehen. 

Ich wäre außerst dankbar, wenn jemand den / die Fehler findet - sollten Infos fehlen, reiche ich die gerne nach.

MfG Jimini

----------

## s|mon

Hallo,

ich kann dir leider noch nicht sagen wo genau das Problem ist, aber habe das ganze anfang der Woche selbst genutzt.

Ich bin beim Erstellen des Initramfs manuell vorgegangen, so sieht man wenn was nicht klappt.  

Beim Einbinden des Images habe ich 2 verschiedene Kernel gemacht einmal mit initramfs direkt im Kernel (also Pfad angegeben nicht leer wie in der Anleitung und einmal wie beschrieben.

Dann habe ich mir mehrere Kombinationen in Grub angelegt, auch eine welche das initramfs-Image als weiteren Parameter hat.

Ich würde dir nahelegen es damit mal zu versuchen. Oder du versuchst erstmal dein schon erstelltes image bei grub anzugeben (sollte dazu wohl auch in deiner boot-Partition sein).

Viel erfolg weiterhin.

s|mon

----------

## Jimini

Ich habe heute Nacht 4- oder 5mal das System neu aufgesetzt. Ich habe mich immer an die Anleitungen gehalten. Ich habe also sprichwörtlich getüftelt und gebastelt. Ich habe gestern den ganzen Tag und die ganze letzte Nacht (bis auf 4 Stunden, in denen ich schlief) an dem Problem gesessen. Jetzt empfiehlst du mir quasi eine weitere "Probierlösung"...und weißt du was? Auf einmal läuft es. Kein Kernel Panic, es bootet durch. 

Einzig Swap wird nicht gemountet und der Bootvorgang dauert noch sehr lange, aber es läuft! Ich bin momentan etwas ratlos und mindestens genauso gespannt, wo der Fehler lag. 

Besten Dank für den Tipp, der mir mehr gebracht hat, als du womöglich gehofft hattest.

MfG Jimini

P.S.: ich setze den Thread auf "solved", sobald ich nachgeschaut habe, woran es lag.

----------

## Jimini

So, die Fehler scheine ich gefunden zu haben:

1) ikey_root=none:/dev/sdb1:/KEYFILE fehlte als Parameter in der grub.conf (Keyfile liegt jetzt auf einem USB-Stick)

2) in der Anleitung wurde die initrd nach /root/initramfs-gentoo-crypt kopiert, ich hab sie aber direkt nach /boot kopiert, und zwar als "initramfs.cpio.gz". Das brachte den Kernel ins Stolpern. 

So sieht die fertige grub.conf dann aus:

```
default 0

timeout 30

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

title Gentoo Linux 2.6.24-r5

root (hd0,0)

kernel (hd0,0)/vmlinuz-2.6.32-gentoo-r7 root=/dev/sda2 is2 noresume2 iswap=/dev/sda1 ikey_root=none:/dev/sdb1:/KEYFILE ikey_swap=none:/dev/sdb1:/KEYFILE

initrd (hd0,0)/initramfs-gentoo-crypt

```

MfG Jimini

----------

## Jimini

Eben habe ich beim Booten mal den USB-Stick nicht angesteckt, dabei ist mir aufgefallen, dass trotzdem Grub geladen wird - ein Überbleibsel aus einem der vielen Versuche, das System zum Laufen zu bringen. Nur frage ich mich, WO diese ganzen Boot-Dateien liegen. 

Im Normalfall ist der USB-Stick (/dev/sdb1) eingesteckt und wird als /boot gemountet. /dev/sda1 ist swap und /dev/sda2 die Rootpartition. Den MBR hatte ich in /dev/sdb installiert, also auf dem USB-Stick. 

Ist er nicht angeschlossen, kann ich verschiedene Kernel booten, aber wo liegen die? Ich hatte im letzten erfolglosen Versuch genau diese Kernel erstellt, danach aber alle Partitionen gelöscht, neu erstellt und formatiert. 

Stecke ich den Stick ein, bootet das System erwartungsgemäß normal. Wenn ich den Stick dann unmounte, finde ich nirgendwo auf der Festplatte die oben genannten Kernel. Die swap-Partition habe ich schon gelöscht und neu erstellt, leider ohne Erfolg - wenn ich den Stick weglasse, bootet wieder der "alte" Grub. Zwar landet man da nur in einer Not-Shell, aber auch da kann man fdisk nutzen, von daher würde ich den alten Bootloader gerne entfernen.

MfG Jimini

Zur Verdeutlichung ein Edit:

USB-Stick ist eingesteckt:

/dev/sda1: swap

/dev/sda2: /

/dev/sdb2: /boot

Kernel, MBR, Keyfile etc liegen auf dem USB-Stick /dev/sdb1

System bootet erwartungsgemäß normal.

USB-Stick ist nicht eingesteckt:

Grub, Kernel etc. liegen auf hd0,0, was die swap-Partition sein müsste (/dev/sda1)

Das System bootet nur eine Not-Shell, die Festplatten können nicht entschlüsselt werden, da das Keyfile fehlt (liegt schließlich auf dem USB-Stick).

----------

## firefly

vermutlich hast du mal grub in den MBR von /dev/sda installiert.

Du musst den MBR von der Festplatte überschreiben.

 *Quote:*   

> dd if=/dev/zero of=<fesplatten device name unter /dev> bs=512 count=1

 

----------

## Jimini

Danke für die schnelle Antwort.

Genau das dachte ich mir ja auch - wo liegen dann aber die ganzen Kernel? Es sind immerhin 4 Stück an der Zahl, dazu mehrere intrds und halt der Grub-Kram, der normalerweise unter /boot liegt. Die werden doch nicht in den MBR geschrieben?

MfG Jimini

Edit: danke, ich probiers mal aus.

----------

## Jimini

Hm, die Partitionen sind jetzt nach nem Reboot irgendwie...weg. Zum Glück hab ich direkt nach dem Setup ein Backup gezogen ;)

MfG Jimini

----------

## s|mon

schön zu hören das es bei dir tut.

Nur kurz zur Ergänzung mit dem dd und bs=512 hast du sowohl den Bootloader als auch die Partitionstabellen überschrieben, von daher ist es klar das die Partitionen weg waren.

Besser wäre wohl ein dd mit bs=446 gewesen (laut  *Quote:*   

> http://en.wikipedia.org/wiki/Dd(unix)

  und http://en.wikipedia.org/wiki/Master_boot_record)

mfg,

s|mon

P.S.: wie schaft man es den ersten wiki link als link zu bekommen, sprich ein escape der Klammern?

[edit] als backup-restore sollte auch ein rückspielen des mbr (oder nur der partitionstablle) mit dd genügen.

----------

