grub启动linux的一些细节

来源:互联网 发布:外汇 非农数据 时间表 编辑:程序博客网 时间:2024/06/14 05:07

此前和同学讨论过:启动过程中,kernel还不在内存中,如何进行文件系统相关的操作?initrd和kernel都是存在于文件系统中的(/boot/)。

刚刚查了一下,了解到grub是可以解析inode的,因此grub可以从文件系统内读取这两个文件。


grub启动时,还有一点比较tricky。在实模式下,只能访问1MB的物理内存,而vmlinuz和initrd.img大于1MB;另一方面,BIOS中断能够很方便地读取磁盘,但是在保护模式下BIOS中断无法使用。grub在加载vmliuz和initrd.img的过程中总是重复以下过程:

  • 将1MB的内容加载到内存中
  • 进入保护模式
  • 将低地址处的内容移动到高地址处
  • 切换回实地址模式

这样就既可以使用大于1MB的空间,又可以用BIOS中断了

0 0
原创粉丝点击