# [SOLVED] LUKS + LVM + LILO = No Work

## arantius

I'm setting up a new machine with Gentoo.  I've done this a number of times and am very comfortable with it.  I've decided this time, however, to add disk encryption into the mix, and am having terrible trouble.  At this point I have the disk set up, and Gentoo installed, by virtue of the LiveCD, but am unable to boot this disk.  From the LiveCD, I can do:

```
# fdisk -l /dev/sda

Disk /dev/sda: 640.1 GB, 640135028736 bytes

255 heads, 63 sectors/track, 77825 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0x83e6d949

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          34      273073+  83  Linux

/dev/sda2              35       77825   624856207+  8e  Linux LVM

# cryptsetup luksOpen /dev/sda2 root

Enter LUKS passphrase:

key slot 0 unlocked.

Command successful.

# vgscan

  Reading all physical volumes.  This may take a while...

  Found volume group "vg" using metadata type lvm2

# vgchange -ay

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

# ls -l /dev/mapper/

total 0

lrwxrwxrwx 1 root root     16 Dec 13 19:25 control -> ../device-mapper

brw-rw---- 1 root disk 253, 0 Dec 13 19:29 root

brw-rw---- 1 root disk 253, 5 Dec 13 19:29 vg-home

brw-rw---- 1 root disk 253, 2 Dec 13 19:29 vg-root

brw-rw---- 1 root disk 253, 1 Dec 13 19:29 vg-swap

brw-rw---- 1 root disk 253, 3 Dec 13 19:29 vg-tmp

brw-rw---- 1 root disk 253, 4 Dec 13 19:29 vg-var

# mount /dev/mapper/vg-root /mnt/gentoo

# mount /dev/sda1           /mnt/gentoo/boot

# mount /dev/mapper/vg-home /mnt/gentoo/home

# mount /dev/mapper/vg-tmp  /mnt/gentoo/tmp

# mount /dev/mapper/vg-var  /mnt/gentoo/var

# mount -t proc none /mnt/gentoo/proc

# mount -o bind /dev /mnt/gentoo/dev

# chroot /mnt/gentoo/ /bin/bash

```

And I'm in and set up, the system is working -- from the LiveCD only.  At this point I need to get it booting on its own.  Something about the system doesn't work with grub.  It detects 0k of upper mem, and will not run _any_ command.  So I am trying LILO.  I built a kernel and initrd, statically linking device mapper, crypt target, and AES ciphers, during the menuconfig step, and set up LILO:

```
# genkernel --menuconfig --install --symlink --lvm --luks all

# genkernel --menuconfig --install --symlink --lvm --luks --makeopts=-j11 all   * Gentoo Linux Genkernel; Version 3.4.10.904

* Running with options: --menuconfig --install --symlink --lvm --luks --makeopts=-j11 all

* Linux Kernel 2.6.28-hardened-r9 for x86...

* kernel: >> Running mrproper...

* config: Using config from /etc/kernels/kernel-config-x86-2.6.28-hardened-r9

*         Previous config backed up to .config.bak

*         >> Running oldconfig...

* kernel: >> Cleaning...

* config: >> Invoking menuconfig...

*** End of Linux kernel configuration.

*** Execute 'make' to build the kernel or try 'make help'.

*         >> Compiling 2.6.28-hardened-r9 bzImage...

*         >> Compiling 2.6.28-hardened-r9 modules...

* Copying config for successful build to /etc/kernels/kernel-config-x86-2.6.28-hardened-r9

* busybox: >> Using cache

* initramfs: >> Initializing...

*         >> Appending base_layout cpio data...

*         >> Appending auxilary cpio data...

*         >> Appending busybox cpio data...

*         >> Appending lvm cpio data...

*               LVM: Adding support (compiling binaries)...

*         >> Appending luks cpio data...

* Including LUKS support

*         >> Appending modules cpio data...

*

* Kernel compiled successfully!

*

* Required Kernel Parameters:

*     real_root=/dev/$ROOT

*

*     Where $ROOT is the device node for your root partition as the

*     one specified in /etc/fstab

*

* If you require Genkernel's hardware detection features; you MUST

* tell your bootloader to use the provided INITRAMFS file. Otherwise;

* substitute the root argument for the real_root argument if you are

* not planning to use the initramfs...

* WARNING... WARNING... WARNING...

* Additional kernel cmdline arguments that *may* be required to boot properly...

* add "dolvm" for lvm support

* Do NOT report kernel bugs as genkernel bugs unless your bug

* is about the default genkernel configuration...

*

* Make sure you have the latest genkernel before reporting bugs.

# cat /etc/lilo.conf

append="init=/linuxrc ramdisk=8192 dolvm crypt_root=/dev/sda2 real_root=/dev/mapper/vg-root splash=silent,theme:emerge-world console=tty1 quiet"

boot=/dev/sda

compact

default=gentoo

lba32

prompt

read-write

root=/dev/ram0

timeout=50

vga=791

image=/boot/kernel

  initrd=/boot/initramfs

  label=gentoo

image=/boot/kernel.old

  initrd=/boot/initramfs.old

  label=backup

  optional

# /sbin/lilo

Added gentoo *

Added backup
```

Now, if I reboot, I see the LILO boot menu, then (very briefly, so paraphrased), "loading gentoo" and something about a successful BIOS check.  Then a black screen that never goes away.  No progress messages, no error messages, nothing.  And I can't figure out what's wrong.Last edited by arantius on Sun Dec 20, 2009 4:08 pm; edited 1 time in total

----------

## Hu

If you need to debug the boot process, you should probably turn off features that play games with early boot display and let the kernel stick to straight text mode.  Remove your splash support and the quiet option.  Check that you have enabled x86 verbose boot messages.  Then retry to see if you can get better diagnostic output.

----------

## arantius

Quite right.  I recompiled the kernel to be sure, but verbose x86 debugging was already selected.  I changed lilo.conf's append line to

```
append="init=/linuxrc ramdisk=8192 dolvm crypt_root=/dev/sda2 real_root=/dev/mapper/vg-root"
```

And tried again.  Exact same symptoms.

----------

## arantius

I believe it was the "vga=" line.  I have no idea why it wouldn't work, but with that removed, I'm booted!

----------

## knifeyspoony

The blog post arantius wrote with your help constitutes the only complete, succinct guide to encrypted root I've ever seen.

----------

