好的,所以我有一个简单的问题:我有一张 Live CD,我希望在计算机重新启动或停止时弹出 CD。
执行/usr/bin/eject -m
使 CD 弹出就好了...问题是,正如您所料,这会导致操作系统崩溃,因为它现在无法读取任何文件。所以重启永远不会发生,因为/sbin/reboot
无法访问。(我尝试reboot --help > /dev/null
在重新启动前立即执行,但仍有其他文件仍无法读取...)
总之,看来我需要让弹出成为最后发生的事情。所以这似乎systemd
是我需要玩的小狗......但我已经浪费了我生命中的数小时戳和刺激它,无论我做什么,它在任何情况下都永远不会真正弹出CD。我不知道为什么。我尝试了十几种不同的调用方式eject
,但没有任何反应。
谁能告诉我最简单的跑步方式eject
?(我想之后umount.target
会是明智的......)
最终我的同事找到了以下文章:
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 中 - 但这是另一个问题......
归档时间: |
|
查看次数: |
3013 次 |
最近记录: |