Hello,
I just tried the 'noux_vim' run script on Xubuntu 14.04 and it worked for me.
This is the log output I'm seeing:
spawn ./core Genode 15.08-34-g8c7e052 int main(): --- create local services --- int main(): --- start init --- int main(): transferred 17592186044415 MB to init int main(): --- init created, waiting for exit condition --- [init] parent provides [init] service "ROM" [init] service "LOG" [init] service "CAP" [init] service "RAM" [init] service "RM" [init] service "CPU" [init] service "PD" [init] service "IRQ" [init] service "IO_PORT" [init] service "IO_MEM" [init] service "SIGNAL" [init] child "timer" [init] RAM quota: 876544 [init] ELF binary: timer [init] priority: 0 [init] provides service Timer [init] child "fb_sdl" [init] RAM quota: 4022272 [init] ELF binary: fb_sdl [init] priority: 0 [init] provides service Input [init] provides service Framebuffer [init] child "terminal" [init] RAM quota: 1925120 [init] ELF binary: terminal [init] priority: 0 [init] provides service Terminal Quota exceeded! amount=24576, size=4096, consumed=24576 [init] upgrading quota donation for Env::CPU (8192 bytes) [init] child "noux" [init] RAM quota: 1073569792 [init] ELF binary: noux [init] priority: 0 [init -> fb_sdl] Could not open ROM session for module "config" [init -> fb_sdl] Could not obtain config file [init -> terminal] int main(int, char**): --- terminal service started --- [init] child "timer" announces service "Timer" [init -> noux] --- noux started --- [init -> noux] tar archive 'vim.tar' local at 2ac00a020000, size is 19998720 [init -> fb_sdl] creating virtual framebuffer for mode 1024x768@...64... [init] child "fb_sdl" announces service "Framebuffer" [init] child "fb_sdl" announces service "Input" [init -> terminal] cell size is 8x16 [init] child "terminal" announces service "Terminal" [init -> terminal] create terminal session [init -> terminal] new terminal session: [init -> terminal] framebuffer has 1024x768 pixels [init -> terminal] character size is 8x16 pixels [init -> terminal] terminal size is 128x48 characters [init -> noux] invalid opcode 21 [init -> noux -> /bin/vim] int getrlimit(int, rlimit*): not implemented 2 [init -> noux -> /bin/vim] unsupported ioctl (request=0x802c7414)
Christian
On 09/17/2015 11:27 AM, Norman Feske wrote:
Hi Alex,
On 17.09.2015 10:41, Alexander Senier wrote:
I'm trying to run some more elaborate demos on with Linux as the base system. My host is a Debian Stretch (x86_64), I'm on master which I checked out this morning (5cf8c49c).
When trying to run 'noux_vim', a completely black SDL window (no text or anything) shows up. The following is output on the command line:
$ make run/noux_vim
unfortunately, all but the simplest noux scenarios don't work on Linux. Ironically, 'fork' is not implemented on this base platform. On regular L4-like microkernels, it is possible to remotely manipulate address spaces. So the noux runtime is able to copy the address space of the forking noux process to another one. The Linux kernel does not allow us to do that (well, at least when not using ptrace or a similar hook).
Consequently, implementing fork on Linux calls for a different implementation where the noux process itself plays a more active role (i.e., issuing the Linux clone syscall directly, copying the locally implemented region-manager structures). It is actually quite tricky. So far, I found that the hassle wasn't worth the effort.
The plain noux.run script does work because is solely executes 'ls', which does not rely on fork. In contrast, the noux_vim.run scenario requires fork because Vim temporarily spawns a shell at startup.
Do you deem noux as critical in your Linux-based scenario? If yes, we should investigate to best way how to go forward.
Cheers Norman