Interview: H. Peter Anvin
H. Peter Anvin will give a talk about Syslinux and the dynamic x86 boot process at FOSDEM 2009.
Could you briefly introduce yourself?
Hello, I'm H. Peter Anvin. Back in 1992 I was in college, and had finally scraped together enough money to buy my dream computer - what was then a super-fast 486/33 with 8 MB RAM. Of course, the thought to use this monster to run DOS or Windows 3 was downright revolting, so I thought I'd end up running OS/2 on it. However, while waiting for OS/2 or 386BSD to come out, I heard about this toy Unix clone some college student in Finland had cobbled together, and the rest, as they say is history.
I recently became one of the co-maintainers of the x86 architecture in the Linux kernel, and work for Intel's Open Source Technology Center.
What will your talk be about, exactly?
I'm going to talk about Syslinux, a bootloader I originally wrote on an overnight hacking binge in 1994 after a particularly frustrating experience installing SLS 2.0, one of the very first Linux distributions on CD-ROM. Back then, PCs couldn't boot from CDs, and so you needed a floppy with the kernel. Well, the floppy that came with SLS didn't support my SCSI card, and so I had to rebuild the kernel on it with the right drivers. However, getting the right kernel on that floppy was an excrutiating experience, and so I resolved to write a bootloader that could boot off a FAT filesystem so that one could manipulate it by just copying files around using any operating system.
Since then Syslinux has grown into a suite of bootloaders supporting a large variety of media, including PXE networking, CD-ROMs, and hard disks. It seems to be popular in applications where ease and flexibility of configuration is paramount.
What do you hope to accomplish by giving this talk? What do you expect?
I am hoping to attract both users and developers to the Syslinux project. On the user side, there are a lot of new features in Syslinux which don't seem to be widely known, in particular its flexible module API. On the developer side Syslinux is getting to be too big for me to maintain as a sole developer's side project. Fortunately, over the past few years there has been a whole new influx of active developers; I am hoping to get to the point where I mostly maintain the core infrastructure and have new user features implemented by other people.
Which new features can we expect in the near future in the Syslinux project?
The most dramatic new feature coming up is a scripting engine based on the Lua language.
Will we see other components in the future, next to the current SYSLINUX, PXELINUX, etcetera?
I definitely hope so. The next thing to be supported is probably going to be either btrfs or NTFS; both have gotten quite a few requests. I am also looking at ELF support, which unfortunately will require a fairly radical restructuring of the code.
How does Syslinux compare to GRUB as a bootloader, e.g. with respect to file systems?
Syslinux doesn't support as many filesystems as GRUB, mostly because the Syslinux filesystem support is written in assembly language. This is a historic accident back from when Syslinux had to fit on a floppy together with the entire kernel and initrd system. There is work underway to remedy this, at which point adding more filesystems to Syslinux should be a lot simpler.
The biggest difference between GRUB and Syslinux is probably a matter of trading off features for reliability. GRUB has largely taken the approach that one should be able to do anything that is even remotely possible; for example you can use a GRUB installation on disk 0 to boot a kernel stored in a different filesystem on disk 1. Syslinux is more conservative in that way, mostly because it was designed from the beginning to be a bootloader for removable media, which implies a dynamic context. As such, I have chosen to play by a stricter set of rules, which means tighter constraints on the user but, hopefully, easier configuration and a boot system which will work even if the system changes underneath in radical ways.
This interview is licensed under a Creative Commons Attribution 2.0 Belgium License.