这与 Arch Linux(或许还有其他使用 的发行版)相关systemd
。我想在启动时安装 TrueCrypt 分区。对于旧版本sysvinit
,通过 . 调用的脚本非常简单rc.local
。
我通过劫持了当前的Arch 论坛主题。还有另一个线在哪里这个系统开发线程被谈论为“拥有解决方案”,但我不清楚它实际上是什么,并且OP在最后一篇文章中指出他无法实现他的目标。
从它的外观来看这个人正在这样做,但正在寻找一种方法来在输入密码时关闭连续启动消息。我也在那里发帖要求他发布他的实际.service
文件。
在大量搜索中,人们提到他们已经成功或者这是可能的,但没有具体说明解决方案是什么。
我尽可能通过服务从命令行解锁分区systemd
(这反过来又使我能够在关机/重新启动时自动卸载它),但登录后我必须手动执行此操作。我'我真的很喜欢启动过程暂停并询问我密码。
这是我当前的脚本:
[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]
,因为在某些时候我遇到了应该将其放在那里的建议,但我遇到了问题。上面的内容在启动/登录后似乎工作得很好......只是在期间不行。
答案1
- 编写一个包装脚本并将其放入
ExecStart=
- 从包装器脚本中,使用
systemd-ask-password <PROMPT>
,从其标准输出读取密码并以任何需要的方式将其提供给 truecrypt - 不要忘记
exec
在脚本末尾进行 truecrypt,以免留下额外的 bash 进程
这将使 systemd 立即查询密码(如果您使用 systemctl 启动 apache)或使用所谓的代理之一(默认代理会在系统启动期间使用 wall 或直接在控制台上询问密码)。这是您保持合规性所能做的最好的事情。
答案2
我在 Unix StackExchange 上找到了这篇文章:
带有 read 的 rc.local 不会回显击键
我想你可以尝试使用的解决方案