使服务在重新启动后不能自动启动(因为它们需要访问encryption的分区)

我使用Ubuntu Server 10.04。 我或多或less只想在重启后通过SSH访问服务器。 然后,我将自己login并挂载encryption分区,然后启动使用它的服务。

我将如何去设置类似的东西呢?

(我的第一个想法是除了/ boot之外的所有东西都放在一个encryption的LVM中,但是我从来没有通过SSHlogin并安装LVM来工作,Initramfs对我来说太复杂了,否则我认为这将是最好的解决scheme。)

服务通过各种/etc/rc.d/文件夹中的条目开始(它们从rc1.d到rc6.d)。 您将需要确定您不想启动的服务,然后将Sxxservicename链接(xx是介于01和99之间的数字)更改为Kxxservicename。 请注意,当相关软件包升级时,这些更改可能会被覆盖。 如果你想保留更改,我build议在/etc/init.d/servicename中更改启动/停止级别的定义(每个服务在该文件夹中都有一个脚本,实际执行启动/停止,并且它还包含默认服务应该启动和停止的运行级别的设置)。

然后,只需在/ etc / fstab中更改encryption分区的行以包含“noauto”选项,这将防止在启动时挂载它。 您仍然可以使用mount命令手动挂载它。

警告 :您必须确保启动过程可以在encryption分区上没有任何数据的情况下完成。 否则,你正在为自己挖掘一个大洞(你需要一个现场CD来摆脱它)。

您的发行版使用新贵来pipe理服务,所以您需要同时关注新贵服务和“旧式”(系统V)服务。

对于需要encryption文件系统的所有暴发户服务,在/etc/init.d编辑相应的文件,并改变start on foo上的start on (foo and encrypted-filesystems)stop on bar stop on (bar or runlevel [0126])

对于所有需要encryption文件系统的系统V服务,请将符号链接/etc/rc2.d/S??foo重命名为/etc/rc2.d/K50foo

安装encryption的文件系统后,运行这些命令

 initctl emit encrypted-filesystems telinit 3 

如果你想在不重新启动的情况下卸载encryption的文件系统,我认为telinit 2将停止所有受影响的服务与我提出的计划。

我build议使用update-rc.d(检查手册页)来禁用运行级别2的启动,因为它应该总是“做正确的事情”。

在runlevel 2中join一些东西来警示你也是个好主意,例如电子邮件,所以在意外的重新启动之后它不会被忽视。

然后ssh进入,安装crypt卷和init 3。

[确认软件包更新后仍然可以]