FreeBoo: an Open Architecture for Network Dual Boot

Using FreeBoo, you can restore and boot different operating systems across a network and replace proprietary solutions such as Rembo.
Thin-Client Boot Phase

To build a FreeBoo system, you first need to configure your client's BIOS to boot from the network and to dedicate a server for PXE. You must start the DHCP and TFTP dæmons on your server and use the Pxelinux.0 file as the PXE primary bootstrap.

The main consideration regarding your thin-client configuration is the actual image properties. Because it is only a temporary image, let's configure a small embedded Gentoo Linux with generic drivers (less than 6Mb). We will add the FUSE drivers, the kexec system call introduced in the 2.6 kernel and NFS, rsync and partimage client utilities. FUSE is required, because we need write access to the NTFS partition during image restoration. kexec is used for the hot boot. The thin client uses an NFS root filesystem to avoid the initial RAM filesystem transfer done by most thin-client solutions. The NFS option is slower for individual access but faster for an initial deployment (more on using rsync and partimage in the next section).

To get a nice user interface, we also add the framebuffer driver, Gensplash (Gentoo's bootsplash software) and the Links2 browser compiled with direct framebuffer support. The Links2 text browser and Gensplash text images for framebuffer let you avoid the cost of the X Window System and its configuration problems, while achieving some graphical capacities.

Image Selection and Restoration Phase

The second phase consists of presenting a boot menu to the end user and (if required) executing the image restoration. This FreeBoo phase starts when the client PC is running the Linux thin client. You should configure it to execute the Links2 text Web browser initially. Simply add this init.d file to your thin-client filesystem (located in the server's drive and accessed via NFS):

depends () {
  after gpm
  after local
  depends local
start() {
  eend 0

The script executes the Web browser:

# Part of the /scripts/ file
links2 -g server_IP
# ...

The Apache Web server responds with an HTML file that contains the end-user menu. Figure 3 shows the available boot options. The user can choose to boot a given OS directly or to restore its saved copy. If the user selects a direct boot, FreeBoo skips directly to phase three. Otherwise, FreeBoo proceeds first to transfer the OS image to the client.

Figure 3. Boot Menu

The menu provides two image restoring policies: complete (or full) restoring and partial (or fast) restoring. Complete restoring transfers all of the image to the client computer using partimage. Partial restoring transfers only the modified data using rsync. Depending on the differences with the current image, one solution is faster than the other. We have found that for partial restoring, the checksum computation was especially time consuming for large files. But, both solutions achieve the same goal—to deploy a clean and secure OS image on the client.

In addition to configuring Apache and setting the boot menu page as the user's initial page, you also need to start the rsyncd and the partimaged dæmons on the server. rsyncd, for partial restoring, uses virtual names for the OS images. Its configuration file (/etc/rsyncd.conf) assigns each virtual name to a path in the filesystem. You should create a disk partition for each OS image, because rsync is filesystem-sensitive. Specifically, you need an NTFS filesystem and the FUSE ntfs-3g mount command for writing the MS Windows image on the client. We recommend excluding the big and unneeded MS Windows virtual memory file (pagefile.sys) and the hibernate file in the rsync recovery command (flag --exclude-from). We also recommend deleting any user-created files on the client (flag --delete). Additionally, add the flags -a (maintain permissions, ownership and timestamps), -r (recursive) and -v (verbose). Below is the code for the and scripts. They differ only in the mount command and image and partition names:

# /script/ and /script/
# FreeBoo scripts for partial image restoring
# INSERT the correct mount command
#   for Linux:      mount /dev/hda2 /mnt/linux
#   for MS-Windows: ntfs-3g /dev/hda1 /mnt/windows -o force

ntfs-3g /dev/hda1 /mnt/windows -o force

# INSERT the correct rsync command
#   rsync -avr --delete --exclude-from=.rsync/exclude \

rsync -avr --delete --exclude-from=.rsync/exclude \ /mnt/windows

# ... continues with kexec commands ...



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

configure a small embedded Gentoo Linux with generic drivers ???

Anonymous's picture

but where to install ???

/dev/hda1 is Window$
/dev/hda2 is linux

Gentoon must be somwhere else.

/dev/hda3 -> swap
/dev/hda4 -> Gentoon ???

And how to make partitions.
Any tips to gparted ?


where to install

mjp5060's picture

If you are referring to the Gentoo Linux that the client downloads to act as the boot-loader and provide the foundation for the client side of the OS deployment/section then it does not go into a partition, but runs in memory as a diskless client. This way it can manipulate the hdd for the OS's you want to deploy.

On that note if anyone has a pre-compiled image of Gentoo already configured for the network boot with all the client side applications please let me know or post a link.

Another note to the authors, this is a great system. Your focus is to make things easy, might I recommend providing a build of the whole system that can be executed on the server and provide a basic/sample setup that can then be easy modified by people who would like to deploy your system.

Images not visible

Lucas Vieites's picture

Hi, the images in this article are not visible. I see they are PS files in an <img> tag. Is this OK for other browsers (Firefox 3 does not show them)

setup directions

mjp5060's picture

Is there a more detailed set of documentation for setting-up/configuring a system like this?

More information

Anonymous's picture

thank you

mjp5060's picture

I had given up on this project because of a lack of information, but today I felt like looking into it again and saw your reply. Thank you so much, and will look that pdf over this week.

configuration/user guide

mjp5060's picture

This pdf was very informative about the technology, but it fails to provide a systematic set of instructions/guide of how to configure a system. Do you guys not have a guide for your projects that lists/demos the minimum requirements of what needs to be setup/configured. You guys have done a great job designing and implementing this architecture, but it is hard to replicate do to lack of instructions.

DRBL and Sources

C.Barrado's picture

I do not agree about the similarity of DRBL with FreeBoo. In DRBL you can boot a Linux net image over a computer with a MS WIndows already installed. BUT, as far as I read, you can not download the MS Windows in the same way you do with Linux!!

For George: FreeBoo source code is really short. Just a bunch of scripts that you can find in the paper. But if someone (lazzy) needs them, you can download from

DRBL (Diskless Remote Boot in Linux) is quite similar...

Anonymous's picture

It includes Clonezilla SE (Server Edition).
The following is from and
Diskless Remote Boot in Linux (DRBL) provides a diskless or systemless environment for client machines. It works on Debian, Ubuntu, Mandriva, Red Hat, Fedora, CentOS and SuSE. DRBL uses distributed hardware resources and makes it possible for clients to fully access local hardware. It also includes Clonezilla, a partitioning and disk cloning utility similar to Symantec Ghost®.

Clonezilla, based on DRBL, Partition Image, ntfsclone, partclone, and udpcast, allows you to do bare metal backup and recovery. Two types of Clonezilla are available, Clonezilla live and Clonezilla SE (server edition). Clonezilla live is suitable for single machine backup and restore. While Clonezilla SE is for massive deployment, it can clone many (40 plus!) computers simultaneously. Clonezilla saves and restores only used blocks in the harddisk. This increases the clone efficiency. At the NCHC's Classroom C, Clonezilla SE was used to clone 41 computers simultaneously. It took only about 10 minutes to clone a 5.6 GBytes system image to all 41 computers via multicasting!

Join forces to build a Rembo/Mokafive replica

HenrikBach's picture

If there are some guys out there interested in joining forces for building a Rembo/Mokafive replica, count me in. We could setup a site on one of those floss sites...


Hi I'm Sebastian Galiano

sebbasman's picture


I'm Sebastian Galiano (One of Freeboo's authors), If you need any help you can count on me. About the tar.gz you are requesting, maybe I can help on that too. Do you need any specific file?

FreeBoo project

HenrikBach's picture

Hi Sebastian!

That sounds great, that I can count on you. First, Now I'm able to download the tar.gz. I'll return back later, or you can write to me at bach.henrik at gmail dot com.

I cannot download the files related to this article

HenrikBach's picture

I cannot download the files related to this article:

It seems that the folder containing the compressed archive doesn't exists.

Can you have a look at that?

ftp site

georgecorondan's picture

liked your system admin issue 180 but when i tried to get the code for:
FreeBoo: an Open Architecture for Network Dual Boot
there was nothing on your ftp site! do you guys need a sys admin :-) ?

Geek Guide
The DevOps Toolbox

Tools and Technologies for Scale and Reliability
by Linux Journal Editor Bill Childers

Get your free copy today

Sponsored by IBM

Upcoming Webinar
8 Signs You're Beyond Cron

Scheduling Crontabs With an Enterprise Scheduler
11am CDT, April 29th
Moderated by Linux Journal Contributor Mike Diehl

Sign up now

Sponsored by Skybot