[Barrelfish-users] Boot Barrrelfish under XEN 4.5

Timothy Roscoe troscoe at inf.ethz.ch
Sat Oct 17 13:43:59 CEST 2015


Dear Vlad, 

Many thanks - it's curious that this problem doesn't arise on real
hardware (or Hyper-V or QEMU, for that matter), but it does make sense
that HLT completes when an interrupt happens.  This may be Xen's way
of figuring out when a virtual processor is really idle.  We'll take a
look at it.

Cheers,

 -- Mothy

At Fri, 16 Oct 2015 08:18:20 +0000, vlad nitu <eu_nitu at yahoo.com> wrote:
> 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
> quiet
> 
> 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
> quiet
> 
> 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
> #bootapic-x86_64=1-15
> 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
> 
> ### END DEBIAN AUTOMAGIC KERNELS LIST
> 
> 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


More information about the Barrelfish-users mailing list