Wednesday, June 28, 2006
Bootloaders - Linux Router ROMMON
This entry is meant to give router folks some pointers on using Linux bootloaders.
If you're familiar with ROMMON, the pre-boot environment on Cisco routers, you'll love GRUB and SYSLINUX.
ROMMON (generally accessed by setting the config-register to 0x0) is what Cisco router use when booting to select the running router code. ROMMON is something like a PC's BIOS settings, but it typically offers you more router-specific functions. (selecting and booting new router images, setting console speeds, etc.) Often times, you never need to access ROMMON, as you can change most of it's settings from the running version of IOS. However, it's a critical part of router's bootup procedure.
Most modern Linux distributions (including Vyatta's OFR) use GRUB (http://www.gnu.org/software/grub/) as the default bootloader when booting from a harddisk. (see later information about SYSLINUX) Maybe you older Linux hackers out there remember LILO, but GRUB is the bootloader of preference today. (actually GRUB prefers to consider itself a Multiboot environment which can offer much more functions than just a bootloader.)
GRUB is typically installed in the Master Boot Record (MBR) of your bootable harddisk.
The general function of GRUB is to select a kernel and initrd to boot, and to pass on command line options to the kernel you're booting. For instance, you might want to boot a SMP kernel, or a new test kernel with special drivers built in. Or you might want to pass certain command like options to your kernel to make it behave in special ways. All of the default menu settings for GRUB are typically stored in /boot/grub/grub.conf (take a look at it)
Here are some cool things you may not have known about GRUB.
- You can setup GRUB to work on both the VGA console and serial consoles, simultaneously if you want. So you can select kernels and options during the boot process.
- You can hand-edit the selected GRUB boot parameters. (hit "e" for edit, when you've highlighted a line, make your edits, hit enter, and then hit "b" to boot)
- Got a typo? GRUB can scan your list of available kernels in /boot and will do TAB-completion of kernel filenames to fix your typo.
- GRUB can be beautified with colors and splash screens, like most Desktop distros are setup.
Want to "brand" your boot process? Here's where you can start.
- GRUB is under active development. The newest version has been named GRUB 2. Expect lots of new functionality and capabilites soon as GRUB 2 stablizes this fall.
The current stable GRUB does have one common limitation. It's usually only used when booting on hard disks, it doesn't support the ISO filesystems (CD-ROMs). The GRUB 2 project reportedly fixes this limitation.
For ISO based boots (like LiveCDs), ISOLINUX which is part for H. Peter Anvin's SYSLINUX project is typically used. (http://syslinux.zytor.com/)
ISOLINUX behaves a lot like GRUB, but doesn't allow for command line editing of pre-defined boot parameters. It's also under active development and recently added a rich menuing system.
Here are some cool things you may not have known about SYSLINUX:
- SYSLINUX also includes PXELINUX which is a great bootloader environment which you can PXE boot from. (and then select and download kernels from a TFTP server)
- SYSLINUX has the ability to boot floppy disk images using the MEMDISK function. When combined with PXELINUX, this provides a great way for doing BIOS updates on older systems that still require a Floppy boot in order to upgrade BIOS. (no more running around with floppy disks, just set the PXE boot parameters and sit back.)
- SYSLINUX has a rich comboot API for creating complex interactive extensions for very custom boot environments.
I hope this entry helped a few router geeks get acquainted with the Linux bootloaders, and gives you a feel for what's going on in the active development of these tools. I think you'll find it a much richer experience than what you're used to using ROMMON.
Happy booting.
This entry is meant to give router folks some pointers on using Linux bootloaders.
If you're familiar with ROMMON, the pre-boot environment on Cisco routers, you'll love GRUB and SYSLINUX.
ROMMON (generally accessed by setting the config-register to 0x0) is what Cisco router use when booting to select the running router code. ROMMON is something like a PC's BIOS settings, but it typically offers you more router-specific functions. (selecting and booting new router images, setting console speeds, etc.) Often times, you never need to access ROMMON, as you can change most of it's settings from the running version of IOS. However, it's a critical part of router's bootup procedure.
Most modern Linux distributions (including Vyatta's OFR) use GRUB (http://www.gnu.org/software/grub/) as the default bootloader when booting from a harddisk. (see later information about SYSLINUX) Maybe you older Linux hackers out there remember LILO, but GRUB is the bootloader of preference today. (actually GRUB prefers to consider itself a Multiboot environment which can offer much more functions than just a bootloader.)
GRUB is typically installed in the Master Boot Record (MBR) of your bootable harddisk.
The general function of GRUB is to select a kernel and initrd to boot, and to pass on command line options to the kernel you're booting. For instance, you might want to boot a SMP kernel, or a new test kernel with special drivers built in. Or you might want to pass certain command like options to your kernel to make it behave in special ways. All of the default menu settings for GRUB are typically stored in /boot/grub/grub.conf (take a look at it)
Here are some cool things you may not have known about GRUB.
- You can setup GRUB to work on both the VGA console and serial consoles, simultaneously if you want. So you can select kernels and options during the boot process.
- You can hand-edit the selected GRUB boot parameters. (hit "e" for edit, when you've highlighted a line, make your edits, hit enter, and then hit "b" to boot)
- Got a typo? GRUB can scan your list of available kernels in /boot and will do TAB-completion of kernel filenames to fix your typo.
- GRUB can be beautified with colors and splash screens, like most Desktop distros are setup.
Want to "brand" your boot process? Here's where you can start.
- GRUB is under active development. The newest version has been named GRUB 2. Expect lots of new functionality and capabilites soon as GRUB 2 stablizes this fall.
The current stable GRUB does have one common limitation. It's usually only used when booting on hard disks, it doesn't support the ISO filesystems (CD-ROMs). The GRUB 2 project reportedly fixes this limitation.
For ISO based boots (like LiveCDs), ISOLINUX which is part for H. Peter Anvin's SYSLINUX project is typically used. (http://syslinux.zytor.com/)
ISOLINUX behaves a lot like GRUB, but doesn't allow for command line editing of pre-defined boot parameters. It's also under active development and recently added a rich menuing system.
Here are some cool things you may not have known about SYSLINUX:
- SYSLINUX also includes PXELINUX which is a great bootloader environment which you can PXE boot from. (and then select and download kernels from a TFTP server)
- SYSLINUX has the ability to boot floppy disk images using the MEMDISK function. When combined with PXELINUX, this provides a great way for doing BIOS updates on older systems that still require a Floppy boot in order to upgrade BIOS. (no more running around with floppy disks, just set the PXE boot parameters and sit back.)
- SYSLINUX has a rich comboot API for creating complex interactive extensions for very custom boot environments.
I hope this entry helped a few router geeks get acquainted with the Linux bootloaders, and gives you a feel for what's going on in the active development of these tools. I think you'll find it a much richer experience than what you're used to using ROMMON.
Happy booting.
