我已经成功地创建了一个非常简单的演示,使用init=bootparam 来指定应该使用自定义二进制文件(用 golang 编写并编译)来代替标准的 init。该项目中的二进制文件是为 Raspberry Pi 的 ARM 处理器编译的,但源代码应该为任何平台编译。
我已经成功地放入init=/bin/bash了我的bootparams并在启动时获得了一个 root shell。现在我想使用 bootparams 来运行“首次启动”安装脚本。
我知道可以提供很多替代方案。如果您愿意,请将这些作为对问题的评论。但是,我不能使用它们;这个问题与他们无关;它们不是这个问题的答案。所以,请不要发布替代方案作为答案。* 这对来这里问这个问题的人没有帮助。
init="/bin/bash -c 'mount /dev/mmcblk0p1 /boot; date > /boot/test.txt'"init='/bin/bash -c "mount /dev/mmcblk0p1 /boot; date > /boot/test.txt"'init="/bin/bash"init='/bin/bash'所以我假设即使引用你的init=参数也不是一种选择。
我已阅读有关此事的 Linux 内核文档。它说:
内核将内核命令行中的参数解析为
--; 如果它不能识别一个参数并且它不包含 a.,则该参数将传递给 init: 参数并=进入 init 的环境,其他参数作为命令行参数传递给 init。之后的所有内容都--作为参数传递给 init。...
Run Code Online (Sandbox Code Playgroud)init= [KNL] Format: <full_path> …