Как настроить 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>