如何在 / 未挂载时强制执行脚本?

Vla*_*ero 5 boot embedded

我已经砖砌了一个 linux 嵌入式设备。

我正在试验它,并将我自己的路径添加到/etc/ld.so.conf. 该libc包含在我的道路我是不是有这种特殊的设备兼容,所以我失去了SSH访问它,当然它不开机了。

我可以进入某种下载模式,在那里我可以将引导加载程序、内核、dtb 和 initramfs 加载到内存中。然后我可以告诉处理器跳转到内存中的某个地址,并让系统启动。

这并不能解决问题,因为一旦root从 initramfs 切换到设备的闪存,就会使用错误的库并且设备停止工作。

我的计划是向 initramfs 添加一个自定义脚本,用于安装闪存、擦除/etc/ld.so.conf/etc/ld.so.cache. 我不在乎设备是否不启动,一旦文件被清空并且设备重新启动,它应该回退到使用标准库。然后我可以通过 ssh 连接并清理混乱。

我无法理解我应该在 initramfs 中的哪个位置注入我的修复程序,所以问题是:

我应该在哪里插入几行 bash 以便在/安装之前在启动时执行它们?

Mur*_*sen 1

/init将 shell 脚本代码添加到映像中的文件中initramfs

不要使用太花哨的东西——/bin/sh不会bash,但很可能会busybox

阅读本What is initramfs?文档中以 开始的部分。