Как мне автоматически войти в систему рабочего стола с помощью systemd?

Как мне автоматически войти в систему рабочего стола с помощью systemd?

Как настроить systemd для автоматического входа в мою среду рабочего стола, желательно без использования менеджера входа? Я использую Arch Linux.

решение1

Это описано вАрхВики:

Создайте новый файл службы, аналогичный [email protected]скопированному в/etc/systemd/system/

cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/[email protected]

Это в основном копирует уже существующий [email protected]файл в новый [email protected], который можно свободно изменять. Он копируется в, /etc/systemd/systemпотому что там хранятся файлы юнитов, специфичные для сайта. /usr/lib/systemd/systemсодержит файлы юнитов, предоставляемые пакетами, поэтому вам не следует ничего там менять.

Затем вам придется создать символическую ссылку [email protected]на службу getty для tty, на котором вы хотите выполнить автоматический вход, например, для tty1:

ln -s /etc/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

До сих пор это все еще то же самое, что и обычный [email protected]файл, но самая важная часть - это изменить, [email protected]чтобы на самом деле автоматически входить в систему. Для этого вам нужно только изменить строку ExecStartна

ExecStart=-/sbin/agetty -a USERNAME %I 38400

Разница между ExecStartстрокой [email protected]и [email protected]заключается только в том -a USERNAME, что она сообщает agetty о необходимости автоматического входа пользователя с именем USERNAME.

Теперь вам нужно только указать systemd перезагрузить файлы демона и запустить службу:

systemctl daemon-reload
systemctl start [email protected]

(Я не уверен, что служба запустится правильно, если вы уже вошли в систему на tty1; самый безопасный способ, вероятно, просто перезагрузить компьютер вместо запуска службы).

Если вы затем захотите автоматически запускать X, вставьте следующий фрагмент в свой ~/.bash_profile(взятый извикиснова):

if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
    exec startx
fi

Вам придется изменить свою ~/.xinitrcсреду рабочего стола, чтобы запустить ее. Как это сделать, зависит от DE и, вероятно, также описано в ArchWiki.

решение2

ИМО,Арка Викив настоящее время рекомендуется гораздо более простое решение:

Либо запустите помощник ( systemctl edit getty@tty1), либо сделайте то, что я сделал вручную:

mkdir -p /etc/systemd/system/[email protected]/
touch /etc/systemd/system/[email protected]/override.conf

Текст, который вы хотите ввести (любым способом), — (обязательно изменитеимя пользователясоответствующим образом):

[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM

ПРИМЕЧАНИЕ: Пустая строка важна! Пустая строка сначала очистит запись ExecStart, а следующая строка введет новую команду exec.

Теперь перезапустите ( ), и произойдет 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')

решение3

Непосредственно измените файл (который является символической ссылкой на ):/etc/systemd/system/getty.target.wants/[email protected]/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но все равно будет запрашиваться пароль.

После перезагрузки вы автоматически войдете в систему.

ПсИзмените имя файла [email protected]на тот, в который ttyвы хотите войти.

решение4

Вы также можете использовать gettyкоманду (get tty), которая позволяет автоматически входить в систему под указанным пользователем, аргументом может gettyбыть либо , --autologinлибо -a. Я использую Linux Debian Ubuntu, поэтому не знаю, доступна ли эта команда в других дистрибутивах.

getty -a <user>

Связанный контент