Linux内核启动-从BIOS到Bootloader

名词解释

BIOS

  • Basic input and output system
    ROM
  • Read only memory
    RAM
  • Random access memory

启动流程 BIOS

  • 主板上电。
  • 将BIOS中的命令映射到内存0XF0000到0XFFFFF。
  • CPU中CS寄存器值设为0XFFFF,IP寄存器设为0,所以物理地址为0XFFFF0,正好是BIOS占用的部分。
  • 运行指向的jmp指令跳到BIOS中的硬件检查部分然后继续执行。
  • 运行BOIS建立中断向量表,注册各种IO中断,同时将内容存到视频显示RAM输出到屏幕。
 内存使用示意
   - ROM->BIOS
   - 存储器拓展区RAM
   - 视频显示RAM
   - 普通内存
   - BIOS数据中断服务程序
   - BIOS中断向量表

启动流程 Bootloader

  • BIOS结束,查找启动盘。
    • 启动盘判定标准:第一个扇区512字节,以0XAA55结束。
  • 运行启动盘内第一个扇区内的boot.img
    • 启动盘内的代码是Linux工具GRUB2(Grand Unified Bootloader Version 2)放的。
    • boot.img相关代码boot.S。
  • boot.S相当于一个指路牌,运行指向内核镜像core.img。
    • core.img 同样是GRUB2放的。
    • core.img 不是只Linux内核,是指grub内核。
    • core.img分三个部分。
      • diskboot.img。
        • 相关代码diskboot.S。
        • 用来解压/调用起 lzma_decompress.img。
      • lzma_decompress.img。
        • 因为实模式下内存只有1M,所以在此切换到保护模式。
        • 用来解压/调用起kernel.img。
        • 保护模式下启用分段/分页
          • 分段更方便进程管理
          • 分页是可选的(当然现在大部分都是段页式),是为了让内存中更少的段冗余。还有额外的好处:内存可以虚拟化啦,在TLB转换之前一直指向的都是虚拟地址了。
      • kernel.img
        • grub内核映像。
        • 选择可调用的内核,内核要从这里启动!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值