系统开机BIOS为加载硬盘驱动为什么能读取MBR呢?高手能帮忙解惑下,感谢!
解决方案 »
- 请教gcc编译临时文件的存储路径问题
- windows下利用freefilesync同步linux下的文件夹
- shell替换xml文件内容
- 请教一下各位大神 AM33x的屏幕怎么调啊,快疯了
- 急贴,安装vim插件!!
- 关于TCP中HTTP包增加包长的解决方法
- linux 系统安装gnuradio 过程在 make test 阶段出现如下错误,请求帮助
- 关于笔记本跑虚拟机的问题
- 求助 cmake编译Dlib库报错
- gcc编译时,指定动态库链接路径
- 求大侠!谢谢了!纠结好久了!cmake 时候出现CMake Error: Could not find cmake module file: CMake怎么办
- windows下进不了linux的hadoop50070怎么办
加载MBR,那就是设备已经识别硬盘了,为什么还要加载硬盘的驱动呢?
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执行的准备工作