SIBLO - Simple Boot Loader

(c) 2007 Dipl.-Ing. Michael Niederle
(c) 1994-2007 H. Peter Anvin

Last update: February, 13th, 2008

SIBLO is a part of the Simplux-Project (http://simplux.org)..

SIBLO is a boot loader intended to be used with USB-pen-drives, where several operating systems and tools share one single FAT-formatted partition.

It is derived from SYSLINUX by H. Peter Anvin.

download siblo.zip (contains source code and binary files)

1.) LICENSE

This software is available under the GNU Public License. See gpl.txt for further information.

2.) DIFFERENCES TO SYSLINUX

Currently there are three main differences to SYSLINUX:

Some compatibility options for old BIOSes were removed. (They surely won't boot from USB ...)

3.) INSTALLATION

a) Windows

To install the boot loader onto a partition just call the "install.bat" batch-file with the partition name as its only argument, e.g.

install f:

b) Linux

To install the boot loader onto a device just call the "install" binary file with the device-name as its only argument, e.g.

./install /dev/sdb1

c) General

SIBLO is intended to be used with (large) FAT32 formatted USB-Sticks. It will work on FAT16 partitions, too, but will need at least 23 reserved sectors on the partition. By default FAT32 partions will have enough reserved sectors, but FAT16 partitions won't. Under Linux you can specify the number of reserved sectors as an option to the format tools.

A FAT32 "info sector" is left untouched if it is stored immediately behind the boot sector (which is usually the case) otherwise it might get overwritten. In this case the device will still work but IO-performance might suffer.

Despite the fact that the installer works under Windows, big USB-sticks are best formatted using Linux, which offers the option to use small cluster sizes. Cluster size affects performance and waste of space. A cluster size of 2KB (4 sectors) seems to be appropriate.

I'm currently investigating optimal cluster sizes. Maybe not even the size but also the offset of the first cluster from the beginning of the partition might considerably influence stick performance.

File fragmentation is no problem with an USB-stick, because there are practically no seek overheads!

4.) THE CONFIGURATION FILE

The configuration file is named "siblo.cfg" and has the same structure as "syslinux.cfg".

There is currently one single new option (compared to SYSLINUX) for use in configuration files:

Here is an example siblo.cfg:

prompt 1
timeout 0
default 1
say 1 Linux
say 2 Bart PE
say 3 Bart PE / RAM-Disk
say 4 RAM-Test (memtest86)
say 5 RAM-FS
label 1
  kernel vmlinuz
  append root=/dev/ram0 initrd=initrd.gz PMEDIA=usbflash
label 2
  ntloader setupldr.xp
label 3
  ntloader setupldr.2k3
label 4
  kernel memdisk
  append initrd=memtest.ima
label 5
  kernel ramboot
  append initrd=rbdisk.ima PMEDIA=usbflash

The above example from one of my own USB-sticks uses two different ways of loading BartPE:

5.) CREATING SIBLO FROM SOURCE

To build the boot loader from source you need NASM and Perl. (You will need Perl only, if you want to introduce new keywords.)

To start the build process just call the "build" batch-file.

The installer uses Windows specific function calls to access the partition. It shouldn't be too complicated to replace them with Linux specific function calls to build an installer runable from the Linux command prompt.

To build the Windows installer from source you need a C++-Compiler. The sources contain a project file for Visual Studio .NET but it should be easy to to create a Makefile - there are just three source code files.

To build the Linux installer you need a Simplicity-compiler and the "standalone" tool. The source code of the Linux installer ist contained in "install.sim".