init在 bootint 过程中,初始 ramdisk 中有一个脚本。在最后一次操作中,它说:
# Chain to real filesystem
exec run-init ${rootmnt} ${init} "$@" ${recovery:+--startup-event=recovery} <${rootmnt}/dev/console >${rootmnt}/dev/console 2>&1
panic "Could not execute run-init."
Run Code Online (Sandbox Code Playgroud)
我在ramdisk内容中搜索所有脚本,找不到任何类似的文件名或函数名。run-init实际上是什么?
run-init是一个二进制可执行文件,它位于 /usr/lib/klibc/bin/run-init和您的 initramfs 中,由klibc-utilsUbuntu 中的包提供。它不是一个脚本,所以你不能直接看里面,你可以通过运行apt source klibc-utils或浏览上游存储库来查看它的源代码https://git.kernel.org/cgit/libs/klibc/klibc.git .
所以 main 函数在run-init.c 中,但它只是run_init函数的包装器,它位于runinitlib.c 中
run_init 做了很多工作:
我相信,由于依赖关系,通过脚本完成所有这些工作会非常复杂,但是二进制可执行文件可以非常轻松地完成。
| 归档时间: |
|
| 查看次数: |
5266 次 |
| 最近记录: |