Shutdown

關機時彈出 CD

  • November 3, 2020

好的,我有一個簡單的問題:我有一張 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

我還必須跑去systemctl enable eject.service讓它真正任何事情。但現在systemd在關機前彈出 CD,完全符合我的要求。

…不幸的是,當它無法找到彈出 CD 的其余文件時,作業系統仍然會出現段錯誤。我嘗試調整上面的文件,這樣我們就有了After=unmount.target你會認為它在文件系統被解除安裝後執行腳本。但是不,它仍然存在段錯誤。

看起來我將不得不弄清楚如何在啟動時將 Live CD 映像複製到 RAM 中 - 但這是另一個問題……

引用自:https://unix.stackexchange.com/questions/56414