Это относится к Arch Linux (и, возможно, другим дистрибутивам, использующим systemd
). Я хочу смонтировать раздел TrueCrypt при загрузке. Со старым sysvinit
это было довольно просто с помощью скрипта, который вызывал rc.local
.
Я добрался до своего текущего, похитив ветку форума Arch . Есть еще один поток, в котором этот поток systemd-devel рассматривается как «имеющий решение», однако для меня неясно, чем он является на самом деле, и у ОП есть последнее сообщение о том, что он не смог достичь своей цели.
Судя по всему, этот человек делает это, но искал способ отключить сообщения непрерывной загрузки, пока он вводит пароль. Я также разместил там сообщение с просьбой опубликовать его .service
файл.
При поиске довольно часто люди отмечают, что они добились успеха или что это возможно, но не уточняют, каким именно было решение.
Я до сих пор могу разблокировать раздел из командной строки через systemd
службу (что, в свою очередь, дает мне возможность автоматически отключать его при завершении работы / перезагрузке), но я должен сделать это вручную после входа в систему. I ' Мне очень хотелось, чтобы процесс загрузки приостановился и попросил у меня пароль.
Вот мой текущий сценарий:
[Unit]
Description=Truecrypt Setup for vault
#DefaultDependencies=no
#Conflicts=umount.target
#Before=umount.target
#After=systemd-readahead-collect.service systemd-readahead-replay.service
#After=cryptsetup.target
[Service]
Type=oneshot
RemainAfterExit=yes
#StandardInput=tty-force
ExecStart=/bin/sh -c '/usr/bin/truecrypt -t --protect-hidden=no -k "" --filesystem=none --slot=1 -p `systemd-ask-password "Enter password for truecrypt volume: "` /dev/sda4'
ExecStop=/usr/bin/truecrypt --filesystem=none -d /dev/sda4
[Install]
WantedBy=multi-user.target
Я оставил комментированный материал [Unit]
, так как в какой-то момент натолкнулся на предложения, что он должен быть там, но у меня были проблемы с этим. Вышеуказанное работает нормально после загрузки / входа в систему ... только не во время.
источник
sudo systemctl start truecrypt-vault
, введитеsu
пароль, введите пароль тома TC, а затемstartx
. Конечно, я мог бы получить запрос пароля во время загрузки, чтобы избежать дополнительных шагов после входа в систему?plymouth
любая парольная подсказка на консоли, вероятно, будет потеряна в службах, начинающихся параллельно.startx
вручную. Нет менеджера входа. Но да, я делать нужно остановить загрузочные сообщения в то время как я ввожу текст, в противном случае это будет просто исчезнуть с экрана.systemd
есть агент, который может запросить пароль, так что вы можете посмотреть в этом направлении.Ответы:
ExecStart=
systemd-ask-password <PROMPT>
, прочитайте пароль из его стандартного вывода и отправьте его в truecrypt любым необходимым способом.exec
truecrypt с конца вашего скрипта, чтобы не оставить лишний процесс bashЭто заставит systemd запрашивать пароль немедленно (если вы запускаете apache с помощью systemctl) или с помощью одного из так называемых агентов (есть стандартные, которые запрашивают пароли с помощью wall или непосредственно на консоли во время загрузки системы). Это лучшее, что вы можете сделать, чтобы оставаться послушным.
источник
Я нашел этот пост в Unix StackExchange: rc.local с read не будет отображать нажатия клавиш.
Я думаю, вы могли бы попробовать используемое решение
источник