LINUX.ORG.RU
ФорумAdmin

arch+systemd поднять сеть и ssh до монтирования шифрованных томов

 , , ,


0

2

Имеется машина с арчем и зашифрованным luks контейнером (не содержащим ничего необходимого для нормальной загрузки, фактически папка с шарой ну и ещё кое какие данные). Требуется чтобы после старта система цеплялась к сети (dhcp ethernet), поднимала ssh сервер, и уже после этого, запрашивала пароль к зашифрованному диску. (пароль либо вводит специально обученный пользователь либо я подцепляюсь по ssh, сам монтирую контейнер и вручную догружаю систему) Раньше всё было реализовано достаточно банально, стандарный cryptsetup демон был выключен а в rc.local были прописаны комманды монтирования. То есть система грузилась обычным макаром до того момента как начинал отрабатывать rc.local потом останавливалась и ждала пароль. Если пароль вводил пользователь локально то она догружалась (ах да kdm тоже в rc.local был прописан). А если подключался я по ssh, то я монтировал раздел вручную, потом просто прибивал cryptsetup запущенный из rc.local и система опять же стартовала дальше в штатном режиме. Появился systemd и я решил сделать всё по науке, но руки видимо выросли из нижних полушарий мозга. В результате как написано в арчвики прописал демону cryptsetup зависимости от wicd и ssh.

[root@localhost system]# cat /usr/lib/systemd/system/sshd.socket
[Unit]
Wants=wicd.service
Requires=wicd.service
After=wicd.service
Conflicts=sshd.service
Wants=sshdgenkeys.service

[Socket]
ListenStream=22
Accept=yes

[Install]
WantedBy=sockets.target
[root@localhost system]# cat /usr/lib/systemd/system/cryptsetup.target
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Requires=wicd.service sshd.socket
After=wicd.service sshd.socket
Description=Encrypted Volumes
Documentation=man:systemd.special(7)

Получил мат в консоль, кроме того если не ввести пароль в течении 60 секунд то система и вовсе вываливает в синглмод фото. Думается что такое происходит из-за того что systemd пытается стартовать cryptsetup уровнем раньше чем сеть и ssh, однако в вики написано что уровней теперь и вовсе нет а есть таргеты и , как я понял, systemd должна сама разобраться что и когда стартовать ориентируясь по зависимостям.

Фишка, видимо, в том, что от cryptsetup зависят другие сервисы, от которых, в свою очередь зависит сеть, от которой зависят wicd и ssh, от которого зависит cryptsetup.

alex_the_v ★★★ ()
Ответ на: комментарий от alex_the_v

Да, точняк, оно и сообщает, что Ordering cycle found и скипает кривые зависимости.

alex_the_v ★★★ ()

Попробуй поставить graphviz и сказать:

# systemctl dot | dot -Tsvg > systemd.svg

Оно тебе покажет зависимости, и ты сможешь выяснить куда что подвинуть.

alex_the_v ★★★ ()
Ответ на: комментарий от qnikst

Ага, только там такая паутина, что ее зараз взглядом не объять. Но помочь выяснить кто хочет cryptsetup оно должно помочь.

alex_the_v ★★★ ()
Ответ на: комментарий от alex_the_v

Oo это можно на стену печатать... к тому же всё что я понял из этого графика что у меня пистец как много всего в системе сделал так

echo "digraph systemd {" > tmp
systemctl dot | egrep "ssh|wicd|cryptsetup" >> tmp
echo '}' >> tmp
cat tmp | dot -Tsvg > systemd.svg

вот что получилось... вопрос от идиота: какие я должен сделать выводы? Color legend: black = Requires dark blue = Requisite dark grey = Wants red = Conflicts green = After

kin63camapa ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.