Fiasco-OC.UX, ux_con and the framebuffer examples

Adam Lackorzynski adam at
Mon Jan 18 00:33:57 CET 2016


On Thu Jan 14, 2016 at 23:07:43 +0100, Paul Boddie wrote:
> Another year, another look at Fiasco-OC! ;-)
> I've been looking again at Fiasco-OC.UX and trying to make sense of the 
> documentation. In particular, I'd like to be able to get the framebuffer 
> examples working with the UX graphical console, but it isn't clear to me what 
> I need to do.
> One thing I discovered straight away was that I needed to provide the -F 
> option as part of the UX_OPTIONS variable when running UX via make. For 
> example:
> cd src/l4
> make O=mybuild ux E=hello MODULE_SEARCH_PATH=../kernel/fiasco/mybuild \
>      UX_OPTIONS='-G 800x600 at 24 -F ../kernel/fiasco/mybuild/ux_con'
> I suspect that to run a framebuffer example, such as the one in 
> src/l4/conf/examples/x86-fb.list, I need to specify E=x86-fb-example and 
> specify the list file using MODULES_LIST:
> make O=mybuild ux E=x86-fb-example \
>      MODULES_LIST=conf/examples/x86-fb.list \
>      MODULE_SEARCH_PATH=../kernel/fiasco/mybuild \
>      UX_OPTIONS='-G 800x600 at 24 -F ../kernel/fiasco/mybuild/ux_con'
> But this naive attempt gives me the following:
> Could not find 'x86-fb.cfg' with path 
> '../kernel/fiasco/mybuild:/home/paulb/L4/src/l4/mybuild/bin/x86_prescott:...
> I imagine that I need to more effectively specify paths to various things and 
> to check that they even make sense in the context of the UX environment. 
> Should I even be using this x86-related stuff?

That's ok this way. And yes, when doing all step by step you'll also
need to specify all search paths.

> Copying the different x86-fb files into one of my existing MODULE_SEARCH_PATH 
> directories did seem to resolve the above immediate error, however, but I then 
> appear to need to build various drivers. This seems to require chasing 
> dependencies as they are reported as missing by the build system, and that 
> makes me wonder whether I've overlooked a command that recursively checks out 
> all dependencies for a given component.

As of now there's no such tool that downloads components as required by
other components. However, there are subset definitions defined in
repomgr but they're coarse.

> Anyway, running the above command with all dependencies compiled and with x86-
> fb (and x86-legacy.devs) files in the path gives an error like this...
> Ned: loading file: 'rom/x86-fb.cfg'
> IO      | Io service
> IO      | Find root Pointer
> IO      | ACPI Error: Could not map memory at 0x000E0000 for length 131072 
> (20121018/tbxfroot-286)
> IO      | Find root Pointer: 0
> IO      | Ready. Waiting for request.
> mag     | Hello from MAG
> fbdrv   | Trying execution of ``set VBE mode'' using x86emu
> fbdrv   | L4Re[rm]: unhandled read page fault at 0xfd0 pc=0x1007d49
> fbdrv   | L4Re: unhandled exception: pc=0x1007d49 (pfa=fd4)
> fbdrv   | L4Re: Global::l4re_aux->ldr_flags=0
> ...which probably suggests that I really should be using something other than 
> this x86-related stuff. Does anyone have any suggestions, or am I doing 
> something that no-one thought sensible?

The x86-fb.cfg file is missing some bit for ux here. Please change
local fbdrv_fb = l:new_channel();
local fbdrv_fb = L4.Env.vesa;

I'll fix that accordingly.

> (As mentioned last year on this list, I'm running everything under Debian on 
> x86, and UX does work with the "hello" example.)

More generally, there's also some automatism. Add a
l4/conf/Makeconf.boot file (from l4/conf/Makeconf.boot.example) and add
a UX_GFX=800x600 at 24 statement, plus add the path to your kernel build to
Then a "make ux E=.." should suffice.

> P.S. I've also found that various links on to things like the 
> "getting started" details are broken. For example:

Thanks! I've fixed the 2 locations I've found to be wrong.

Adam                 adam at

More information about the l4-hackers mailing list