在安裝真正的檔案系統之前,如何在啟動時保存環境變數?
我知道/etc/environment
但在 initramfs 中該文件還無法存取。我還想過編寫一個文件來存儲該值,但是當該文件在系統上存在時,它會在安裝真實文件系統後被覆蓋
Ps:我只想儲存變數以供以後使用,而不是在啟動時讀取它
回答後編輯
大約 :
如果您尚未將該模組包含在核心映像中
insmod /path/to/mod.ko
否則直接
echo "env_var=value" > /proc/name_of_your_process
其中是模組name_of_your_process
內部給出的名稱(執行時)__init
entry = proc_create("name_of_your_process",0777,NULL,&my_fops);
然後在腳本的啟動過程中
cat /proc/name_of_your_process
>> env_var=value
rmmod mod.ko
答案1
好吧,常規環境繼承(只需導出它......)在理論上是可行的,但是......問題是,無論你的初始化檔案系統啟動可能會故意清理環境,因為通常這樣做是為了確保沒有發生任何奇怪的情況。不檢查環境變數可能會帶來安全隱憂。
我知道
/etc/environment
但在 initramfs 中該文件還無法存取。
有趣的部分是關於初始化檔案系統就是你可以做任何你想做的事。唯一的限制是你的想像。
您完全可以使該文件可存取。掛載、修改、卸載。或者,如果您使用的是傳統檔案系統 - 沒有校驗和 - 您甚至可以修改它沒有安裝任何東西(或至少不在讀寫模式)。 GRUB 對grubenv
.
如果你不想弄亂檔案系統或物理存儲,你可以設定一個 ram 磁碟或 tmpfs 或循環裝置或... initramfs 有無數種方法可以留下一些東西(你通常必須製作一個努力清理)。
答案2
答案3
這很簡單。看一下 fstab。然後安裝根設備並將變數寫入已安裝的根設備上的檔案中。我從 kdump 學到了這一點。