手写简单操作系统内核

}

在这里插入图片描述

在这里插入图片描述

文件系统 1K-块 已用 可用 已用% 挂载点

/dev/sda4 48752308 8087584 38158536 18% /

其中的“sda1”就是硬盘的第四个分区,但是GRUB的menuentry中不能写sda4,而是要写“hd0,msdos1”,这是GRUB的命名方式,hd0表示第一块硬盘。


然后把HelloOS.bin文件复制到/boot/目录下,最后重启计算机

只要我们的PC机上安装了Ubuntu Linux操作系统,GRUB就已经存在了,就不用我们从引导程序开始写了。

在这里插入图片描述

在这里插入图片描述

2 原理

==================================================================

2.1 Hello OS的引导流程


在这里插入图片描述

PC机BIOS固件是固化在PC机主板上的ROM芯片中的,掉电也能保存,PC机上电后的第一条指令就是BIOS固件中的,它负责检测和初始化CPU、内存及主板平台,然后加载硬盘中的第一个扇区数据,到0x7c00地址开始的内存空间,再接着跳转到0x7c00处执行指令,这里就是GRUB引导程序。

2.2 Hello OS引导汇编代码


对应entry.asm文件:

MBT_HDR_FLAGS EQU 0x00010003

MBT_HDR_MAGIC EQU 0x1BADB002 ;多引导协议头魔数

MBT_HDR2_MAGIC EQU 0xe85250d6 ;第二版多引导协议头魔数

global _start ;导出_start符号

extern main ;导入外部的main函数符号

[section .start.text] ;定义.start.text代码节

[bits 32] ;汇编成32位代码

_start:

jmp _entry

ALIGN 8

mbt_hdr:

dd MBT_HDR_MAGIC

dd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值