[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [MirageOS-devel] Mirage on Xen/ARM status
V cool...yay
On May 16, 2014 5:42 PM, "Thomas Leonard" < talex5@xxxxxxxxx> wrote:
Good news for Mirage on Xen/ARM: mirage-skeleton/console is now working!
It needs tidying up, but currently to run you need:
1. mirage-platform/arm-hacks3:
https://github.com/talex5/mirage-platform/tree/arm-hacks3
This has been updated for the new Mini-OS. dietlibc is gone (we no
longer need a C library). libm is also gone, but you'll need to
replace it with something else (see below). There's a new libxencaml
with the separated-out Mini-OS OCaml bindings.
I had to make some changes to the Mirage API, because on ARM Xen
doesn't provide start_info. Also, I switched the timer stuff to use
mini-os's block_domain call, which handles ARM correctly.
2. mirage-console/master (modified to avoid using start_page)
https://github.com/talex5/mirage-console/commits/master
3. openlibm/arm-hacks (disables all long double support, which ARM
doesn't have and OCaml doesn't need)
https://github.com/talex5/openlibm/tree/arm-hacks
4. Mini-OS/devel (can now be installed as a library, libminios.a - use
"make install-ocamlfind")
https://github.com/talex5/xen/tree/devel
You'll also need a *soft-float* ARM build machine. Hard-float would
require extra support from Mini-OS. You can cross-compile the C code
easily enough, but OCaml can't cross compile, even from armhf to armel
(the -ffpu option just gives a silly error message). I got mine with:
 debootstrap --arch armel testing /mnt
Finally, you'll also need to modify mir-console's Makefile, because I
didn't update mirage to generate it properly. This worked for me:
KERNEL_DIR = $(shell ocamlfind query minios-kernel)
PLATFORM_DIR = $(shell ocamlfind query mirage-xen)
build: main.native.o
    ld -d -static -nostdlib -T $(KERNEL_DIR)/link.lds \
        --start-group Â\
        /usr/lib/gcc/arm-linux-gnueabi/4.8/libgcc.a \
         $(PLATFORM_DIR)/libocaml.a \
         $(PLATFORM_DIR)/libxencaml.a \
         ~/lib/libopenlibm.a \
         $(KERNEL_DIR)/libminios.a -o mir-console.elf \
         _build/main.native.o \
     --end-group
    objcopy -O binary mir-console.elf mir-console.xen
The next steps are to make this all a bit easier to install and clean
up the branches so they can be merged. Also, some things are broken
(printf doesn't accept %f, for example, because we're just using
Mini-OS's version).
--
Dr Thomas Leonard    Âhttp://0install.net/
GPG: 9242 9807 C985 3C07 44A6 Â8B9A AE07 8280 59A5 3CC1
GPG: DA98 25AE CAD0 8975 7CDA ÂBD8E 0713 3F96 CA74 D8BA
_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|