[Barrelfish-users] Boot Barrrelfish under XEN 4.5

vlad nitu eu_nitu at yahoo.com
Fri Oct 16 10:18:20 CEST 2015

Dear list,
I was able to boot Barrelfish in Xen 4.5 hypervisor as a HVM. I specify that machine has a Intel Xeon processor. First of all I created a disk image with one partition where I installed Ubuntu 14.04-amd64. Into this image I removed the grub2 installed by default and I installed grub 0.97 and put it into MBR with:
apt-get --remove purge grub2
apt-get install grubgrub-install /dev/xvda

I cloned Barrelfish from git (my version is a699702feb2eaf75db63154057a3ad09ac7e017e). In the menu.lst under /boot/grub/menu.lst I added another entry for Barrelfish. My menu.lst file looks like this: 

default        3
timeout        3

serial --unit=0 --speed=9600
terminal --timeout=5 serial console

## ## End Default Options ##
title        Ubuntu 14.04.3 LTS, kernel 3.19.0-25-generic
root        (hd0,0)
kernel        /boot/vmlinuz-3.19.0-25-generic root=UUID=430f885c-d308-4a91-812d-8dc4dfa44477 ro quiet splash 
initrd        /boot/initrd.img-3.19.0-25-generic

title        Ubuntu 14.04.3 LTS, kernel 3.19.0-25-generic (recovery mode)
root        (hd0,0)
kernel        /boot/vmlinuz-3.19.0-25-generic root=UUID=430f885c-d308-4a91-812d-8dc4dfa44477 ro  single
initrd        /boot/initrd.img-3.19.0-25-generic

title        Ubuntu 14.04.3 LTS, memtest86+
root        (hd0,0)
kernel        /boot/memtest86+.bin

title Barrelfish
root (hd0,0)

kernel /home/x86_64/sbin/elver loglevel=4 console=ttyS0
module /home/x86_64/sbin/cpu loglevel=4
module /home/x86_64/sbin/init

# Domains spawned by init
module /home/x86_64/sbin/mem_serv
module /home/x86_64/sbin/monitor

# Special boot time domains spawned by monitor
module  /home/x86_64/sbin/ramfsd boot
module  /home/x86_64/sbin/skb boot
modulenounzip /home/skb_ramfs.cpio.gz nospawn
module  /home/x86_64/sbin/kaluga boot
module  /home/x86_64/sbin/acpi boot
#module  /home/x86_64/sbin/pci boot
module  /home/x86_64/sbin/spawnd boot
module  /home/x86_64/sbin/startd boot
module /home/x86_64/sbin/routing_setup boot

# Drivers
module /home/x86_64/sbin/pci auto
module /home/x86_64/sbin/corectrl auto
module /home/x86_64/sbin/ahcid auto

## For networking
## For qemu, enable rtl8029
module /home/x86_64/sbin/rtl8029 auto

## For real hardware, enable e1000n
module /home/x86_64/sbin/e1000n auto

## Other services needed for networking
module /home/x86_64/sbin/NGD_mng auto
module /home/x86_64/sbin/netd auto

# General user domains
module /home/x86_64/sbin/serial
module /home/x86_64/sbin/fish nospawn
module /home/x86_64/sbin/angler serial0.terminal xterm


Now, When I tried to boot Barrelfish, just after printing the console the kernel panics:
kernel 0 PANIC! hlt should not return
so I looked into the code of Barrelfish. The problem is the last instruction (hlt) from wait_for_interrupt(void) in kernel/arch/x86_64/exec.c. This instruction should not return so I replace "hlt" with a loop:
hltloop: hlt
jmp hltloop
By doing this replacement Barrelfish boots ok under XEN. 
Nitu Vlad-Tiberiu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20151016/c9cf2be3/attachment.html>

More information about the Barrelfish-users mailing list