Boot Count Limit
This is enabled by CONFIG_BOOTCOUNT_LIMIT.
This allows to detect multiple failed attempts to boot Linux.
After a power-on reset, the bootcount
variable will be initialized to 1, and
each reboot will increment the value by 1.
If, after a reboot, the new value of bootcount
exceeds the value of
bootlimit
, then instead of the standard boot action (executing the contents
of bootcmd
), an alternate boot action will be performed, and the contents of
altbootcmd
will be executed.
If the variable bootlimit
is not defined in the environment, the Boot Count
Limit feature is disabled. If it is enabled, but altbootcmd
is not defined,
then U-Boot will drop into interactive mode and remain there.
It is the responsibility of some application code (typically a Linux
application) to reset the variable bootcount
to 0 when the system booted
successfully, thus allowing for more boot cycles.
CONFIG_BOOTCOUNT_FS
This adds support for maintaining boot count in a file on a filesystem. Tested filesystems are FAT and EXT. The file to use is defined by:
CONFIG_SYS_BOOTCOUNT_FS_INTERFACE CONFIG_SYS_BOOTCOUNT_FS_DEVPART CONFIG_SYS_BOOTCOUNT_FS_NAME
The format of the file is:
type |
entry |
---|---|
u8 |
magic |
u8 |
version |
u8 |
bootcount |
u8 |
upgrade_available |
To prevent unintended usage of altbootcmd
, the upgrade_available
variable is used.
If upgrade_available
is 0, bootcount
is not saved.
If upgrade_available
is 1, bootcount
is saved.
So a userspace application should take care of setting the upgrade_available
and bootcount
variables to 0, if the system boots successfully.
This also avoids writing the bootcount
information on all reboots.