wiki:bootloaders/syslinux

Version 14 (modified by William Harrington, 11 years ago) ( diff )

--

Extlinux for CLFS Builds

Needed Files

Syslinux http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.02.tar.bz2

Gnu-EFI http://sourceforge.net/projects/gnu-efi/files/gnu-efi_3.0u.orig.tar.gz

Everything below is only needed if you're following the boot method of the build.

NASM http://master.dl.sourceforge.net/sourceforge/nasm/nasm-2.07.tar.bz2

Changes for Cross-Tools Section

This build is only required if you're using the Boot Method of the build.

Build Nasm

./configure --prefix=/cross-tools &&
make &&
make install

Changes for Boot Section

This build is only required if you're using the Boot Method of the build. You can also skip the building of Grub or Lilo.

Build GNU-EFI

IA64:

make PREFIX=cross-tools efi64 &&
make PREFIX=cross-tools efi64 install

IA32:

make PREFIX=cross-tools efi32 &&
make PREFIX=cross-tools efi32 install

Build Syslinux

make CROSS_COMPILE=${CLFS_TARGET}- installer &&
install -m 755 extlinux/extlinux /cross-tools/bin &&
install -d -m 755 /cross-tools/syslinux &&
install -m 644 mbr/mbr.bin /cross-tools/syslinux

Configure Extlinux

First we erase the current MBR on the disk, next we will install the MBR for Extlinux on the Primary Boot Drive. I will assume the Primary Boot Drive is /dev/sda.

dd if=/dev/zero of=/dev/sda bs=446 count=1

MBR

dd bs=440 conv=notrunc count=1 if=/cross-tools/syslinux/mbr.bin of=/dev/sda

GPT

dd bs=440 conv=notrunc count=1 if=/cross-tools/syslinux/gptmbr.bin of=/dev/sda

Second we will install the Extlinux.sys file for bootup. This is the bootloader.
install -d ${CLFS}/boot
extlinux --install ${CLFS}/boot

Now we will create our extlinux.conf file. Change root_device to your root partition of your Primary Boot Drive.

cat >> ${CLFS}/boot/extlinux.conf << "EOF"
default boot
prompt 0
timeout 10

label boot

kernel clfskernel-boot
append rw root=root_device

EOF

Changes for Final-System Section

Build Nasm

./configure --prefix=/usr &&
make &&
make install

Build GNU-EFI

IA64:

make PREFIX=usr efi64 &&
make PREFIX=usr efi64 install

IA32:

make PREFIX=usr efi32 &&
make PREFIX=usr efi32 install

Build Syslinux

Now we will build the final version of the Syslinux, and we will copy the menu.c32 file over so we can have a menu at bootup.

make installer &&
make install &&
cp -ar /usr/share/syslinux/menu.c32 /boot

Configure Extlinux

First we erase the current MBR on the disk, next we will install the MBR for Extlinux on the Primary Boot rive. I will assume the Primary Boot Drive is /dev/sda. We repeat this step from above. Reinstalling this ensures us that we are using the currently built version of the file. When Syslinux is cross-compiled, some files are not made and the premade ones are. This will ensure that we use the ones we just built.

dd if=/dev/zero of=/dev/sda bs=446 count=1

MBR

dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/mbr.bin of=/dev/sda

GPT

dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/gptmbr.bin of=/dev/sda

Second we will installed the extlinux.sys file for bootup. This is the bootloader.
extlinux --install /boot

Now we will create our extlinux.conf file. Change root_device to your root partition of your Primary Boot Drive.

cat >> /boot/extlinux.conf << "EOF"
default menu.c32
prompt 0
menu title CLFS Boot Menu

timeout 60

label linux

menu label CLFS Kernel {kernel_version}
menu default
kernel clfskernel-{kernel_version}
append rw root=root_device


label boot

menu label CLFS Boot Stage Kernel
kernel clfskernel-boot
append rw root=root_device

EOF

Note: See TracWiki for help on using the wiki.