how to allow execution of bash scripts inside genode

Johannes Schlatow johannes.schlatow at genode-labs.com
Thu Jan 13 10:11:42 CET 2022


Hi Alexander,

> if I try to execute it inside genode bash (eg in /home/build) - I do
> receive the following: in ssh client :
> bash-4.4# vim c
> bash-4.4# ls -la
> total 1
> -rwx------ 1 root 0 1004 Jan  1  2022 c
> drwx------ 1 root 0  144 Jan  1  1970 depot
> bash-4.4# ./c
> bash: ./c: No such file or directory
> bash-4.4# bash -c ./c
> bash: ./c: No such file or directory
> bash-4.4# bash -c c
> bash: c: command not found
> 
> or, if I add this to beginning
> #!/bin/sh
> echo ok
> bash: ./c: /bin/bash: bad interpreter: No such file or directory
> 
> 
> in log:
> [init -> /bin/bash -> 12] Error: ROM-session creation failed
> (ram_quota=6144, cap_quota=3, label="/home/build/c") [init ->
> /bin/bash -> 12] Error: Could not open ROM session for
> "/home/build/c" [init -> /bin/bash -> 12] Warning: execve: executable
> binary inaccessible as ROM module
> 

The "Could not open ROM session for /home/build/c" indicates that there
is something wrong with your session routing. It's a bit of a guesswork
involved here what your run script looks like but I believe it is
similar to ssh.run. Executable binaries must be provided as a ROM
module. In other words, when executing "/home/build/c" the bash
component tries to open a ROM session with label "/home/build/c". For
this purpose, the ssh.run contains the fs_rom component as a proxy
between the vfs server and the bash component. When you look at the
routing rules defined for the bash component, you see some routing
rules for the ROM service. In ssh.run, however, only session requests
with labels "/bin/..." are routed to fs_rom. Have you tried adding a
rule for "/home/build/..."?

Best
Johannes




More information about the users mailing list