How to operate Genode on a machine without graphical output

Norman Feske norman.feske at genode-labs.com
Tue Jul 12 12:15:43 CEST 2022


Hello Jacek,

welcome to the mailing list and thanks for your interest in using Genode!

> I am strongly interested to install the current Genode / SculptOS release
> on a server without graphical output, just with a serial terminal (VT100).
> As I haven't found this issue addressed in the official Genode docs, I'd
> like to ask here how to make Genode's UI, including the "Leitzentrale" on a
> 25×80 char device. Thank you.

Unfortunately, there is no ready-to-use out-of-box solution. But given
that the various puzzle pieces exist, let me draft how I would approach
this.

In Sculpt, there exists the system-shell component, which presents an
interactive shell in a window. The system shell has Sculpt's config file
system mounted at /config, and the report file system mounted at
/report. With the access to those two file systems, the system shell can
be used for everything that can normally be accomplished via the
Leitzentrale GUI. As a matter of fact, the Leitzentrale GUI is just a
"view/controller" interacting with those two file systems. E.g., for
starting a component, one would add a <start> node to /config/deploy.

The system shell uses the graphical terminal as for its UI. This
terminal component provides the "Terminal" service. There exist other
components that provide the same interface. E.g., the tcp_terminal [1]
implements a "Terminal" service using a raw TCP socket, similar to
telnet. Or, on the PinePhone we use a serial driver [2] that speaks the
"Terminal" session interface and combine it with the terminal-crosslink
component [3] to allow the user to talk to the modem using AT commands.
Or, as another example, there exists an SSH server component at the
Genode-world repository [4] that might be worth trying, taking the run
script [5] as starting point.

[1]
https://github.com/genodelabs/genode/tree/master/repos/gems/src/server/tcp_terminal
[2]
https://github.com/genodelabs/genode-allwinner/tree/master/src/drivers/uart/ns16550
[3]
https://github.com/genodelabs/genode-allwinner/blob/master/run/modem_pinephone.run
[4]
https://github.com/genodelabs/genode-world/tree/master/src/server/ssh_server
[5]
https://github.com/genodelabs/genode-world/blob/master/run/ssh_terminal.run

Given those puzzle pieces and your preferred way of the textual channel
(TCP, UART, or SSH), I'd recommend putting together a custom version of
the system-shell package that replaces the graphical terminal with one
of the other "Terminal" implementations. During this development, I'd
use the regular graphical Sculpt as a convenient means to debug and
experiment. Once the new subsystem works, and you can connect to it from
the outside, you can disconnect the graphics, and possibly even attain a
slimmed-down headless version of Sculpt by leveraging the recently
gained modularization of Sculpt [6].

[6]
https://genode.org/documentation/release-notes/22.02#Framework_for_special-purpose_Sculpt-based_operating_systems

Cheers
Norman


-- 
Dr.-Ing. Norman Feske
Genode Labs

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

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



More information about the users mailing list