在安装真正的文件系统之前,如何在启动时保存环境变量?
我知道/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 学到了这一点。