01.硬盘启动盘,加载操作系统

硬盘启动盘,加载操作系统

模拟硬盘加载操作系统
环境:
VMware16
Ubuntu16.04
qemu
bochs 2.7

参考:
启动,BIOS,MBR
硬盘控制器主要端口寄存器
《操作系统真相还原》

1.系统开机流程

在这里插入图片描述
暂不构建中断向量表,直接加载MBR

2.BIOS 内存分布

在这里插入图片描述
MBR的位置在0x7c00,可用区域仅仅512B。如果在实模式下,要使内核大小超过512B,则需要使用0x500区域。该区域大小约为30KB。
因此使用MBR引导加载SETUP,使得内核大小超过512B。如下图所示:
在这里插入图片描述

  • mbr.asm,是boot loader,用于将真正的OS内核,即setup.asm中的程序,读入内存
  • setup.asm,是OS内核,存放要执行的代码
SETUP_MAIN_ADDR equ 0x500	; setup地址

boot:
    mov edi, SETUP_MAIN_ADDR 
    ;	假设mbr在第一个扇区,setup在第二个扇区
    mov ecx, 1  ; 第一个扇区
    mov bl,  2  ; 读两个扇区
    call read_hd	;	读硬盘,加载操作系统内核
   
    jmp SETUP_MAIN_ADDR ;	跳转到setup

3.硬盘读取方式

常见的硬盘寻找方式有CHS和LBA逻辑块地址
本文使用LBA48寻址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值