小编Bru*_*sky的帖子

如何将参数传递给 Linux 内核 `init=` bootparam?

更新:

我已经成功地创建了一个非常简单的演示,使用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=参数也不是一种选择。

  1. 如果我在这里错了,请纠正我。

我已阅读有关此事的 Linux 内核文档。它说:

内核将内核命令行中的参数解析为--; 如果它不能识别一个参数并且它不包含 a .,则该参数将传递给 init: 参数并=进入 init 的环境,其他参数作为命令行参数传递给 init。之后的所有内容都--作为参数传递给 init。

...

init=    [KNL]
         Format: <full_path> …
Run Code Online (Sandbox Code Playgroud)

kernel init linux-kernel

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

init ×1

kernel ×1

linux-kernel ×1