我一直在试图了解启动过程,但只有一件事让我无法理解..
一旦启动了 Linux 内核并安装了根文件系统 (/),就可以运行程序,并且可以集成更多内核模块以提供附加功能。要挂载根文件系统,必须满足某些条件。内核需要相应的驱动来访问根文件系统所在的设备(尤其是SCSI驱动)。内核还必须包含读取文件系统所需的代码(ext2、reiserfs、romfs 等)。也可以想象,根文件系统已经被加密了。在这种情况下,挂载文件系统需要密码。
初始 ramdisk(也称为 initdisk 或 initrd)正好解决了上述问题。Linux 内核提供了一个选项,在挂载实际的根文件系统之前,将一个小文件系统加载到 RAM 磁盘并在那里运行程序。initrd 的加载由引导加载程序(GRUB、LILO 等)处理。引导加载程序只需要 BIOS 例程即可从引导介质加载数据。如果引导加载程序能够加载内核,它也可以加载初始 ramdisk。不需要特殊的驱动程序。
如果 /boot 不是不同的分区,而是存在于 / 分区中,那么引导加载程序是否应该需要 SCSI 驱动程序来访问“initrd”映像和内核映像?如果您可以直接访问图像,那么我们究竟为什么需要 SCSI 驱动程序?
由于 NTFS 是 Microsoft 创建的专有文件系统,ntfs-3g 开发人员如何在不参考 NTFS 源代码的情况下设法创建 NTFS 驱动程序的开源版本?或者在这方面与微软有某种协议吗??