Environment is not overwritten at barebox update

AD ad.ensi at netc.fr
Fri Jan 15 07:12:21 EST 2021


Dear Ahmad,

thanks for your help.

On 15/01/2021 11:35, Ahmad Fatoum wrote:
>
> On 15.01.21 11:22, AD wrote:
>> Dear all,
>>
>> I've compiled an image and try to get my environment scripts on my target but I can't get them.
>>
>> Here a snippet of my DTS :
>>
>> / {
>>          model = "Main Board";
>>
>>          compatible = "fsl,imx6dl";
>>      chosen {
>>              stdout-path = &uart3;
>>      };
>>
>>      environment at 0 {
>>          compatible = "barebox,environment";
>>          device-path = &usdhc3, "partname:barebox-environment";
>>      };
>> };
>>
>> &usdhc3 {
>>      partition at 0 {
>>          label = "barebox";
>>          reg = <0x0 0x80000>;
>>      };
>>      partition at 1 {
>>          label = "barebox-environment";
>>          reg = <0x80000 0x80000>;
>>      };
>>
>>          ...
>>
>>          # Many other partitions
>>
>>          ...
>>
>> };
>>
>>
>> Here a snippet of my .config :
>>
>> CONFIG_DEFAULT_ENVIRONMENT=y
>> # CONFIG_DEFAULT_COMPRESSION_GZIP is not set
>> # CONFIG_DEFAULT_COMPRESSION_LZO is not set
>> # CONFIG_DEFAULT_COMPRESSION_LZ4 is not set
>> # CONFIG_DEFAULT_COMPRESSION_XZ is not set
>> CONFIG_DEFAULT_COMPRESSION_NONE=y
>> CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y
>> CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW_MENU=y
>> CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW_DFU=y
>> CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/al-mx6/env/"
>>
>> And here the content of : "arch/arm/boards/al-mx6/env/"
>>
>> ad at debian:~/workspace/barebox/chrysalis/arch/arm/boards/al-mx6/env$ tree
>> .
>> ├── bin
>> │   └── init
>> ├── boot
>> │   ├── al
>> │   ├── tftp
>> │   └── usb
>> ├── config
>> └── data
>>      ├── ansi-colors
>>
>>
>> Now, on the target, I'm upgrading barebox using a simple : cp barebox.img /dev/mmc2
>>
>>
>> With the compiled date and hour from the Barebox logs at starting, I can see that the "new" barebox is really the one that I juste compiled.
>>
>> But I don't have my env correctly updated :
>>
>> barebox at Main Board:/env ls -l
>> drwxrwxrwx              0 .
>> d---------              0 ..
>> drwxrwxrwx              0 bin
>> -rwxrwxrwx             25 config
>> drwxrwxrwx              0 data
>> drwxrwxrwx              0 init
>> drwxrwxrwx              0 menu
>> drwxrwxrwx              0 network
>> drwxrwxrwx              0 nv
>>
>>
>> My config file is not the one that I compiled, and the boot/ directory has not been updated...
>> But the newly created files are always updated.
>> Only the already existing ones are not overwritten.
>> Not sure of that, but it seems to be different between several boards...
>>
>>
>> I am missing something?
>>
>>
>> Here the starting logs :
>>
>>
>> barebox 2019.07.0-06872-g2c7ca71f9-dirty #2 Tue Dec 8 18:41:29 CET 2020
>>
>>
>> Board: Main Board
>> detected i.MX6 DualLite revision 1.4
>> i.MX reset reason POR (SRSR: 0x00000001)
>> i.MX6 DualLite unique ID: f21fd23e181bc1d4
>> mdio_bus: miibus0: probed
>> imx-usb 2184200.usb at 02184200.of: USB EHCI 1.00
>> imx-esdhc 2194000.usdhc at 02194000.of: registered as mmc1
>> imx-esdhc 2198000.usdhc at 02198000.of: registered as mmc2
>> imx-ipuv3 2400000.ipu at 02400000.of: IPUv3H probed
>> caam 2100000.caam at 2100000.of: Instantiated RNG4 SH0
>> caam 2100000.caam at 2100000.of: Instantiated RNG4 SH1
>> caam 2100000.caam at 2100000.of: registering rng-caam
>> netconsole: registered as netconsole-1
>> GPR1 = 48600005
>> malloc space: 0x3fdf6540 -> 0x4fdf653f (size 256 MiB)
>> mmc2: detected MMC card version 5.0
>> mmc2: registered mmc2.boot0
>> mmc2: registered mmc2.boot1
>> mmc2: registered mmc2
>> running /env/bin/init...
>>
>> Hit m for menu or any other key to stop autoboot:
>> type exit to get to the menu
>> barebox at Chrysalis Main Board:/
>>
>>
>> Thanks for everything,
> The barebox mutable environment is meant as development
> feature, so you can override the built-in environment.
>
> You'll probably want to run saveenv -z to override this
> and force use of the built-in environment.

If I understand well, the issue is not that my built-in env is not 
"updated" on the target, but that it is not loaded at startup.
And it is not loaded, because I already have a modified environment, on 
which I did a "saveenv" previously ; as a consequence, at startup, this 
"local dev env" is loaded instead of the built-in one?
I tried a saveenv -z on a modified env, and it restores properly the 
built-in env at the next startup.

On some targets, I don't have the issue.
Is it possible that on those targets, I never did a saveenv which would 
have created a "local" env ; as a consequence, every time I update 
Barebox, the built-in env is always used?

As a conclusion, I guess that updating barebox with "cp ${image} 
/dev/mmc2" and "saveenv -z" instead of only using the first command 
would solve this issue.


In any case, many thanks for helping me to understand this mechanism.

Best Regards,
AD





More information about the barebox mailing list