bootloader 阶段使用 BIOS 功能,所有的 SATA 默认都有一个简单的 BIOS 读写兼容功能提供支持。也就是说开了 AHCI ,BIOS 依然会提供兼容模式。不过现在的 *** 作系统在内核启动后就会绕过 BIOS 直接 *** 作硬件。这个时候如果开启了 AHCI 模式,那么 IDE 兼容部分的硬件接口模拟就没了,不过 BIOS 自己提供的读写功能虽然继续提供,但系统已然不用了。所以 bootloader 可以读写硬盘并不代表 linux 内核可以读写硬盘。
linux 的驱动有两种存放状态,编入内核或者编成模块。
initrd 里面的就是模块,会被 bootloader 在读取内核时一起读取进入内存。一般内核模块只在需要时载入,可以节省内核的运行体积。但现在新版 linux 内核的 sata 驱动已经高度集成了,所以很多发行版的 SATA 驱动都直接进入内核不需要模块载入方式了。当然这要看系统的设计,有的系统既然 initrd 必然会提供,那么编入内核确实没意义。不过需要另外找驱动的硬件,都是模块方式存在,他们在系统启动时必须存在于 initrd 里面,不然内核自己没法集成,也不能从硬盘里面读取(没驱动没法读盘,没法读盘就没法读驱动)。
BIOS 的 INT13 功能太简单了。限制也特别多,现在都是能不用就不用的。所以这东西现在只有 bootloader 才会用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)