星空网 > 软件开发 > 操作系统

Linux内核系列—9.操作系统开发之Loader

一个操作系统从开机到开始运行,大致经历“引导—>加载内核入内存—>跳入保护模式—>开始执行内核”这样一个过程。也就是说,在内核开始执行之前不但要加载内核,而且还有准备保护模式等一系列工作,如果全都交给引导扇区来做,512字节很可能是不够用的,所以不妨把这个过程交给另外的模块来完成,我们把这个模块叫做Loader。引导扇区负责把Loader加载入内存并且把控制权交给它,其他工作放心地交给Loader来做,因为它没有512字节的限制,将会灵活得多。

为了操作方便,把软盘做成FAT12格式。这样对Loader以及今后的Kernel(内核)的操作将会非常简单易行。

引导扇区是整个软盘的第0个扇区,FAT12格式如下:

Linux内核系列—9.操作系统开发之Loaderimages/loading.gif' data-original="http://images2015.cnblogs.com/blog/790694/201604/790694-20160414164824832-606621732.png" />

loader源码:

org	0100h	mov	ax, 0B800h	mov	gs, ax	mov	ah, 0Fh				; 0000: 黑底  1111: 白字	mov	al, 'L'	mov	[gs:((80 * 0 + 39) * 2)], ax	; 屏幕第 0 行, 第 39 列	jmp	$				; 到此停住

然后执行命令

nasm boot.asm -o boot.bin

nasm loader.asm -o loader.bin

先用bximage生成一个软盘映像,然后在linx下这样做,因为我的linux里只有/mnt/hgfs/

dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc

sudo mount -o loop a.img /mnt/hgfs/

sudo cp loader.bin /mnt/hgfs/ -v

sudo umount /mnt/hgfs/

运行结果如下:

Linux内核系列—9.操作系统开发之Loader

看到了字符“L”。

如果把前面学习的时钟中断程序按照上面的方法来运行也可以,如下

Linux内核系列—9.操作系统开发之Loader

Linux内核系列—9.操作系统开发之Loader

可以在虚拟机上运行,说明已经突破了512字节限制。

那么现在我们假设已经有了一个内核,Loader肯定要加载它入内存,而且内核开始执行的时候肯定已经在保护模式下了,所以,Loader要做的事情至少有两件:

1.加载内核入内存

2.跳入保护模式

 

Linux内核系列—9.操作系统开发之Loader 

源码




原标题:Linux内核系列—9.操作系统开发之Loader

关键词:linux

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

tiktok 安卓下载:https://www.goluckyvip.com/tag/82338.html
tiktok比基尼:https://www.goluckyvip.com/tag/82339.html
直达物流:https://www.goluckyvip.com/tag/8234.html
tiktok 涨粉:https://www.goluckyvip.com/tag/82340.html
tiktok 投流:https://www.goluckyvip.com/tag/82341.html
tiktok 修改版:https://www.goluckyvip.com/tag/82342.html
独家丨B站广告位可跳转美团APP B站为电商平台引流再升级 :https://www.kjdsnews.com/a/1836410.html
百崖大峡谷生态旅游景区(探秘中国西南自然风光):https://www.vstour.cn/a/363176.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流