Как заставить Ubuntu запускать fbterm в tty при запуске?


11

Когда я тестировал openSUSE около недели назад, я заметил, что tty1 (да, просто tty1) имеет фон openSUSE. Я хочу сделать то же самое в Ubuntu.

Я нашел способ, используя fbsplash. Я не слишком заинтересован в этом, поскольку он включает в себя модификацию ядра.

Затем я нашел fbterm, который позволяет вам использовать свой собственный фон и не требует модификации ядра.

Так что я получил работу fbterm; Я настроил его, и теперь я могу запустить его как сам (не как root), и он работает просто отлично.

Теперь все, что мне нужно, это как запустить tty при запуске Ubuntu.

Редактировать: он также должен действовать как 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

Далее нам понадобится программа под названием rungetty. Это позволяет запускать программы на TTY от имени конкретного пользователя. fbtermтребует, чтобы вы были пользователем root для доступа к фреймбуферу, by. Таким образом, вы можете работать fbtermна TTY2 следующим образом (двойные черточки означают конец переключателей rungetty):

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

Только одна проблема; у вас есть прекрасный терминал на основе фреймбуфера, но вы вошли как root! Наличие не прошедшего проверку подлинности корневого приглашения примерно так же вредно для безопасности, как и оно. Это не будет делать.

Мы можем использовать программу, вызываемую, loginчтобы обойти это, приняв другой набор учетных данных пользователя, а затем запустив bash или zsh или любой другой тип вашей оболочки входа в систему. К счастью, fbtermможет принять команду в качестве окончательного аргумента (опять же, двойные тире не допускают fbtermи rungettyперепутывают аргументы:

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

При этом вы должны fbtermработать на одном из ваших TTY.


Как насчет системы, в которой утилита rungetty недоступна? Есть ли другой способ сделать то же самое?
15:20

@dtmland Похоже, у agetty и mingetty есть опции (-l и --login ‐ prog соответственно), которые могут быть полезны, но я сам не пробовал их. Вы также можете попробовать извлечь исходные коды rungetty из архива пакетов debian и собрать их в своей системе.
Джейкоб Хьюм

Кстати, у меня проблемы с fbterm в целом - возможно, ваш опыт может пригодиться? superuser.com/questions/892028/…
dtmland

1

Вы должны быть в состоянии изменить терминал tty, отредактировав:

/etc/init/tty1.conf
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.