关机时弹出 CD

Mat*_*hid 12 shutdown systemd

好的,所以我有一个简单的问题:我有一张 Live CD,我希望在计算机重新启动或停止时弹出 CD。

执行/usr/bin/eject -m使 CD 弹出就好了...问题是,正如您所料,这会导致操作系统崩溃,因为它现在无法读取任何文件。所以重启永远不会发生,因为/sbin/reboot无法访问。(我尝试reboot --help > /dev/null在重新启动前立即执行,但仍有其他文件仍无法读取...)

总之,看来我需要让弹出成为最后发生的事情。所以这似乎systemd是我需要玩的小狗......但我已经浪费了我生命中的数小时戳和刺激它,无论我做什么,它在任何情况下都永远不会真正弹出CD。我不知道为什么。我尝试了十几种不同的调用方式eject,但没有任何反应。

谁能告诉我最简单的跑步方式eject?(我想之后umount.target会是明智的......)

Mat*_*hid 5

最终我的同事找到了以下文章:

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
Run Code Online (Sandbox Code Playgroud)

我还必须跑systemctl enable eject.service才能让它真正任何事情。但是现在systemd在关机前弹出 CD,正如我想要的那样。

...不幸的是,当无法找到弹出 CD 的其余文件时,操作系统仍然会出现段错误。我尝试调整上面的文件,所以我们有After=unmount.target你会认为在卸载文件系统后运行脚本。但是不,它仍然是段错误。

看起来我将不得不弄清楚如何在启动时将 live CD 映像复制到 RAM 中 - 但这是另一个问题......