Good evening,
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.
Regards Jacek Rużyczka
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_t... [2] https://github.com/genodelabs/genode-allwinner/tree/master/src/drivers/uart/... [3] https://github.com/genodelabs/genode-allwinner/blob/master/run/modem_pinepho... [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-p...
Cheers Norman