Upstart Jobs 和 init.d 脚本无法启动

Upstart Jobs 和 init.d 脚本无法启动

我正在开发一款基于 Ubuntu 的浏览器发行版,该发行版旨在实时运行。安全解决方案的一部分是在关闭时使用 sdmem。sdmem 会清除可用内存,可在 Ubuntu 存储库中的 secure-delete 包中找到。以下脚本中未调用 sdmem。

我曾将此解决方案用于以相同方式设置的另一个项目,所以我知道它有效。但有时在关闭和重新启动其他项目时,我并不总是能获得 sdmem 在擦除时提供的标准输出。(通常 sdmem 会吐出一堆星号。)我已禁用图形 plymouth,以便我可以查找输出。

这是我的脚本信息:

internet@linux-surfer /etc/init.d $ cat dram.sh 
#!/bin/sh

# give this script permissions:
# chmod +x sdmem.sh

# sdmem  will delete  data which may lie still in your memory (RAM) 
# The secure data deletion process of sdmem goes like this:
# *      1 pass with 0x00
# *      5 random passes. /dev/urandom is used for a secure RNG if available.
# *      27 passes with special values defined by Peter Gutmann.
# *      5 random passes. /dev/urandom is used for a secure RNG if available.

sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv

# this script need to be added to shutdown this way:
#sudo cp sdmem.sh /etc/init.d
#sudo ln -s /etc/init.d/sdmem.sh /etc/rc0.d/K11dram.sh
#sudo ln -s /etc/init.d/sdmem.sh /etc/rc6.d/K11dram.sh

权限:

internet@linux-surfer /etc/init.d $ ls dram.sh -l
-rwxr-xr-x 1 internet internet 743 2012-02-18 00:31 dram.sh

新贵脚本:

internet@linux-surfer /etc/init $ cat dram.conf 
start on runlevel [06]

script
    sdmem -fllv
end script
internet@linux-surfer /etc/init $ 

权限:

internet@linux-surfer /etc/init $ ls -l dram.conf 
-rw-r--r-- 1 root root 55 2012-02-18 01:35 dram.conf

答案1

问题是您的脚本将与其余的关机/重启过程发生冲突。

start on runlevel [06]

运行级别事件不会延迟任何事情,因此您需要进行一场比赛..该事件只是一个时间信号,因此只要 /etc/rc0.d/* 中的关闭序列开始运行,您的 sdmem 就会开始运行,并且它们并行运行。

如果你想拖延事情,你有两个选择。要么 a)

task
start on starting rc RUNLEVEL=[06]

这会延迟整个关机过程,直到 sdmem 退出。请注意,这里的“任务”很重要,因为该作业不会阻止其他作业,直到 sdmem 退出。

b)

task
start on some-other-late-hook-event

然后编辑 /etc/rc0.d/* (或 /etc/rc6.d/*)中您想要发出此事件的任何脚本并让它执行

initctl emit some-other-late-hook-event

无论您希望在哪个脚本中调用该调用,它都会阻塞,直到 sdmem 退出。请再次注意“任务”。

相关内容