关闭时弹出CD


12

好的,所以我有一个简单的问题:我有一个实时CD,并且我希望CD在计算机重新引导或停止时弹出。

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

总而言之,看来我需要使弹出成为最后发生的事情。看来这systemd是我需要和它玩耍的小狗……但是我确实浪费了我一生的时间在戳戳和刺戳它,无论我做什么,在任何情况下,它永远不会真正弹出CD。而且我不知道为什么。我尝试了十二种不同的调用方式eject,但是没有任何反应。

有人可以告诉我最简单的跑步方法eject吗?(我想以后umount.target会很明智的...)


我认为您的计算机上还有另一个操作系统,或者为什么还要在重启时弹出CD?如果是这个原因,那么设置启动菜单可以选择从CD还是从磁盘启动,可能会做得更好。
伊曼纽尔·伯格

卸载CD后,是否还剩下initramfs的内容?如果有eject,那你还好吗?
Ulrich Schwarz 2012年

坚持,稍等。真奇怪 Linux Mint,我认为Ubuntu默认情况下会这样做。
Linuxios 2012年

Answers:


4

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

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您会认为该文件在卸载文件系统后运行脚本。但是不,它仍然存在段错误。

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


1

以下内容可能对您有帮助:

  • 在/etc/init.d/halt.local中添加弹出命令

  • 您还可以查看/etc/init.d/skeleton模板并对其进行自定义,以添加一些输出,例如系统关闭,按任意键弹出cdrom等。

  • 在/etc/init.d中检出链接到运行级别目录/etc/rc0.d中的脚本(暂停)。


0

检出/etc/init.d在运行级别目录/etc/rc0.d(停止)和/etc/rc6.d(重新引导)中链接到的脚本。例如,我放入了eject命令/etc/init.d/reboot,它运行良好。

但是,我不在Live CD上,因此无法测试哪种方法可行。

如果您仔细考虑一下,就很难想象要放入脚本或什至是已编译的二进制文件。即使是二进制文件也需要一些分配/重新分配的开销,并且一旦弹出CD,就完成了。而是应该像一个标志和一个指向机器指令的指针一样,存储在一些超级持久性存储器中。

也许只运行命令并故意使操作系统崩溃更容易,但是当几乎所有东西都离线时这样做就可以了,因此,使剩余的系统崩溃也没关系。

(编辑)另一种想法:您能以某种方式对文件系统进行分区,为弹出命令创建一个分区,然后重新启动,卸载所有其他分区,然后运行该命令吗?(但是,然后可能必须告诉fsck每次都不要抱怨,弹出分区没有正确卸载。)或者,您可以将其放在USB记忆棒上吗?(这是一个非常有趣的问题;如果您解决了,请告诉我们!)

(编辑2)关于合并弹出和重新启动,那么您得到一个二进制文件,它被加载到内存中,弹出弹出CD,但不必从任何文件系统加载重新启动,它已经在主存储器中了吗?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.