Hi,
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@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@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(); to 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@24 statement, plus add the path to your kernel build to MODULE_SEARCH_PATH. Then a "make ux E=.." should suffice.
P.S. I've also found that various links on l4re.org 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