- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
硬盘上的第一个512个字节.doc
硬盘上的第一个512个字节
Huang
optman@126.com
你对硬盘上的第一个512个字节了解吗,你知道它是干什么用的吗?你知道这个区域对于你的硬盘数据的至关重要性么?你想做出独特的开机画面吗?我的这个程序就试图向您揭开这个神秘的面纱(保存、恢复分区表,实现多操作系统引导)。(如果你要运行我的程序,请仔细阅读程序的说明,否则一切后果自负!)
这个512字节就是硬盘的主引导扇区,它包括,一个简短的引导程序,一个分区表。在硬盘引导的情况下,BIOS自检完成后,就把这512个字节调入内存,并把CPU的控制权交给它。该引导程序读取分区表,确定一个可引导分区,并把分区的第一个扇区(512字节)读入内存,然后把CPU的控制权交给它,继续完成最终的系统引导。
硬盘的这种设计,是为了使一个硬盘可以同时安装多个操作系统,而并不限制是何种系统(包括你自己设计的一个“水货”操作系统). 所以你可以在使用Windows NT,Window 95的同时使用免费的Linux(当初我设计这个软件的动机就是要安装Linux)。
以前为了让一个分区能够引导,我们必须使用fdisk激活该分区,并重新启动系统,太麻烦了。我们能不能制作个启动菜单,在引导的时候进行选择呢?因为这样要方便多了。
硬盘的以上设计结构就使我们制作这样一个引导程序成为了可能。如果我们对标准的引导程序稍加修改,加上一个图形菜单,根据用户的选择进行相应操作系统的引导,岂不很好?
事实上我已经根据以上原理制作了一个这样的系统,试用了两年,效果不错。其实类似的商业软件已经不少,例如流行的System commander,Linux下的lilo。不过,如果你能对我的程序稍加修改,你会发现,做一个有自己特色的开机画面,会是一件很惬意的事情。
美好设想:
虽然我没有实现以下的设想,但我想,一定有天才能够做到。
1.做一个漂亮的开机画面,就象品牌机所做的。
2.做一个身份验证程序,就像开机口令。
......
编程的难点:
1. 由于只有512个字节(还要除去分区表的64个字节,实际还有448个字节),要用高级语言来实现恐怕是有点困难(我不排除某些天才的可能)。我自己是使用的汇编语言。但我想可以在安装和设置程序上使用高级语言来实现,而使用内嵌式汇编语言实现那个核心的512字节。我们也可以使用几个扇区来实现一些复杂的功能,但BIOS只会调入第一个扇区执行,其余的要自己调入。
2. 由于引导代码是在操作系统启动之前执行的,故不能使用任何操作系统的调用,只能用BIOS的软中断例程。
3. 调试的困难,因为引导代码是在操作系统启动之前执行的,故这个环境很难模拟。我们只能把代码分段调试(如菜单的编制就可以在DOS下调试成功),但核心的引导还是要实战。为了安全起见,我们必须先做好备份,以免程序失败导致硬盘数据丢失。
重新编译程序的要求:
要有ASM的编译程序,如MASM.要有链接程序,如link.
程序的主要特点:
安装代码很灵活。为了把代码装入主引导扇区,有的程序采用了把代码转化为二进制的方式,那个工作量可想而知......。而我的程序可以一次性写入,没有任何的累赘输入。如果你仔细研究我的代码,你会为这一段代码拍案叫绝的,xixi.......。
一点遗憾:
我的程序是在DOS下完成的,界面很水。要进行一些修改,就得直接修改源程序,并重新编译、链接、运行。我一直想要在Windows或DOS下,有一个漂亮的界面,能方便的进行参数的修改。然而始终没有一个动力让我一定做出来,两年了,一直这样......
程序介绍:
1.save.exe 保存硬盘的第一个扇区到软盘上(A:驱动器),文件名HDBOOT.DAT,大小512字节。如果文件已经存在,就覆盖。
2.restore.exe 从A:驱动器恢复保存的HDBOOT.DAT到硬盘的第一个扇区。
3.multigo.exe 对硬盘的第一个扇区进行修改,使其能以菜单的方式让用户进行多操作系统的引导,并保留现有分区表。但为了安全起见,请先用save.exe进行保存。
4.stanBoot.exe 恢复标准的引导方式,并保留现有分区表。请先确保激活的分区是可引导的!!(运行时,提示有一点出入,说是password check,那是另一个版本的提示,没有关系的,我懒得修改了,请见谅)
使用说明:
虽然我已经实验多次,但为了你的硬盘的安全,请仔细看完以下说明。
1.如果你的硬盘数据很重要,你最好别使用以上任何的程序,我可不能确保万无一失!!!!
2.如果你一定要执行以上程序,请先退到DOS状态(关闭系统并退到DOS状态或纯DOS状态),因为在程序中使用了一
文档评论(0)