INT 21h

Raspberry Pi: Запуск tmux вместо логина на tty1

№ 5111 В разделе "Администрирование" от April 5th, 2013,

У меня стоит на Raspberry Pi дистрибутив Arch Linux. Если у вас Debian, то действия будут немного отличаться, но принцип один и тот же.

Итак, задача такая: малинка включается, загружается и вместо запроса логина должен появиться tmux с рутовой консолью. В Arch Linux сейчас используется systemd вместо нормальных скриптов, поэтому открывайте файл /etc/systemd/system/getty.target.wants/getty@tty1.service для редактирования. Если вы не хотите, чтобы первое же обновление systemd затерло конфиг, то сделайте копию этого файла и замените им симлинк на /usr/lib/systemd/system/getty@.service.

Чтобы tmux запустился надо добавить к agetty всего 2 параметра: -n и -l. Параметр -l указывает на программу, которая будет запущена вместо программы входа. Грабля в том, что без -n (отключение входа под юзером) эта программа не запустится 🙂

ExecStart=/sbin/agetty -n -l /usr/bin/tmux --noclear %I 38400 linux

А теперь нужно закомментировать строку обнуляющую Environment, чтобы запущеный mc не был похож на говно.

#Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=

Заметка от читателя Пауль о Pedora:

Этот фокус в описанном варианте проходит на некоторых системах, а на Fedora – нет!
Дело в том, что Fedora-Pi по непонятной причине не опрашивает каталог /etc/systemd/system/getty.target.wants/ и не реагирует на помещенный в этот каталог файл getty@tty1.service с нужным нам содержанием. Несколько дней убил на разгадку этой таинственной проблемы, совершенно уверенный в правоте исходной рекомендации. Тем более что она (рекомендация) совпадает с воззрениями Lennart-а Poettering-а, автора systemd (стр. 42)

Решение:
Скопировал getty@.service в файл с именем getty@tty1.service в том же каталоге /usr/lib/systemd/system, подправил его как надо, и все заработало.

Например, вместо строки
ExecStart=-/sbin/agetty --noclear %I 38400
ввел строку
ExecStart=-/sbin/agetty -n -l /usr/bin/bash --noclear %I 38400

Теперь на первом терминале вместо login/password сразу идет приглашение к диалогу с правами root и корневым каталогом (/) в качестве текущего.

Еще одно дополнение, если кому интересно: agetty может не только выполнить любую программу вместо login, но и передать ей необходимые параметры. Для этого служит ключ --login-options:
ExecStart=-/sbin/agetty -n -l /usr/bin/bash --login-options "/home/paul/exec.bat" --noclear %I 38400
При этом сам параметр (список параметров) заключается в двойные кавычки “”.
Наконец, agetty позволяет перед вызовом программы перейти в нужный нам рабочий каталог с помощью ключа --chdir:
ExecStart=-/sbin/agetty --chdir /home/paul -n -l /usr/bin/bash --login-options "exec.bat" --noclear %I 38400
Обратите внимание: теперь уже не обязательно указывать полное путевое имя исполняемого файла exec.bat, поскольку после перехода по ключу --chdir он окажется в текущем каталоге.

Если вам интересно почитать как подключить Raspberry Pi к вашему телевизору.

3 комментариев »

3 responses to “Raspberry Pi: Запуск tmux вместо логина на tty1”

  1. Пауль says:

    Этот фокус в описанном варианте проходит на некоторых системах, а на Fedora – нет!
    Дело в том, что Fedora-Pi по непонятной причине не опрашивает каталог /etc/systemd/system/getty.target.wants/ и не реагирует на помещенный в этот каталог файл getty@tty1.service с нужным нам содержанием. Несколько дней убил на разгадку этой таинственной проблемы, совершенно уверенный в правоте исходной рекомендации. Тем более что она (рекомендация) совпадает с воззрениями Lennart-а Poettering-а, автора systemd (http://www2.kangran.su/~nnz/pub/s4a/s4a_latest.pdf стр. 42)

    Решение:
    Скопировал getty@.service в файл с именем getty@tty1.service в том же каталоге /usr/lib/systemd/system, подправил его как надо, и все заработало.

    Например, вместо строки
    ExecStart=-/sbin/agetty –noclear %I 38400
    ввел строку
    ExecStart=-/sbin/agetty -n -l /usr/bin/bash –noclear %I 38400

    Теперь на первом терминале вместо login/password сразу идет приглашение к диалогу с правами root и корневым каталогом (/) в качестве текущего.

  2. 21h says:

    ну федора отличается от дебиана и довольно сильно. добавил твое решение в запись чтоб не потерялось.

  3. Пауль says:

    Еще одно дополнение, если кому интересно: agetty может не только выполнить любую программу вместо login, но и передать ей необходимые параметры. Для этого служит ключ –login-options:
    ExecStart=-/sbin/agetty -n -l /usr/bin/bash –login-options “/home/paul/exec.bat” –noclear %I 38400
    При этом сам параметр (список параметров) заключается в двойные кавычки “”.
    Наконец, agetty позволяет перед вызовом программы перейти в нужный нам рабочий каталог с помощью ключа –chdir:
    ExecStart=-/sbin/agetty –chdir /home/paul -n -l /usr/bin/bash –login-options “exec.bat” –noclear %I 38400
    Обратите внимание: теперь уже не обязательно указывать полное путевое имя исполняемого файла exec.bat, поскольку после перехода по ключу –chdir он окажется в текущем каталоге.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Комментарии

  • 21h: нене ) без меня )
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно...
  • 21h: слушать никто не запрещает. нет закона, который запрещает...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете...

© Vladimir Smagin, 2005-2017. Копирование материалов без разрешения запрещено.