March 24, 2019

Booting Linux With the New EXTLINUX

Boot disks with SYSLINUX and ISOLINUX

  • August 10, 2010
  • By Juliet Kemp

Juliet Kemp
If you've ever run a Linux LiveCD (or LiveUSB), or booted from a rescue disk, you've probably used a version of SYSLINUX, even if you didn't know it at the time. SYSLINUX, the work of H. Peter Anvin, is a bootloader for Linux which can boot from an MS-DOS FAT filesystem or create a bootable floppy (very old-school!); its close cousin ISOLINUX handles booting from CDs and similar media. SYSLINUX has always been enormously useful for first-time installs, when you're often booting from a machine that is currently running Windows, but until fairly recently, you had to switch to another bootloader post-install, since SYSLINUX doesn't handle ext* filesystems. However, EXTLINUX, a fairly recent addition to the Syslinux Project, does handle these filesystems (see below), giving another boot option besides GRUB and LILO for Linux systems.

Boot disks with SYSLINUX and ISOLINUX

To use SYSLINUX to create a bootable floppy disk is straightforward: just give it the device name.

syslinux /dev/fd0
You can then set up the configuration by editing the syslinux.cfg (searched for in /boot/syslinux/, /syslinux/, and /). Check the wiki for the full syntax, but a basic entry looks like this:
LABEL linux
SAY Booting Linux kernel via SYSLINUX
KERNEL vmlinuz.img
APPEND ro root=/dev/sda1 initrd=initrd.img

Creating a bootable CD with ISOLINUX is a little more complicated. You need first to create either a boot/isolinux/ or an isolinux/ directory under the root directory of your ISO image master (the directory tree from which you'll burn the ISO image).

Copy isolinux.bin, isolinux.cfg (the configuration options and syntax for this file are the same as for syslinux.cfg), and all required kernels, initrd files, logos, and so on into this directory. Then use mkisofs (distributed with cdrecord) to make the ISO image:

mkisofs -o isooutimage.iso
-b isolinux/isolinux.bin -c isolinux/boot.cat
-no-emul-boot -boot-load-size 4 -boot-info-table
where /tmp/my-iso-tree/ is the root of your ISO master file tree. Burn the ISO image to CD, and you should then be able to boot from the CD.

Most Popular LinuxPlanet Stories