Skip to content

n3rdopolis/fakekmscon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This contains multiple solutions to replacing what goes missing without VTs


vTTY:
/usr/lib/systemd/system/vtty-frontend-novt@.service and /usr/lib/systemd/system/vtty-backend-novt@.service take a seat as the parameter parameter. Only seat0 starts by default.
(Unlike vtty-frontend@.service and vtty-backend@.service can replace autovt@.service, they take a tty as the parameter, for systems that still have VTs, it can give a nice looking console, but users need to be in sudoers to be able to run commands like `startx` )

The backend process looks for a /usr/bin/vtty-login-program symlink, where for example, it can be replaced with console-conf https://ubuntu.com/core/docs/system-user or something similar.

As systemd is only able to start one instance of vtty-frontend-novt@.service without help (as only seat0 is able to be hardcoded), and only one instance, as it only supports one parameter, this is only fit for servers that are headless 99% of the time except for initial config, or emergency view of the console with VM manager, or KVM manager.


Minimal Desktops are much better off using a minimal login manager, something similar to this https://www.youtube.com/watch?v=grKc8M83q4s .


UvTTY:
/usr/share/wayland-sessions/fullscreenterminal.desktop is a "wayland session" which is just the user's $SHELL running under the foot terminal running under the cage display server, it is just a full screen terminal emulator, and a very minimal session



UvTTYs and vTTYs here are very similar. They are both full screen foot terminals 
vTTYs run as a system user. UvTTYs run as the user, and are started by the display manager, as they register under /usr/share/wayland-sessions. 
They both utilize socat client/servers but to solve different issues.

In vTTYs /etc/footkiosk.conf is passed to be used as foot's config file. It configures the foot terminal to disable features that are not suitable for it running as a different user, for example URL parsing.

In vTTYs a fake seat is used `seat-vtty` and the text mode user sessions are started on these fake seats. This is a logind workaround, It allows full PAM functionality to work, so that privleges work in tools that don't have to run as root, such as nmtui, or udisks.
Otherwise, the session would have to start on the same seat, which would cause issues when the session starts and becomes active. The session for the host display server needs to be active for the display server to work.

In vTTYs the getty runs under a socat "server" that runs as root, and creates a pty terminal for these commands. It grants the vtty user access to it. The socat client runs under foot, which runs under cage, all of which run as the pty user. This prevents the need for a display server and a terminal emulator to run as root.

In UvTTYs, there is a socat client/server but they both run as the same user. This is so that the cage display server can be stopped without stopping the user session.
This is for uvtty-launch to work. `uvtty-launch startx` https://www.youtube.com/watch?v=qSJ3Fc77tRI could be a common command that is run. Or weston. Display server developers on systems without VTs would likely enjoy this feature.



/usr/bin/recinit
recinit can be run as init=/bin/recinit instead of init=/bin/bash
recinit can also add around 12MB of files (3MB compressed to the initrd) and it works to show the (initramfs) prompt when the early boot process fails

recinit starts /bin/init when the shell exits, it can be changed at runtime by editing /run/recinit/init

Requirements:
    cage
    foot
    wl-clipboard    (for vTTYs to be able to clear the clipboard upon the next prompt for user log in)
    socat

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages