Hi,
I'm trying to run noux_bash on Linux on today's master genode branch, and running into some issues.
When I make run/noux_bash, I can see a x-window pop-up with the bash root prompt, and can extract using echo the following responses from bash:
bash-4.1# echo $PATH /usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.
bash-4.1# echo $SHELL /bin/bash
bash-4.1# echo $TERM linux
However, any non-shell command causes a dead unresponsive shell, with
"Kernel: ipc_cap_data nullptr"
output on the screen running the run script:
[init] child "fb_sdl" announces service "Framebuffer" [init] child "fb_sdl" announces service "Input" [init] child "terminal" announces service "Terminal" [init -> terminal] create terminal session [init -> terminal] new terminal session: [init -> terminal] framebuffer has mode 1024x768@...487... [init -> terminal] character size is 6x14 pixels [init -> terminal] terminal size is 170x54 characters [init -> noux] Warning: stdin VFS path not defined, connecting to terminal session [init -> noux] Warning: stdout VFS path not defined, connecting to terminal session [init -> noux] Warning: stderr VFS path not defined, connecting to terminal session [init -> noux] --- noux started --- Kernel: ipc_cap_data nullptr
The terminal doesn't recognize the '/' of my keyboard, and so I cannot try giving full paths to the various executables like /bin/env. Is this an issue with my local setup, or running a non-released genode version, or a bug?
The broader question I had is: what would be needed to run bash from within a non-graphical terminal, as in via an ssh server. I have a very basic and incomplete sshd server running in genode linux [1], and need to fulfill, on the server end, the pty_request and shell_request sent by the ssh client.
I notice that the bash port is built using:
repos/ports/src/noux-pkg/bash/target.mk: # Prevent interactions with nonexisting tty driver CFLAGS += -DNO_TTY_DRIVER
and a repos/ports/src/noux-pkg/bash/check_dev_tty.patch which removes a bash call to check_dev_tty().
Would this affect the above goal?
Thanks,
--prashanth
Hello Prashanth,
I'm trying to run noux_bash on Linux on today's master genode branch, and running into some issues.
When I make run/noux_bash, I can see a x-window pop-up with the bash root prompt, and can extract using echo the following responses from bash:
bash-4.1# echo $PATH /usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.
bash-4.1# echo $SHELL /bin/bash
bash-4.1# echo $TERM linux
However, any non-shell command causes a dead unresponsive shell, with
"Kernel: ipc_cap_data nullptr"
Noux does not support fork on Linux (I don't expect this to change anytime soon). Hence, only very simple scenarios like noux_vim.run or noux.run are supposed to work. All base platforms other than Linux should work.
The glitch about character input is caused by the mapping of SDL input events to the keycodes as understood by Genode. The problem is related to the following issue:
https://github.com/genodelabs/genode/issues/1187
As we merely use base-linux as a development vehicle where whose issues are not important, we haven't addressed them so far.
The broader question I had is: what would be needed to run bash from within a non-graphical terminal, as in via an ssh server. I have a very basic and incomplete sshd server running in genode linux [1], and need to fulfill, on the server end, the pty_request and shell_request sent by the ssh client.
I notice that the bash port is built using:
repos/ports/src/noux-pkg/bash/target.mk: # Prevent interactions with nonexisting tty driver CFLAGS += -DNO_TTY_DRIVER
and a repos/ports/src/noux-pkg/bash/check_dev_tty.patch which removes a bash call to check_dev_tty().
Would this affect the above goal?
Connecting Noux directly to a terminal service like 'tcp_terminal' instead of the graphical terminal should just work.
Note, however, that you may encounter incompatibilities between your local terminal emulator (like xterm) and the 'TERM' configuration used by noux applications. In the noux_bash scenario, the 'TERM' environment variable is set to 'linux', which is understood by Genode's graphical terminal, but probably not by the terminal of choice you are using on your host machine. Genode's port of ncurses enables 'vt102' in addition to 'linux' (see libports/ports/ncurses.port). So it may be worth to give this a try. For further discussion of the terminal topic, let me refer to the following issue:
https://github.com/genodelabs/genode/issues/1907
Cheers Norman