Genode OS framework and kernel-specific features

Valery V. Sedletski _valerius at mail.ru
Tue Mar 8 03:58:55 CET 2011


On Mon, 07 Mar 2011 14:48:13 +0100, Norman Feske wrote:

>Hello Valery,
>
>> Yes, it even worked. I copied the os\config\demo file to build\bin\config, beside the other executables symlinks. I loaded matrox 
>> framebuffer driver, and then /dev/fb0 appeared. So, I started core and Genode started with a Launchpad! 
>
>Please use 'os/config/linux_demo' instead of 'os/config/demo'. You want
>to use the SDL-based framebuffer driver, don't you? ;-)
>

Oh, sorry, I messed a bit -- I used linux_demo the previous time, then I forgot about it and took 'demo' next time :(

>BTW, you may also try doing a 'make run/demo' in your Genode build
>directory. The build system should compile and configure everything to
>run the default demo (you'll need to install 'expect' though, see:
>'http://genode.org/documentation/release-notes/11.02#section-30').
>
>> But strange. I managed to hurt my Debian Lenny by OS/2 chkdsk (Linux is installed on JFS filesystem, and I forgot to say OS/2 to not 
>> touch the Linux partition. So, today after some crash, JFS chkdsk is started, and it moved /dev, /bin, /sbin and /usr/bin dirs to lost+found.). 
>> Then I reinstalled Linux, and after that Genode won't start anymore. Strange, When I start Core, it spawns Init, then I see two lines in the 
>> screen log:
>> 
>> [init -> launchpad] Could not open file "config"
>> [init -> launchpad] Could not obtain config file
>> 
>> -- so, it starts init, and init knows that it must start launchpad (from 'config' file, I think), but nevertheless, it says that 'config' could not be 
>> found! Strange, it did found 'config' before I reinstalled Linux, but now won't. I thought that maybe, it is something wrong with permissions, 
>> but I made
>
>The message is actually fine. It shows that init has started 'launchpad'
>as instructed by init's config. So the config file is there. Now
>launchpad simply complains that there is no sub config for launchpad
>(indeed, there isn't). So it will fall back to a builtin default
>configuration. That is the normal behaviour. If you want to configure
>launchpad, you'll need to add a '<config>' subnode in launchpad's
>'<start>' node. You may have a look at 'os/config/nested_config' to see
>how to pass configurations to subsystems, and the
>'demo/src/app/launchpad/README' for the configuration options for launchpad.
>

So, it is a normal behaviour, well. Then I mentioned wrong log lines -- there were some other errors. The full log looked
like this:

[===================cut here========================]
dtp:/media/os2l/var/src/genode/genode-11.02/bulid/bin# ./core 
int main(): --- create local services ---
int main(): --- start init ---
int main(): transferred 79 MB to init
int main(): --- init created, waiting for exit condition ---
[init] unsupported program segment type 0x4
No protocol specified
No protocol specified
[init -> launchpad] Could not open file "config"
[init -> launchpad] Could not obtain config file
[init -> fb_sdl] creating virtual framebuffer for mode 1024x768 at 16
[init -> fb_sdl] int main(int, char**): fb_ds_cap has port 34566
[init -> nitpicker] framebuffer is 1024x768 at 1
[init -> nitpicker] create session with args: fb_mode=1, label="launchpad", ram_quota=1646592
[init -> nitpicker] Could not open file "config"
[init -> nitpicker] Could not obtain config file
[init -> nitpicker] create session with args: fb_width=1024, fb_height=1504, fb_mode=1, label="launchpad", ram_quota=3088384
[init -> launchpad] Could not open file "config"
[init -> launchpad] --- entering main loop ---
^Cint main(): --- destroying init ---
virtual void Genode::Core_parent::close(Genode::Session_capability): implement me, please
virtual void Genode::Core_parent::close(Genode::Session_capability): implement me, please
context area detach from 0x2fe000 - not implemented
int main(): --- core main says good bye ---
dtp:/media/os2l/var/src/genode/genode-11.02/bulid/bin# 
===================cut here========================]

Namely, something about incorrect program segment type 0x4. -- This log I have got when tried to specify a video mode with

vga=0x314 (1024x768x16bit)

in Linux kernel command line. So, that was probably, the compiled-in into the kernel vesa fb driver. With it I got that log, and no
subsequent switch to the graphics video mode -- libSDL remained in text mode!

Yesterday I tried to remove the vga= line from Linux kernel command line, and launch Matrox fb driver again manually. libSDL then started
the graphics mode successfully, like it was in the first time! So, maybe, it is some bug in Linux vesafb driver -- I thought that I broke 
something when I reinstalled Linux, but now appears that the cause was the use of another fb driver, which doesn't work.

PS: I also tried to start the Linux Genode version from within X11. -- There was still vesafb driver active in the console, but when I started it in xterm,
libSDL again tried to use a framebuffer backend, not the X11 one. Maybe, I must edit some config files to switch backends or this is a bug too?

WBR,
valery





More information about the l4-hackers mailing list