系统开机BIOS为加载硬盘驱动为什么能读取MBR呢?高手能帮忙解惑下,感谢!

解决方案 »

  1.   

    .读取主引导记录(MBR)。当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H 处。
      

  2.   

      
     加载MBR,那就是设备已经识别硬盘了,为什么还要加载硬盘的驱动呢?
      

  3.   

    一般(非UEFI方式)系统启动过程是按照 ,
    BIOS-> BootLoader(GRUB,LILO,uboot等)->KERNEL->initramfs->rootfs,这个流程进行的
    BIOS,BootLoader,KERNEL,各个部分功能相对独立,也就是说,同一个设备在BIOS中能用,Bootloader中如果没有支持的代码BootLoader就不能用,BootLoader和KERNEL也是同样的关系,KERNEL之后的阶段CPU都基本都处在非特权模式下利用KERNEL提供的系统接口运行程序在BIOS自检完成后读取磁盘第一个扇区数据(包含启动代码和分区表)到0:7c00H并跳转执行到这个地址,然后由启动代码接管系统,启动代码很小,功能有限,一般负责继续加载其他引导代码、解析分区表,查找支持启动的系统分区,加载系统KERNEL,按照配置参数启动系统KERNEL,内核中存在预先编译到内核的一些驱动程序,因此在内核初始化系统时,会逐步启动这些驱动,当驱动初始化完成后,根据驱动支持的设备查找initramfs或rootfs,
    如果查找不到,就会启动失败。
    initramfs是为了避免编进kernel的驱动过多体积过大而引入的,它会处理一些驱动insmod工作完成一些在进入rootfs执行的准备工作