好的,我有一个简单的问题:我有一张 Live CD,我希望在计算机重新启动或停止时弹出 CD。
执行后/usr/bin/eject -m
CD 弹出就好了...问题是,正如您所料,这会导致操作系统崩溃,因为它现在无法读取任何文件。所以重启永远不会发生,因为/sbin/reboot
无法访问。 (我尝试reboot --help > /dev/null
在重新启动之前执行,但仍有其他文件仍然无法读取......)
总之,看来我需要使弹出成为最后一件事那个会发生。看来这systemd
就是我需要玩的小狗...但我确实浪费了小时我一生都在戳它、戳它,无论我做什么,它在任何情况下都永远不会真正弹出 CD。我不知道为什么。我尝试了十几种不同的调用方式eject
,但什么也没发生。
谁能告诉我最简单的跑步方法eject
? (我想之后umount.target
才是明智的......)
答案1
最终我的同事找到了以下文章:
http://lists.freedesktop.org/archives/systemd-devel/2012-September/006573.html
总之,我创建了一个名为的文件,/lib/systemd/system/eject.service
其中包含
[Unit]
Description=Eject the DVD
Before=final.target
After=shutdown.target
DefaultDependencies=no
[Service]
Type=oneshot
ExecStart=/usr/bin/eject -m
StandardInput=tty-force
StandardOutput=inherit
StandardError=inherit
[Install]
WantedBy=shutdown.target
我还必须跑systemctl enable eject.service
才能做到这一点做任何事物。但现在systemd
在关机前弹出 CD,正如我所希望的那样。
...不幸的是,当操作系统无法找到弹出 CD 的其余文件时,它仍然会出现段错误。我尝试调整上面的文件,这样我们就有了After=unmount.target
,你会认为卸载文件系统后运行脚本。但不,它仍然存在段错误。
看来我必须弄清楚如何在启动时将 Live CD 映像复制到 RAM 中 - 但这完全是另一个问题......
答案2
以下内容可能对您有帮助:
在 /etc/init.d/halt.local 添加弹出命令
您还可以查看 /etc/init.d/sculpture 模板并自定义它以添加一些输出,例如系统关闭、按任意键弹出 cdrom 等。
查看 /etc/init.d 中链接到运行级别目录 /etc/rc0.d 的脚本(暂停)。
答案3
ubuntu可以用eject -m; reboot -f