Hi,
while booting Genode directly on Linux I encountered the problem that Linux requires to call `/init` in the initramfs. Unfortunately Genode requires to call `core` which loads `init` so renaming core to init isn't enough.
I renamed init to init2 core to init and called it with "label=init2" which works at first (core finds all ROM sessions) but then segfaults with "init2[45]: segfault at 7f11c473b128 ip 00007f11c4645f40 sp 00007ffc1c8c15f8 error 4 in ld.lib.so[7f11c45c5000+95000]" and the warning "Warning: blocking canceled in entrypoint constructor".
This warning was addressed on Linux before in [0] and fixed in ad2859b6b9dae96c48329eebc0a73527ba4deb9b. I have already included this patch.
To boot Genode on Linux with this behaviour, checkout [1] and change "KERNEL_RUN_OPT(linux) := --include power_on/linux --include log/linux" to "KERNEL_RUN_OPT(linux) := $(QEMU_RUN_OPT)" in your etc/build.conf (with linux as kernel ofc).
Beside renaming I also tried to make the ROM session chdir into a sub directory or to prepend this directory to the binary name. Neither of made Genode correctly find the binaries. I have to say that Linux is not booting into a real fs but is using a initramfs which consists of a cpio archive.
What would be the way to go to either rename the binaries to a Linux compatible scheme or to change the library search to find its binaries in a cpio archive (both options should be changeable at build time to still use the current linux)?
Regards, Johannes
[0]: https://github.com/genodelabs/genode/issues/2521 [1]: https://github.com/jklmnn/genode/commit/ef4becffcfc4bfc4079ff411872023b0362f...