我在基于 QNAP x86 的 NAS 上安装了修改后的 Linux。在 initrd 映像文件中,我注意到有一个 init 脚本/init
和一个指向不同程序(busybox)的符号链接:linuxrc ->/bin/busybox
。
如何找出每次系统启动时运行的init进程是哪一个?
答案1
/linuxrc
是在旧式上推出的初始化程序,/sbin/init
在更新样式的 initrd 上启动,/init
在初始化文件系统。 initrd 和 initramfs 是两种具有相同目的的机制:在 RAM 中安装文件系统,可以从中加载存储驱动程序。 initrd 比较旧,initramfs 是目前推荐的方法。
某些发行版保留了 initramfs 存在之前的设置,并且即使该映像是 initramfs 映像,也将其称为 initrd。因此,您有一个名为 的文件这一事实initrd
并不意味着它会作为一个文件加载。某些发行版(显然包括您的发行版)在 initrd/initramfs 上保留了文件结构,允许在两者上使用相同的目录树。但是,图像文件的格式不同。
要确定您是否有 initrd 或 initramfs,最简单的方法是运行
file /path/to/initrd
如果您有 cpio 存档,那么它就是 initramfs。如果您有 initrd,它就是 <rummage>“Linux 压缩 ROM 文件系统数据”。