U-boot登录加入密码验证

U-boot带有一个简单的登录验证功能。在U-boot的代码source/common/main.c中,有三个宏定义:

CONFIG_AUTOBOOT_KEYED        //是开关 
CONFIG_AUTOBOOT_PROMPT       //是打印信息 
CONFIG_AUTOBOOT_DELAY_STR    //是口令 
CONFIG_AUTOBOOT_STOP_STR     //是中断自动启动的按键

那么可以在main.c中加入如下内容:

#define CONFIG_AUTOBOOT_KEYED 1 
#define CONFIG_AUTOBOOT_PROMPT "autoboot in %d seconds", bootdelay
#define CONFIG_AUTOBOOT_DELAY_STR "passwd" 
#define CONFIG_AUTOBOOT_STOP_STR "\x1b"

1行使能KEY功能,第2行打印提示,按ESC中断自动启动,第4行定义的即为密码,第51b即为ESC键的ASCII十六进制值。

需要注意的是,CONFIG_AUTOBOOT_DELAY_STR的所有字符需要在读秒时间内全部发送完成。CONFIG_AUTOBOOT_DELAY_STRCONFIG_AUTOBOOT_STOP_STR是或的关系,读秒时间内只要有一个满足就会中断自启,即只要按ESC键或者输入passwd都会进入命令行。

另外可以使用如下的方式定义多位STOP_STR

#define CONFIG_AUTOBOOT_STOP_STR        "stopgs"
#define CONFIG_AUTOBOOT_STOP_STR        "\x1b\x1b"

1行使用字符串的方式定义STOP_STR,第2行用ASCII的方式定义两个位的STOP_STR,即需要连续按两次ESC键才会中断自启。

参考文章

给U-boot命令行登录加入密码验证

    原文作者:txgcwm
    原文地址: https://segmentfault.com/a/1190000011649102
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞