如何根据 menuconfig 标志修改构建后脚本中的文件?

phy*_*ash 1 login buildroot post-build

我需要在Buildroot编译之后和在创建 rootfs 之前找到一种方法来修改/编辑给定文件,具体取决于menuconfig标志选择。我可以在Buildroot文档中找到可以通过使用构建后脚本来做到这一点。

我的问题是,只有在menuconfig 中选择了某些内容时,我才会执行脚本操作,例如:

(x) Enable my_login_system;
Run Code Online (Sandbox Code Playgroud)

如果我选择my_login_system,那么我需要根据以下内容更改nsswitch.conf文件:

passwd:        my_login files
Run Code Online (Sandbox Code Playgroud)

如果我没有在 menuconfig 中选择“my_login_system”,那么 nsswitch.conf 应该是:

passwd:        files my_login
Run Code Online (Sandbox Code Playgroud)

所以,我的主要问题是如何知道在构建后脚本中是否选择了“my_login_system”。

Luc*_*oli 5

当执行构建后脚本时,它可以访问BR2_CONFIG环境变量,该变量保存 Buildroot.config文件的路径。您的脚本可以解析该文件并采取相应的行动。

因此,您可能会遇到以下情况:

if grep -q ^BR2_MY_LOGIN_SYSTEM=y ${BR2_CONFIG}
then
    # do some tweaks
else
    # do other tweaks
fi
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用BR2_ROOTFS_POST_SCRIPT_ARGS配置变量将任意命令行参数(而不是环境变量)传递给构建后脚本。

这两种可能性都记录在 Buildroot 手册的自定义生成的目标文件系统部分