[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