bootstrap supports different boot modi. For x86: 1) boostrap is started by a multiboot compliant bootloader and modules are attached as multiboot modules. GRUB example: kernel bootstrap arg1 args2 ... module kernel module sigma0 module roottask module task1 ... 2) bootstrap is started by a multiboot compliant bootloader but includes all modules by itself. GRUB example: kernel bootstrap_hello args... For module specifications looks into modules.list 3) bootstrap can boot from real-mode, esp. with pxelinux, i.e. it can be booted via PXE. For that it also needs include all images. This should also work with syslinux (e.g. from CDs/DVDs). (Note, grub can also read is9660 filesystems.) 4) bootstrap starts from protected mode but isn't started by a multiboot compliant loader. Also needs to include all modules. For arm: Just the single image mode, i.e. all modules packed into bootstrap. Anything else doesn't make any sense (currently). Generating bootstrap in single-image-mode: Call make with E=entryname, e.g. $ make E=hello Local customization: You can put a Makeconf.local file right into this directory (bootstrap/server/src) where you can specify your own search paths etc. Note that it is encouraged to have your local configuration in src/conf rather than in this bootstrap directory. Makeconf.local could look like this: BOOTSTRAP_SEARCH_PATH_x86 := ../stuff:/home/joe/dev/l4/kernel/fiasco/build-ia32 KERN_ARM := build-arm ifneq ($(PXA),) KERN_ARM := build-pxa ARM_DRV_TYPE = pxa endif KERN_PATH := /home/joe/dev/l4/kernel/fiasco/$(KERN_ARM) BOOTSTRAP_SEARCH_PATH_arm = ../stuff:$(KERN_PATH):../../../../../bin/arm_sa BOOTSTRAP_SEARCH_PATH = $(BOOTSTRAP_SEARCH_PATH_$(ARCH))