Chroot

關機時返回 initramfs

  • July 10, 2015

我有自己的 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 無關,但與讓您執行關閉操作或其他操作的原理相同。

我認為沒有標準的解決方案,因為在關機時很少需要做任何事情。

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