Як я можу налаштувати systemd для автоматичного входу в систему на робочому столі, бажано без використання менеджера входу? Я використовую Arch.
Як я можу налаштувати systemd для автоматичного входу в систему на робочому столі, бажано без використання менеджера входу? Я використовую Arch.
Відповіді:
Це описано в Arch Wiki :
Створіть новий файл сервісу, аналогічний тому
getty@.service, скопіювавши його в/etc/systemd/system/cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
Це, в основному, копіює вже наявний getty@.serviceу новий файл, autologin@.serviceякий можна вільно змінювати. Він копіюється, /etc/systemd/systemтому що саме там зберігаються файли одиничних файлів для певного сайту. /usr/lib/systemd/systemмістить файли одиниць, надані пакетами, тому нічого не слід міняти там.
Тоді вам доведеться символізувати це autologin@.serviceдо служби getty для tty, на якій ви хочете автологізуватися, для прикладу для запиту на tty1:
ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
На сьогоднішній день це все одно те саме, що і звичайний getty@.serviceфайл, але найважливіша частина - це змінити autologin@.serviceфактичний вхід у систему автоматично. Для цього вам потрібно лише змінити ExecStartрядок для читання
ExecStart=-/sbin/agetty -a USERNAME %I 38400
Різниця між ExecStartрядком в getty@.serviceі autologin@.serviceполягає лише в тому, -a USERNAMEщо повідомляє agetty автоматично ввійти користувача з ім'ям користувача USERNAME.
Тепер вам залишається лише сказати systemd перезавантажити свої демон-файли та запустити службу:
systemctl daemon-reload
systemctl start getty@tty1.service
(Я не впевнений, що сервіс запрацює належним чином, якщо ви вже увійшли до системи tty1, найбезпечніший спосіб - просто перезавантажити, а не запускати послугу).
Якщо ви хочете автоматично запустити X, вставте у свій фрагмент ~/.bash_profile(взятий із вікі знову):
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
exec startx
fi
Вам потрібно буде змінити своє, ~/.xinitrcщоб запустити середовище робочого столу, як це зробити, залежить від DE та, ймовірно, описано також у вікі Arch.
File existsколи роблю симпосилання
ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceдля перезапису.
Безпосередньо змінити файл /etc/systemd/system/getty.target.wants/getty@tty1.service(який є символьним посиланням /lib/systemd/system/getty@service):
Додайте -a/--autologin USERNAMEдо рядка:
ExecStart=-/sbin/agetty --noclear %I $TERM
Звідси:
ExecStart=-/sbin/agetty -a USERNAME %I $TERM
Ви також можете видалити -o '-p -- \\u'(як це є в поточній установці Arch), оскільки це запустить логін, USERNAMEале все ж запитує пароль.
Після перезавантаження ви увійдете в систему автоматично.
Ps Змініть ім’я файлу getty@tty1.serviceна ttyпотрібне увійти.
IMO, Arch Wiki в даний час рекомендує набагато простіше рішення:
Або запустіть помічник ( systemctl edit getty@tty1) або зробіть те, що я зробив вручну:
mkdir -p /etc/systemd/system/getty@tty1.service.d/
touch /etc/systemd/system/getty@tty1.service.d/override.conf
Текст, який ви хочете ввести (будь-яким способом), ( не забудьте належним чином змінити ім’я користувача ):
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM
ПРИМІТКА : Порожній рядок важливий! (правда, я не впевнений, чому ...)
Тепер перезапустіть ( shutdown -r 0), і щось з ефектом ... login: username (automatic login)буде відбуватися там, де він раніше заблокований, очікуючи введення імені користувача / пароля
Після перезавантаження та автоматичного входу в систему, якщо ви схожі на мене і хочете зараз запустити SSH в цю систему, вам, ймовірно, потрібно запустити:
systemctl enable sshd.service
Яке створить симпосилання (наприклад ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service')
/sbin/agetty, тому варто спочатку перевірити оригінальний /etc/systemd/system/getty.target.wants/getty@tty1.serviceфайл.