手机版 | 登陆 | 注册 | 留言 | 设首页 | 加收藏
当前位置: 网站首页 > 音响设备技术 > 文章 当前位置: 音响设备技术 > 文章

操作系统之引导

时间:2009-08-12    点击: 次    来源:本站原创    作者:佚名 - 小 + 大

操作系统之引导

操作系统之引导

要研究操作系统的第一步当然是实现引导,网上有很多文章都只说到了用软盘来实现,基本上是用一段C程序,把引导代码写进软盘的引导扇区里。

但现在哪里能找得到软驱阿,光驱倒可以试一下,有兴趣的朋友可以用光盘来实现引导,有好办法记得告诉我啊!

但如果这些物理因素都不具备的话,就要用到虚拟机——vmware了,本人是在WINDOWS下做的实验,win xp+vmware。

vmware能使用软盘的映像文件,也就是后缀名为img的文件,只要新建一个虚拟机,在setting那里的软驱项选择img文件就可以了,这个系统的启动就会从读这个img文件开始。(如果这个不懂,就学习一下怎么使用vmware吧)

但img文件的格式我不懂,网上也貌似没有相关的工具,让你把代码直接写到img文件的引导部分去。

既然没有工具,那我们就自己来吧,先了解一下img文件的格式,因为引导扇区是512个字节的,img文件应该和它有一定的对应关系。

下面是引导扇区的格式:

硬盘的第一个扇区,是主引导扇区,有时候叫做 MBR。

主引导扇区是一个数据结构,由以下三部分组成:

1、446 字节的程序代码(病毒最爱改写这里的代码);

2、64 字节的分区表;

3、2 字节的“幻数”,或者叫做“引导允许标志”。

前面 446 字节是程序。程序都是标准的,例如 DOS/WINDOWS引导程序,LINUX引导程序,

即使坏了,也不要紧,很容易获得这些程序的代码。

64 字节的分区表最要命! 千万不能改动(即破坏)了,它保存你的硬盘分区信息。坏了就不容易恢复了。

最末尾的两个字节也是不能改动的,它是允许引导的标志。 (0x55, 0xaa)

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

所以,你只需要写 446 个字节就行了,写多了可危险!(覆盖掉 64 字节的分区表中的任何一部分,就完蛋了!)

建议你写盘操作之前,先把分区表备份到软盘,或者打印到纸上,以防万一。

备份到硬盘是没有用的,因为硬盘分区表一损坏,你的操作系统就不能进入了。

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

写盘操作太危险,如果没有绝对的把握,不要盲干。 

 

看到512字节里最后两个字节了吧,0x55, 0xaa,那我们就用这个线索来分析img文件。

首先用ultraedit来打开img文件,如果没有img文件就用winimage或者什么其它的工具建一个,然后直接查找 "55 aa",查找的结果如下图,就在200h的上面。。。

img文件格式1

如果你算一下,就知道200h刚好是512,那就很清楚了,img文件的前512个字节就是磁盘里的引导扇区。那我们就只要把写好的代码的16进制(转为二进制就是机器码了)填在前面的512字节就可以了。。。


接着我们写一段汇编代码,这是引导后执行的第一段代码,把这个文件存为 myOS.asm,代码如下:

assume cs:code

data segment

data ends

stack segment

stack ends

code segment
start:
 ; 在第一行、第一列显示一个字符 'A'
 mov ax, 0b800h 
 mov es, ax
 mov al, 41h
 mov es:[0], al
 mov al, 2
 mov es:[1], al

loop1:
 jmp loop1 ; 无限循环

code ends

end start


用masm把这段代码编译成功就会产生一个exe文件,但这个exe文件不是完全对应的机器代码,masm 给它附带了很多信息,了解过PE文件的人应该知道。

我们的目的是要知道代码的16进制格式(转为二进制就是机器代码了),那我们就可以使用DEBUG程序反汇编,反汇编出来,马上就知道对应的16进制代码,如下图,左边的什么B800B8就是代码对应的16进制格式:

 

debug反汇编

 

那我们用 ultraedit 打开这个myOS.exe文件,查找一下这段16进制代码,如下图:

 

myos.exe文件 

 

把这段查找到的代码复制到img文件的开头(注意字节数),如下图:

 

 

 拷贝代码至 img 文件

 

 

然后再保存img文件,我们的img文件就做好了。再用VMWARE把这个img文件load进来,启动虚拟机,那我们的系统就成功引导了,虽然什么都不干。图如下:

 

系统引导成功

http://blog.csdn.net/dylgsy/archive/2009/03/26/4026231.aspx

上一篇:嵌入式系统引导技术研究

下一篇:系统引导过程分析与编制

备案ICP编号  |   QQ:285250603  |  地址:湛江市  |  电话:15322199012  |  
Copyright © 2026 天人文章管理系统 版权所有,授权www.yajiupc.top使用 Powered by 55TR.COM