![如何在/未挂载时强制执行脚本?](https://linux22.com/image/124460/%E5%A6%82%E4%BD%95%E5%9C%A8%2F%E6%9C%AA%E6%8C%82%E8%BD%BD%E6%97%B6%E5%BC%BA%E5%88%B6%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我已经把一个 Linux 嵌入式设备变砖了。
我对此进行了实验,并将自己的路径添加到/etc/ld.so.conf
。libc
路径中包含的 I 与此特定设备不兼容,因此我失去了对它的 ssh 访问权限,当然它也无法再启动。
我可以进入某种下载模式,在该模式下我可以将引导加载程序、内核、dtb 和 initramfs 加载到内存中。然后我可以告诉处理器跳转到内存中的某个地址,并启动系统。
这并不能解决问题,因为一旦root
从 initramfs 切换到设备的闪存,就会使用错误的库,设备就会停止工作。
我的计划是向 initramfs 添加一个自定义脚本,用于安装闪存、擦除/etc/ld.so.conf
和/etc/ld.so.cache
.我不在乎设备是否无法启动,一旦文件被清空并且设备重新启动,它就应该回退到使用标准库。然后我可以通过 ssh 连接并清理混乱。
我无法理解应该在 initramfs 中的何处注入修复程序,所以问题是:
我应该在哪里插入几行 bash 以便它们在启动时、/
安装之前执行?
答案1
/init
将 shell 脚本代码添加到映像中的文件中initramfs
。
不要使用太花哨的东西——/bin/sh
不会bash
,但很可能会busybox
。
What is initramfs?
阅读以in开头的部分这文档。