了解 Linux 中 initramfs 的模块加载:用户空间还是内核空间

了解 Linux 中 initramfs 的模块加载:用户空间还是内核空间

我想更清楚地了解 Linux 启动过程以及initramfs在加载内核模块中的作用。具体来说,我想知道加载的模块initramfs是放在用户空间还是内核空间。

据我所知,initramfs是 Linux 内核启动过程初始阶段使用的临时文件系统。它包含挂载实际根文件系统所需的基本文件和驱动程序

有人能解释一下这些模块是加载到用户空间还是内核空间吗?此外,如果您能简要解释一下启动过程以及在这种情况下从内核空间到用户空间的转换是如何发生的,那将很有帮助

答案1

内核模块被加载到内核空间,因此有“内核模块”一词。(它们是由 initramfs 还是 rootfs 完成并不重要。)

加载最初由用户空间工具(例如udev)完成modprobe,它使用 libkmod 找到必要的模块,然后调用init_module(2)系统调用将其传输到内核空间。

initramfs 是不限但是,它只能加载内核模块;它可以运行任何用户空间工具——当然包括 modprobe/insmod 来加载内核模块,但它可以如果必要的话,包含用户空间守护进程(例如,如果您的 rootfs 在 NTFS 上,则包含 ntfs-3g,如果它是 iSCSI 卷,则包含 iscsid)。

相关内容