Discussion:
run/noux_bash
Prashanth Mundkur
2017-03-29 22:45:15 UTC
Permalink
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 ***@RGB565
[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

[1] https://github.com/pmundkur/genode/commits/ssh_terminal
Norman Feske
2017-03-30 09:36:31 UTC
Permalink
Hello Prashanth,
Post by Prashanth Mundkur
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-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.
Post by Prashanth Mundkur
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.
# 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
--
Dr.-Ing. Norman Feske
Genode Labs

http://www.genode-labs.com · http://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
Loading...