автологин в консоли
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
автологин в консоли
Задача: автологин при загрузке системы в консоли (без GUI, DM, WM ...) + автостарт приложения после логина.
Задача возникает из тем:
игрушки RetroArch
тонкий клиент HP T520
Ситуация довольно частая:
- типовой вход без явного логина...
- с запуском предустановленного приложения.
Задача возникает из тем:
игрушки RetroArch
тонкий клиент HP T520
Ситуация довольно частая:
- типовой вход без явного логина...
- с запуском предустановленного приложения.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: автологин в консоли
Раньше это было попроще...
Как сделать автоматический логин в консоль Linux?
С systemd всё гораздо хуже:1. в «старой доброй» sysv-инициализации это, естественно, файл /etc/inittab:
...
2. в системе инициализации upstart эту роль играют, судя по всему, файлы /etc/init/tty?.conf:
...
3. в системе инициализации systemd ситуация несколько сложнее. насколько я понял, глядя на debian-овскую конфигурацию, надо заменить символическую ссылку /etc/systemd/system/getty.target.wants/getty@tty1.service, которая ссылается на файл универсального сервиса /lib/systemd/system/getty@.service, на реальный файл (с тем же именем — getty@tty1.service). можно скопировать содержимое того же самого /lib/systemd/system/getty@.service, и добавить вышеупомянутую опцию к вызову программы *getty.
зачем подменять, а не исправлять сразу файл с универсальным сервисом /lib/systemd/system/getty@.service? для того, чтобы при переключении на другие виртуальные терминалы (не tty1) программа *getty запускалась «по-старому», и предлагала «обычное» приглашение к вводу логина/пароля.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: автологин в консоли
Мнения несколько разнятся - Автовход в консоли:
Автологин в консоли (поконсольно) делается так:файл cp /etc/systemd/system/getty.target.wants/getty@tty1.service это ссылка на /lib/systemd/system/getty@.service, и мы этой командой копируем эту ссылку на консоль на которой нужен атологин(в даном случае 2),далее меняем в /etc/systemd/system/getty.target.wants/getty@tty2.serviceКод: Выделить всё
cp /etc/systemd/system/getty.target.wants/getty@tty{1,2}.service
наКод: Выделить всё
ExecStart=-/sbin/agetty --noclear %I $TERM
youruser это имя вашего юзера. ВсеКод: Выделить всё
ExecStart=-/sbin/agetty --noclear -a youruser %I $TERM
если нужен автологин на 1-ой консоли:ну а дальше изменяем файл как написано вышеКод: Выделить всё
cp /etc/systemd/system/getty.target.wants/getty@tty{1,2}.service rm /etc/systemd/system/getty.target.wants/getty@tty1.service mv /etc/systemd/system/getty.target.wants/getty@tty{2,1}.service
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: автологин в консоли
Вопрос (логику и смысл getty) более-менее проясняет описание (документацию) systemd, написанное самим автором Lennart Poettering - systemd для администраторов - стр.61 -
16.1 Виртуальные консоли
...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: автологин в консоли
Код: Выделить всё
root@t520:/etc# cd /etc/systemd/system/getty.target.wants/
root@t520:/etc/systemd/system/getty.target.wants# pwd
/etc/systemd/system/getty.target.wants
root@t520:/etc/systemd/system/getty.target.wants# ls -l
total 0
lrwxrwxrwx 1 root root 34 Aug 24 08:42 getty@tty1.service -> /lib/systemd/system/getty@.service
Код: Выделить всё
root@t520:/etc/systemd/system/getty.target.wants# cp getty@tty1.service getty@tty2.service
root@t520:/etc/systemd/system/getty.target.wants# ls -l
total 4
lrwxrwxrwx 1 root root 34 Aug 24 08:42 getty@tty1.service -> /lib/systemd/system/getty@.service
-rw-r--r-- 1 root root 1975 Jan 16 21:43 getty@tty2.service
- было:
Код: Выделить всё
root@t520:/etc/systemd/system/getty.target.wants# cat getty@tty1.service | grep ExecStart=
ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM
Код: Выделить всё
root@t520:/etc/systemd/system/getty.target.wants# cat getty@tty2.service | grep ExecStart=
ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear --skip-login --autologin gamer %I $TERM
Код: Выделить всё
root@t520:/etc/systemd/system/getty.target.wants# systemctl daemon-reload
root@t520:/etc/systemd/system/getty.target.wants# systemctl disable getty@tty1.service
Removed /etc/systemd/system/getty.target.wants/getty@tty1.service.
root@t520:/etc/systemd/system/getty.target.wants# systemctl enable getty@tty2.service
Failed to enable unit: File /etc/systemd/system/getty.target.wants/getty@tty2.service already exists.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: автологин в консоли
Код: Выделить всё
root@t520:/etc/systemd/system/getty.target.wants# pwd
/etc/systemd/system/getty.target.wants
root@t520:/etc/systemd/system/getty.target.wants# cp getty@tty2.service getty@tty1.service
root@t520:/etc/systemd/system/getty.target.wants# reboot now
Но это легко поправить:
- восстановить содержимое /lib/systemd/system/getty@.service
- вместо ссылки /etc/systemd/system/getty.target.wants/getty@tty1.service записать туда файл с тем же содержанием
Но теперь автостарт без логина с именем gamer - работает!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей