无论force_ro值如何,u-boot环境写入始终启用

问题描述 投票:0回答:1

在我的平台上,u-boot环境变量总是可以修改的。目前,我正在将

force_ro
的值更改为“1”,这会将权限模式设置为只读。此更改反映在
lsblk
命令的输出中。但是,即使重新启动设备后,我仍然可以将值写入启动分区,并且更改仍然存在。

以下是我的测试结果:

$ cat /sys/block/mmcblk0boot1/force_ro
1
$ fw_setenv primary 2
$ fw_printenv primary
2

以下是有关我的平台的一些详细信息:

  • 交叉编译器:Yocto EL40(Kirkstone)
  • 引导加载程序:u-boot
  • U-boot 来源:git://github.com/nxp-imx/uboot-imx.git;protocol=https
  • U-boot源分支:lf_v2022.04
  • Yocto 中的
  • fw_setenv
    fw_printenv
    软件包版本:libubootenv_0.3.2

硬件细节:

  • 系统架构:arm
  • CPU:armv8
  • SoC:imx8m

任何人都可以建议一个解决方案,根据

force_ro
的值使我的启动分区只读吗?

我检查了所有的u-boot配置,尝试了多次测试

u-boot nxp-microcontroller yocto-kirkstone
1个回答
0
投票

此问题的原因是 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
  • fw_setenv 的 strac 命令显示为
    openat(AT_FDCWD, "/dev/mmcblk0boot1",enter code here

无论如何,问题的根本原因已经找到并解决了。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.