在我的平台上,u-boot环境变量总是可以修改的。目前,我正在将
force_ro
的值更改为“1”,这会将权限模式设置为只读。此更改反映在 lsblk
命令的输出中。但是,即使重新启动设备后,我仍然可以将值写入启动分区,并且更改仍然存在。
以下是我的测试结果:
$ cat /sys/block/mmcblk0boot1/force_ro
1
$ fw_setenv primary 2
$ fw_printenv primary
2
以下是有关我的平台的一些详细信息:
fw_setenv
和 fw_printenv
软件包版本:libubootenv_0.3.2硬件细节:
任何人都可以建议一个解决方案,根据
force_ro
的值使我的启动分区只读吗?
我检查了所有的u-boot配置,尝试了多次测试
此问题的原因是 libubootenv 提交:https://github.com/sbabic/libubootenv/commit/92949816720d7af2ac722016e7a5b9a85ff141bc。它绕过了force_ro保护来写入。 因此,对于我的平台,我将编辑 libubootenv 的源代码
/dev/mmcblk0boot1
上,作为 [dd if=/xx/<uboot>.img of=/dev/mmcblk0boot1 conv=notrunc seek=xx bs=1k
]cat /etc/fw_env.config
的条目为 /dev/mmcblk0boot1 xx xx
openat(AT_FDCWD, "/dev/mmcblk0boot1",enter code here
无论如何,问题的根本原因已经找到并解决了。
谢谢