我正在研究用於Linux的C++ initramfs的init
。該腳本用於解鎖帶有加密驅動器的DM-Crypt,並將LVM驅動器設置爲可用。在Linux系統()調用的問題
由於我不想重新實現cryptsetup
和gpg
的功能,我正在使用系統調用來調用可執行文件。使用系統調用來調用gpg可以正常工作,如果我已經完全啓動了系統(我已經有了一個基於initramfs的bash腳本,在啓動時可以正常工作,並且我使用grub編輯命令行以使用舊的initramfs)。但是,在initramfs中它甚至不會像調用它一樣。即使命令如system("echo BLAH");
失敗。
那麼,有沒有人有任何投入?
編輯:所以我想出了什麼導致了我的錯誤。我沒有線索爲什麼它會導致錯誤,但我發現它。
爲了讓熱插拔,我需要寫/sbin/mdev
到/proc/sys/kernel/hotplug
......不過,我結束了周圍的參數開關(上的功能我寫我自己不會少),所以我在寫/proc/sys/kernel/hotplug
到/sbin/mdev
。
我不知道爲什麼會導致問題,但它確實如此。
非常感謝您的幫助。您實際上回答了一個問題,我沒有問過爲什麼它在manpages中說的地獄使用'exec()'系列函數而不是'system()'時,他們有非常不同的效果。如果你不介意,你有一個有用的管道輸出鏈接? (無論哪種方式,我確實訂購了你建議的書,所以我最終會得到一個很好的資源:)) – Thomas 2010-06-18 01:50:10
史蒂文斯在第一版的第14.2節中介紹了它。在第二版中,它轉到了第15.2節。 – 2010-06-18 05:20:48
謝謝。我一定會去找的。 – Thomas 2010-06-19 02:40:32