如何让 Ubuntu 在启动时在 tty 中启动 fbterm?

如何让 Ubuntu 在启动时在 tty 中启动 fbterm?

大约一周前,当我测试 openSUSE 时,我注意到 tty1(是的,只是 tty1)具有 openSUSE 背景。我想在 Ubuntu 中做同样的事情。

我找到了一种使用 fbsplash 的方法。但我不太喜欢这种方法,因为它需要修改内核。

然后我发现了 fbterm,它允许您使用自己的后台,并且不需要修改内核。

因此我让 fbterm 工作了;我对其进行了设置,现在我可以以我自己的身份(而不是以 root 身份)运行它,而且它运行良好。

现在我需要的是如何让它在启动 Ubuntu 时在 tty 中启动。

编辑:当我启动它时,它还需要像 getty 一样运行;否则我将无法登录。

答案1

首先,您需要编辑 inittab 文件。在 Debian 中,它位于/etc/inittab,我猜想在 Ubuntu 上它可能位于类似的地方。正常的 TTY 提示由名为 的程序管理getty,因此您需要向下滚动到该程序的设置位置。您应该会看到很多类似于以下内容的行:

# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

接下来,我们需要一个名为 的程序rungetty。这允许您以特定用户身份在 TTY 上运行程序。fbterm顺便说一句,要求您以 root 身份访问帧缓冲区。因此,您可以fbterm像这样在 TTY2 上运行(双破折号表示 开关的结束rungetty):

2:23:respawn:/sbin/rungetty -u root tty2 -- fbterm

只有一个问题;您有一个漂亮的基于帧缓冲区的终端,但您是以 root 身份登录的!未经身份验证的 root 提示符对安全性来说是最糟糕的。这可不行。

我们可以使用一个名为 的程序login来解决这个问题,方法是接受另一组用户凭据,然后启动 bash 或 zsh 或您的登录 shell。幸运的是,fbterm可以接受命令作为其最终参数(再次强调,双破折号可以防止fbterm参数rungetty混淆):

2:23:respawn:/sbin/rungetty -u root tty2 -- fbterm -- login

这样,您就应该fbterm在其中一个 TTY 上运行它了。

答案2

您应该能够通过编辑以下内容来更改 tty 终端:

/etc/init/tty1.conf

答案3

这是一个老问题,但我认为它值得一个更好的答案,而不是复制粘贴且不适用于现代 Ubuntu(撰写本文时为 22.04)的答案。

首先使用以下命令创建一个新脚本:

$ sudoedit /usr/sbin/fbterm-login

输入以下内容作为其内容,然后保存并退出。

#!/usr/bin/sh
fbterm -- /usr/bin/sh -c "TERM=fbterm login -p"

然后使用以下命令将脚本标记为可执行:

$ sudo chmod +x /usr/sbin/fbterm-login

此脚本fbterm以正确的参数启动登录程序。它还将设置TERM环境变量以fbterm启用 256 色支持。

接下来,通过调用以下命令编辑 getty 服务文件:

$ sudoedit /usr/lib/systemd/system/[email protected]

找到以下行:

ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM

将其注释掉并在其后添加以下行:

ExecStart=-/sbin/agetty --noclear -n -l /usr/sbin/fbterm-login %I $TERM

然后保存并退出编辑器。

现在重新启动并享受使用fbterm您的虚拟终端。

另外需要注意的是,我注意到它fbterm不允许您使用 Ctrl+Alt+F[1-9] 在 vts 之间切换,但是它允许您使用 Alt+LeftArrow 和 Alt+RightArrow 移动到其他 vts。

相关内容