Chroot
關機時返回 initramfs
我有自己的 initramfs 執行自己的初始化腳本。做了一些事情后,最後呼叫switch_root,執行系統的init腳本,掛載在/mnt中。
現在我想在 Linux 關閉時 回到 initramfs 的 init 腳本(所以來自 linux 的 init 腳本退出)
但是因為我正在呼叫
exec switch_root /mnt /blah/init
,所以腳本會在 Linux 關閉時終止。但是我想在那之後在我的 initramfs 中做一些事情,這是不可能的。我能做的是
chroot /mnt
代替switch_root ...
,所以當 Linux 關閉時,我會回到 init 腳本中。但這有一個令人討厭的副作用,例如 netctl 之類的應用程序將拒絕工作,因為它們是從 chrooted 系統內部呼叫的。所以我需要的是一種
switch_root
進入系統並最終回到 initramfs 的方法。
您可以
pivot_root
代替switch_root
(這會刪除所有內容!)。如果您的 init 系統不會抱怨 not being
pid 1
,那麼您可能已經完成了。另一種解決方案是讓你的init系統變得足夠好
pivot_root
到一個……你怎麼稱呼它?關閉ramfs?這與 initramfs 無關,但與讓您執行關閉操作或其他操作的原理相同。我認為沒有標準的解決方案,因為在關機時很少需要做任何事情。