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

big*_*107 11 terminal console tty ubuntu-12.04

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

我找到了一种使用 fbsplash 的方法。我不太热衷于此,因为它涉及修改内核。

然后我找到了fbterm,它可以让你使用自己的背景并且不涉及修改内核。

所以我让 fbterm 工作;我设置了它,现在我可以以我自己的身份(而不是以 root 身份)运行它,并且它工作得很好。

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

编辑:当我启动它时,它还需要像 getty 这样的东西;否则我将无法登录。

小智 7

首先,您需要编辑 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
Run Code Online (Sandbox Code Playgroud)

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

2:23:respawn:/sbin/rungetty -u root tty2 -- fbterm
Run Code Online (Sandbox Code Playgroud)

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

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

2:23:respawn:/sbin/rungetty -u root tty2 -- fbterm -- login
Run Code Online (Sandbox Code Playgroud)

有了这个,你应该fbterm在你的一个 TTY 上运行。