为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

硬盘上的第一个512个字节

2017-11-10 7页 doc 20KB 19阅读

用户头像

is_954223

暂无简介

举报
硬盘上的第一个512个字节硬盘上的第一个512个字节 Huang optman@126.com 你对硬盘上的第一个512个字节了解吗,你知道它是干什么用的吗,你知道这个区域对于你的硬盘数据的至关重要性么,你想做出独特的开机画面吗,我的这个程序就试图向您揭开这个神秘的面纱(保存、恢复分区表,实现多操作系统引导)。(如果你要运行我的程序,请仔细阅读程序的说明,否则一切后果自负~) 这个512字节就是硬盘的主引导扇区,它包括,一个简短的引导程序,一个分区表。在硬盘引导的情况下,BIOS自检完成后,就把这512个字节调入内存,并把CPU的控制权交给它。...
硬盘上的第一个512个字节
硬盘上的第一个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状态),因为在程序中使用了一些BIOS的低级软中断调用指令,无法在Windows 95下运行。 3.在运行以上程序之前,请先准备好一张好的软盘,插好,运行Save.exe。把硬盘的第一个扇区保存好,并DIR一下,确保有一个512字节的HDBOOT.DAT文件。把restore.exe文件也拷贝到该软盘上,以备不测。 4.运行multigo.exe,根据提示,按y键,多引导就安装成功,重启动你就可以看见一个选择菜单了。一开始,你也许搞不懂应选择哪一项,不过就四个选项,试一试,总能进入一个操作系统的。不过多系统引导并不那么简单,我将在下面进行进一步分析。 5.如果你不想要多引导功能了,只要简单的运行一下stanBoot.exe,就可以恢复原来的设置了,保留当前的分区表。如果实在不行,插好保存有硬盘备份文件HDBOOT.DAT的软盘,运行restore.exe,就可以恢复到实验之初的状态。 6.用fdisk /mbr也可以设置标准的启动代码,应用当前的分区表信息。 可能遇到的一些情况: ,.BIOS的Virus Warning开关使能了,导致每次对硬盘主引导分区写入时,都要警告一番。 你可以将它Disable. 2.运行以上程序时出现了error字样。这是因为在Windows状态下无法进行低级操作,请退到DOS状态(关闭系统并退到DOS状态或纯DOS状态)。 3.系统无法引导,四个选项都试过了。请重启动,再试一遍。如果还不行,请用restor.exe进行恢复。如果你没有进行备份,我只好同情你了...... 4.错误的运行了别人软盘上的restore.exe文件,并把他的硬盘主引导区HDBOOT.DAT文件写入了你的硬盘。请用你自己的备份HDBOOT.DAT,再恢复一次。如果没有备份,我也是爱莫能助了......别以为这是一个笑话,就有一个同学把我的备份软盘拿去运行了一下,然后我就只有看着他重新分区硬盘了,好伤心...... 5.菜单的出现速度很慢或很快,不好意思,我通过一个简单的循环来实现延时,与计算机的速度有关,你可以修改源代码。 6.再有问题,你就自我解决了,我要"逃避责任"了,xixi....... 关于多操作系统的引导: 1.主引导分区表中只能容纳四个表项,即四个主区。但为了分更多的区,人们可以把任一表项设为扩展分区。扩展分区所指向的第一个扇区并不是引导程序,而是一个类似于主引导区的结构。 2.我的multigo.exe程序不支持扩展分区的引导(Linux的lilo可以),所以最多只有四个 可引导的系统,菜单选项的名称可以通过源程序进行修改。 3.关于如何安装多个操作系统,我很难一下子说明白。我只想指明一点,那就是DOS或Windows把激活的启动分区当成C:盘,其余类推。而且把其启动信息(代码)放在该启动分区的第一个扇区上。故为了把dos,windows往某一个分区里安装,你必须把该分区激活成成可启动分区(你可以使用fdisk;也可以在安装了multigo后,选择某一项进入,可能会死机,因为没有启动信息,但不要紧,这时该分区已被激活),然后重新启动,进行安装。 4.一般,我们的硬盘只有一个主区,一个扩展分区,如何产生多个主区呢,有人在杂志上介绍用Norton的Diskedit工具,我一直是以这样一个方法完成的。不过这个方法很烦琐,我不想介绍了。你可以另想办法了。当然,如果你要安装的是Linux,这一切就不要操心了,其自带了工具。 5.对于DOS和Windows 95的安装,它们都要重新写硬盘的主引导扇区,相当于fdisk /mbr。 所以,要重新运行multigo.exe,安装多引导系统。 从这个程序完成到今天,有近两年的时间了。一直也没有修改,偶尔还是用着,虽然不是那么方便,但对于我自己倒无所谓。设计之初是为了安装linux,后来还同时安装了Windows NT,以及多个Windows 95,效果还行。后来,由于无法启动扩展分区,我现在一直使用的是Linux的lilo,我的一个同学则在使用我的multigo。今天也并非突发奇想要发表,早有这种打算,因为见到很多人对于多系统引导和硬盘主引导区的不了解。只是文档的说明很繁,一直就搁下了....... 今天程序终于与大家见面了,是否已经人老珠黄,但愿大家能喜欢,并在此基础上进一步发挥想象力,把程序做得更完美,这才是我的最终愿望。 由于时日已久,当初又没有写文档,现在写有点吃力。故,如果你有兴趣,可以参考以下的书目,再研究我的代码。 声明: 我不对运行以上程序所产生的任何结果负责,一切责任自负。 附硬盘主引导区简单的结构: 偏移 说明 00 主引导程序 1BE 第一分区表 1CE 第二分区表 1DE 第三分区表 1EE 第四分区表 1FE 55H 1FF AAH 分区表项格式: 偏移 说明 00 BOOT ID 80H为可引导,否则为00 01 此分区开始的磁头编号 02-03 扇区值及柱面值 04 操作系统的ID值 05 此分区结束的磁头编号 06-07 此分区结束的扇区及柱面值 08-11 此分区前的扇区总数 12-15 此分区所含的扇区总数 参考书:
/
本文档为【硬盘上的第一个512个字节】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索