From Funtoo
Revision as of 18:09, December 27, 2017 by Oleg (talk | contribs) (→‎Installing extlinux)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

What is extlinux?


with e2fsprogs-1.43, mke2fs have the metadata_csum and 64bit features enabled by default. Extlinux does not support booting from partitions formatted with 64-bit ext4. Users have to edit /etc/mke2fs.conf to disable this features before partioning drive. Otherwise, extlinux will not boot. Ref. [1], [2].

extlinux is a simple and modern bootloader and is a part of the syslinux tools. Installation is simple and fast, in Funtoo the configuration is easily automated.

Installing extlinux

root # emerge syslinux

This will install complete syslinux suite, including extlinux.

Using extlinux

root # install -d /boot/extlinux
root # extlinux --install /boot/extlinux

The next steps are different depending on if you use an MBR or GPT setup and the HDD you installed on and want to boot from. Let us assume that /dev/sda is the drive you will be booting from.


If you set up your disk with a MBR partition scheme, run the following:

root # dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/mbr.bin of=/dev/sda
root # cp /usr/share/syslinux/menu.c32 /boot/extlinux/
root # cp /usr/share/syslinux/libutil.c32 /boot/extlinux/
root # touch /boot/extlinux/extlinux.conf


On the other hand, if you te up your disk using GPT, run these commands:

root # sgdisk /dev/sda --attributes=1:set:2
root # sgdisk /dev/sda --attributes=1:show
1:2:1 (legacy BIOS bootable)
root # dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/gptmbr.bin of=/dev/sda
root # cp /usr/share/syslinux/menu.c32 /boot/extlinux/
root # cp /usr/share/syslinux/libutil.c32 /boot/extlinux/
root # touch /boot/extlinux/extlinux.conf

Setting up the Kernel

The extlinux.conf

For other kernels, like those created by genkernel or by the binary USE-flag you need to edit your config by yourself. Just open /boot/extlinux/extlinux.conf in your favorite editor:

UI menu.c32

MENU COLOR title        1;37;40
MENU COLOR border       30;40
MENU COLOR unsel        37;40

LABEL funtoo1
        LINUX /<kernel>
        INITRD /<initramfs>
        APPEND rootfstype=ext4 luks enc_root=/dev/sdb3 lvm root=/dev/mapper/vg-root uswsusp resume=/dev/mapper/vg-swap

That's all. You are now ready for boot. You can also define several LABELs in that list to have multiple kernel selections to choose from before booting.