雖然編寫一個perl腳本旨在完全自動化虛擬機(XenPv)的設置,但是我遇到了一個小問題,可能很簡單。如何退出perl腳本中的chroot?
使用Perl的chroot function我在客人文件系統上做我的事情,然後我需要回到我最初的真正的根。我該怎麼做?
腳本示例:
`mount $disk_image $mount_point`;
chdir($mount_point);
chroot($mount_point);
#[Do my things...]
#<Exit chroot wanted here>
`umount $mount_point`;
#[Post install things...]
我已經試過退出;但顯然退出整個腳本。
正在尋找退出chroot的方式我發現了一些腳本,它們的目標是退出已經 setup chroot(特權升級)。由於我在這裏做chroot這些方法不適用。
嘗試了一些瘋狂的事情,如:
opendir REAL_ROOT, "/";
chdir($mount_point);
chroot($mount_point);
chdir(*REAL_ROOT);
但沒有去。
UPDATE 幾點考慮:
- 在多個文件中我不能分割的腳本。 (愚蠢的原因,但真的,我不能)
- chroot部分涉及到使用腳本較早收集的大量數據(在chroot之前),強制需要不在chroot中啓動另一個腳本。
- 使用開放,系統或反引號是不好的,我需要運行命令和基於輸出(不是退出代碼,實際輸出)做其他事情。
- chroot之後的步驟取決於chroot內部完成的工作,因此我需要在內部和外部定義或更改所有變量。
- 叉是可能的,但我不知道一個好的方法來正確處理從孩子到孩子的信息傳遞。
我想你需要到餐桌chroot的一部分,等待它的退出。 –