You are not logged in.

#1 2016-01-02 23:07:38

jamespharvey20
Member
Registered: 2015-06-09
Posts: 129

[SOLVED] Kernel boot bailing out syslinux with md /boot and btrfs /

Solved - see second post

I want to have an ext4 /boot, and a lzo-compressed btrfs / made of thin provisioned lvm volumes.  This server strangely doesn't support UEFI booting (many people complaining that HP did something weird with the motherboard/BIOS on this model, as UEFI had been around for quite a while.)  So, I have to use grub or syslinux, as a BIOS bootloader.  It's my understanding neither bootloader supports using a thin provisioned lvm volume in anyway related to /boot.

During boot, I'm having a fsck error saying no such file or directory /dev/md1, then an error saying /usr/lib/systemd/systemd does not exist.  systemd is of course on the btrfs volume, not the ext4 /boot partition.

I've tried a bunch of things, more than is listed here.  I think the kernel should be given the btrfs / volume as the 'root=' parameter, but I'm not 100% positive about that.  But, I've tried giving it everything I can think of, and none of it has worked.  The bailed-out shell isn't even seing the btrfs thin provision lvm volume in blkid.  I almost feel like I'm missing a mkinitcpio.conf entry to support thin provisioned lvm volumes, but I can't find such an option.

When I was not using a thin provision lvm volume, I just had everything on one partition, and /boot was just a subdirectory.  I gave the kernel root=UUID= the UUID of /dev/disk1/terra1 as shown by blkid.

md0 is for the swapfile, created by:

mdadm --create --verbose --level 1 --raid-devices=3 /dev/md0 /dev/disk1/terraswap1 /dev/disk2/terraswap2 /dev/disk3/terraswap3"

md1 is for /boot, created by:
{{{ it's my understanding /boot can't have metadata v1.2 }}}

mdadm --create --verbose --level 1 --metadata=1.0 --raid-devices=3 /dev/md1 /dev/sda1 /dev/sdb1 /dev/sdc1

Kernel parameters - As shown by syslinux, hitting tab

.linux ../vmlinuz-linux root=UUID=e5c2ac05-d14f-48222-952a-ed3a77115191 rw init=/usr/lib/systemd/systemd consoleblank=0 fbcon=scrollback:128k initrd=../initramfs-linux.img

I've also tried:

.linux ../vmlinuz-linux root=/dev/md1 rw md=1,/dev/sda1,/dev/sdb1,/dev/sdc1 init=/usr/lib/systemd/systemd consoleblank=0 fbcon=scrollback:128k initrd=../initramfs-linux.img

{{{ the md for the ext4 /boot partition }}}

.linux ../vmlinuz-linux root=UUID=1787ddae-3181-45f2-11be-5c51d268cbed rw init=/usr/lib/systemd/systemd consoleblank=0 fbcon=scrollback:128k initrd=../initramfs-linux.img

{{{ the UUID shown from the arch-iso of /dev/mapper/disk1-terra1, but btrfs volume }}}

My mkinitcpio.conf includes: (not entire file)

MODULES="radeon ext4"
BINARIES=""
FILES=""
HOOKS="base udev autodetect modconf block mdadm_udev lvm2 filesystems keyboard fsck"

I also tried installing thin-provisioning-tools via pacstrap off the archiso and regenerating mkinitcpio -p linux.

Boot messages - Syslinux menu picks default value, then:

Automatic boot in 1 second...

Loading ../vmlinuz-linux... ok
Loading ../initramfs-linux.img...ok
Probing EDD (edd=off to disable)... ok
early console in decompress_kernel
input_data: 0x0000000001a1a3b4
input_len: 0x0000000000412c06
output: 0x0000000001000000
output_len: 0x0000000000e1b9a8
run_size: 0x00000000000f65000

Decompressing Linux... Parsing ELF... done.
Booting the kernel.
:: running early hook [udev]
starting version 228
:: running early hook [lvm2]
:: running hook [udev]
:: Triggering uevents...
:: performing fsck on '/dev/md1'
fsck: error 2 (No such file or directory) while executing fsck.ext4 for /dev/md1
ERROR: fsck failed on '/dev/md1'
:: mounting '/dev/md1' on real root
:: running cleanup hook [lvm2]
:: running cleanup hook [udev]
ERROR: Root device mounted successfully, but /usr/lib/systemd/systemd does not exist.
Bailing out, you are on your own. Good luck.

sh: can't access tty; job control turned off

Diagnosing

[rootfs /]# blkid
/dev/sda1: UUID="2848..." UUID_SUB="6109..." LABEL="archiso:1" TYPE="linux_raid_member" PARTUUID="81d4..."
/dev/sda2: UUID="p6mm..." TYPE="LVM2_member" PARTUUID="96d7..."
/dev/sda1: UUID="2848..." UUID_SUB="1f49..." LABEL="archiso:1" TYPE="linux_raid_member" PARTUUID="003d..."
/dev/sdc2: UUID=JScJ..." TYPE="LVM2_member" PARTUUID="2059..."
/dev/sdb1: UUID="2848..." UUID_SUB="4fcf..." LABEL="archiso:1" TYPE="linux_raid_member" PARTUUID="538b..."
/dev/sdb2: UUID="rI6z..." TYPE="LVM2_member" PARTUUID="da94..."
/dev/md1: UUID="e5c2..." TYPE="ext4"
/dev/mapper/disk2-terraswap2: UUID="1787..." UUID_SUB="fd1e..." LABEL="archiso:0" TYPE="linux_raid_member"
/dev/md0: UUID="8097..." TYPE="swap"
/dev/mapper/disk1-terraswap1: UUID="1787..." UUID_SUB="36ee..." LABEL="archiso:0" TYPE="linux_raid_member"
/dev/mapper/disk3-terraswap3: UUID="1787..." UUID_SUB="8e96..." LABEL="archiso:0" TYPE="linux_raid_member"

[rootfs /]# mount
rootfs on / type rootfs (rw)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sys on /sys type sysfs (rw,nosuid,nodev,noexec,realatime)
dev on /dev type devtmpfs (rw,nosuid,relatime,size=16467492k,nr_inodes=4116873,mode=755)
run on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
/dev/md1 on /new_root type ext4 (rw,relatime,stripe=4,data=ordered)

[rootfs /]# ls /new_root
initramfs-linux-fallback.img   initramfs-linux.img   intel-ucode.img   lost+found   syslinux   vmlinuz-linux

[rootfs /]# ls /new_root/syslinux
{{{ shows 63 files, including many .c32 files and syslinux.cfg }}}

[rootfs /]# cat /new_root/syslinux/syslinux.cfg
{{{ comments omitted }}}
DEFAULT arch
PROMPT 0
TIMEOUT 50
UI menu.c32
MENU TITLE Arch Linux
MENU COLOR border... {{{other MENU COLOR's omitted}}}

LABEL terra
   MENU LABEL Terra
   LINUX ../vmlinuz-linux
   APPEND root=UUID=e5c2ac05-d14f-4822-952a-ed3a77115191 rw init=/usr/lib/systemd/systemd consoleblank=0 fbcon=scrollback:128k
   INITRD ../initramfs-linux.img
{{{ other LABEL's omitted}}}

[rootfs /]# dmesg | grep -i lvm
{{{nothing}}}

[rootfs /]# dmesg | grep -i terra
{{{nothing}}}

[rootfs /]# dmesg | grep -i md {{{with kernel times and irrelevant matches omitted}}}
md: bind<sdb1>
md: bind<sdc1>
md: bind<sda1>
md: raid1 personality registered for level 1
md/raid1:md1: active with 3 out of 3 mirrors
md1: detected capacity change from 0 to 104792064
md: bind<dm-0>
md: bind<dm-1>
md: bind<dm-2>
md/raid1:md0: active with 3 out of 3 mirrors
md0: detected capacity change from 0 to 17163091968
EXT4-fs (md1): recovery complete
EXT4-fs (md1): mounted filesystem with ordered data mode. Opts: (null)

Last edited by jamespharvey20 (2016-01-02 23:31:31)

Offline

#2 2016-01-02 23:34:14

jamespharvey20
Member
Registered: 2015-06-09
Posts: 129

Re: [SOLVED] Kernel boot bailing out syslinux with md /boot and btrfs /

jamespharvey20 wrote:

. . .I almost feel like I'm missing a mkinitcpio.conf entry to support thin provisioned lvm volumes, but I can't find such an option. . .

Close.  Arch's LVM2 package doesn't include module dm-thin-pool or binary /usr/bin/thin_check in its /usr/lib/initcpio/install/lvm2.

See https://bugs.archlinux.org/task/32884

Can manually edit /usr/lib/initcpio/install/lvm2 and install the additions "dm-thin-pool" in the build() for mod in line, and "add_binary "/usr/bin/thin_check".  Then, re-run mkinitcpio.

Offline

Board footer

Powered by FluxBB