grub启动linux的一些细节


此前和同学讨论过:启动过程中,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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值