Skip to content

Latest commit

 

History

History
83 lines (68 loc) · 2.34 KB

IA32.md

File metadata and controls

83 lines (68 loc) · 2.34 KB
cmake_plat simulation_target SPDX-License-Identifier SPDX-FileCopyrightText
x86_64
true
CC-BY-SA-4.0
2020 seL4 Project a Series of LF Projects, LLC.

PC99

seL4 runs on 32-bit ia32 and 64-bit x64 machines, on qemu and on hardware.

Simulation

{% include sel4test.md %}

Please substitute -DPLATFORM=ia32 in place of -DPLATFORM=x86_64 if you would prefer to build 32-bit binaries.

Real Hardware

When running on real hardware console output will be over serial. You will need to plug a serial cable into your machine to see any output.

The build system produces a multiboot compliant image for x86; a grub2 stanza is here, but we usually boot via PXE for convenience.

menuentry "Load seL4 VM" --class os {
    load_video
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos2)'
    multiboot /boot/sel4kernel
    module /boot/sel4rootserver
}

Booting via PXEBOOT using syslinux PXELINUX requires setting up a tftp and dhcp server on the network that the machine you want to boot is connected to. This debian page explains how to setup a tftp and dhcp server, and the syslinux site has a download for pxelinux which we load over PXEBOOT that then can load seL4. The configuration for pxelinux.cfg/default is provided below.

label seL4
        kernel mboot.c32
        append kernel-ia32-pc99 --- apps-ia32-pc99

Booting off USB with syslinux

Use syslinux to create a bootable USB stick as follows.

Assuming your USB flash drive is at /dev/sdb with a FAT partition at /dev/sdb1:

install-mbr /dev/sdb
syslinux --install /dev/sdb1
mount /dev/sdb1 /mnt
cp images/sel4test-driver-image-ia32-pc99 /mnt/rootserver
cp images/kernel-ia32-pc99 /mnt/sel4kernel
cat > /mnt/syslinux.cfg <<EOF
SERIAL 0 115200
DEFAULT seL4test
LABEL seL4test
    kernel mboot.c32
    append sel4kernel --- rootserver
EOF
cp /usr/lib/syslinux/modules/bios/mboot.c32 /mnt
cp /usr/lib/syslinux/modules/bios/libcom32.c32 /mnt
umount /mnt

Use fdisk to make sure the first partition is bootable.

And you're done. Output will come on the serial port

Some more information about some of the hardware we use: