[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MirageOS-devel] Issues with CLOCK on xen

Hi everyone,

I've been following this mailing list for a while now. I've finally managed to get a simple blog running on Mirage and AWS. I've put up a couple of posts of my experience (http://is-awesome.net) but I doubt there'll be anything that's new or exciting to readers here.

One outstanding issue is that I can't seem to get the CLOCK working properly on AWS. It's fine for a unix build, but I don't have another xen host available right now and the deploy test cycle to AWS is pretty painful. Trying to get the current time on AWS gets me this:

    Unsupported function gmtime called in Mini-OS kernel
    Do_exit called!
base is 0x0 Page fault at linear address 8, rip cb67, regs 000000000034f908, sp 34f9b0, our_sp 000000000034f8c8, code 0
    Page fault in pagetable walk (access to invalid memory?).

This is built with OCaml 4.01.0 with these OPAM packages:
io-page 1.1.1 Allocate memory pages suitable for aligned I/O
    mirage                     2.0.1  The Mirage library operating system
mirage-clock-unix 1.0.0 A Mirage-compatible Clock library for Unix mirage-clock-xen 1.0.0 A Mirage-compatible Clock library for Xen mirage-conduit 2.0.0 Virtual package for the Mirage Conduit transpo mirage-console 2.0.0 A Mirage-compatible Console library for Xen an mirage-dns 2.0.0 Virtual package for the Mirage DNS transports mirage-http 2.0.0 Mirage HTTP client and server driver for Unix mirage-net-unix 1.1.1 Ethernet network driver for Mirage, using tunt mirage-net-xen 1.1.3 Ethernet network device driver for Mirage/Xen mirage-types 2.0.1 Module type definitions for Mirage-compatible mirage-types-lwt 2.0.1 Lwt module type definitions for Mirage-compati mirage-unix 2.0.0 Mirage OS library for Unix compilation
    mirage-xen                 2.0.0  Mirage OS library for Xen compilation
mirage-xen-minios 0.4.2 Xen MiniOS guest operating system library

I'm not directly passing a clock device, my config.ml has these bits in it:

    let main =
foreign "Unikernel.Main" (http @-> console @-> kv_ro @-> kv_ro @-> job)

    let unix_libs =
      match get_mode () with
      | `Unix -> ["mirage-clock-unix"]
      | _ -> []

    let () =
        add_to_ocamlfind_libraries unix_libs;

This is mostly copied out of the skeleton examples. I know the clock interface has been changing a bit recently but it works fine under unix. My guess is that the clock driver is skipped because it's not referenced (except in my code) but I'm not sure how to do that properly. How can I force it to be included?


MirageOS-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.