无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4530|回复: 33
打印 上一主题 下一主题

[讨论]让隐藏分区获得优先启动权!!!

[复制链接]
跳转到指定楼层
1#
发表于 2004-12-9 11:20:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[这个贴子最后由hnlyzhd在 2004/12/09 04:19pm 第 3 次编辑]

大家都很喜欢一键恢复,一键还原或还原精灵等系统备份恢复软件,可是毕竟有太多短处...
初步想法如下,请各位高手讨论.....
1,创建隐藏分区(活动的主分区在硬盘最后分区).并且有第一启动权.
2,内置系统备份恢复软件如(GHOST).
3,隐藏分区启动后检查硬盘分区表的情况与原备份不一样时会自动恢复,如果正常将启动权转交系统盘进行正常启动进入操作系统..
4,能够自动备份MBR及BOOTPART,并自动分析其正确性....
请各位高手发言,并提出相应意见,轻松找造一个不死系统...
当然这只是我的一些很幼稚的想法,请大家指点...
说明:我写的这些文字只是突然有了这样的想法,写出来起到抛砖引玉的作用,请大家发表意思,但不要为了长级别而灌水或乱发言,所答非所问,或不知所云等,如果执意要灌水的话我也没有办法,只有对不起了,....
2#
发表于 2004-12-9 13:52:23 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

这个想法很好,我以前也想过:)
联想新的系统不是有一个开机自动检测系统是否损坏的功能吗?如果损坏会自动提示修复,不过他怕可能是系统级的,不是BOOT级别的,至少不是mbr级别的启动检测管理,大家应该响应版主的提议,各抒己见,为无忧的技术繁荣做出自己的贡献
回复

使用道具 举报

3#
发表于 2004-12-9 14:22:07 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

不难,用处不大.
回复

使用道具 举报

4#
 楼主| 发表于 2004-12-9 15:29:18 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

楼上的,把你的想法说出来或者能做点什么为大家造福呀,不要在这儿只灌水......
回复

使用道具 举报

5#
发表于 2004-12-10 14:19:03 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

    让隐藏主分区具有优先启动权,首先启动时是活动分区。楼主的这个提议我赞成!(打造一个不死系统...这个最适合现在那些会玩,不会装系统的朋友)
一键恢复虽然已经是够简单了,但还是很多人不敢碰的,有时只是按一两个键都不敢。做到自动检测分区表损坏与否,然后恢复系统,这样就方便多了。
    我认为从两个方面入手,一方面是IBM活动分区按键激活程序上修改,一方面是一键恢复中的主分区与隐藏主分区倒置。
-------------------------------------
   
回复

使用道具 举报

6#
发表于 2004-12-10 16:08:23 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

"隐藏分区启动后检查硬盘分区表的情况与原备份不一样时会自动恢复"
这个功能不好吧?如果把硬盘分区改变了,如再多分一个区出来,分区表就变了,这个时候启动隐藏分区,如果自动检查分区表不一样,自动恢复,那不是刚分出来的区就没有了
回复

使用道具 举报

7#
 楼主| 发表于 2004-12-10 16:33:40 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

楼上的可以手动重新备份分区表到备份呀!!!
回复

使用道具 举报

8#
发表于 2004-12-11 20:42:59 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

看见脑袋就大,我用了一下那个一键恢复精灵,感觉很好。
回复

使用道具 举报

9#
发表于 2004-12-11 22:04:10 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

主意不错,继续关注中,
嘿嘿嘿,
本人水平低下,只能看着大虾玩拉!!!!
回复

使用道具 举报

10#
发表于 2004-12-14 19:33:37 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

我用还原卡保护系统盘.它cmos优先.
保护前做个GHO.
回复

使用道具 举报

11#
发表于 2006-1-19 13:06:11 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

如果正常将启动权转交系统盘进行正常启动进入操作系统
请问这一步应该怎样实现。如果是修改隐藏分区的boot.ini文件,安装windows时会很麻烦
回复

使用道具 举报

12#
发表于 2006-1-19 15:45:51 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

[这个贴子最后由lxl1638在 2006/01/19 03:51pm 第 1 次编辑]
下面引用由hughengwu2006/01/19 01:06pm 发表的内容:
如果正常将启动权转交系统盘进行正常启动进入操作系统
请问这一步应该怎样实现。如果是修改隐藏分区的boot.ini文件,安装windows时会很麻烦
隐藏分区的boot.ini配合GRUB,由GRUB将引导权交给其它分区(如第2分区)引导,安装Windows时,起作用的是其它分区(如第2分区)的BOOT.INI文件,不用修改隐藏分区的boot.ini文件。这里就是一个例子,这个例子虽然没有自动备份分区表的功能,但已经解决了“安装windows时要修改隐藏分区的boot.ini文件”的问题。
http://bbs.wuyou.net/cgi-bin/topic.cgi?forum=34&topic=10011&show=0
我的观点是只要能从隐藏分区启动一个后备系统(那怕是DOS也好,当然PE最好,分区表的备份数据也可以内置于这个后备系统中),至于是否要自动恢复分区表,就看各人的需要了。一般是不需要的,因为那种情况极少,也可能出现这种情况:一旦分区表坏了,那个有第一引导权的隐藏分区也可能不起作用。
回复

使用道具 举报

13#
发表于 2006-1-19 16:43:03 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

我觉得有这样几种方法:
A. 用BOOT.INI来启动一个lxl1638的那个可以放在隐藏分区中的SDI方式的PE就可以了,这样不用改MBR,界面也好,只是不好定制。
B. IBM的F11方式(要改MBR)。
C. 或者用我前面写的那个程序来启动一个隐藏主分区中的DOS系统来做,DOS下自动备份分区表和CMOS的工具很多,也容易定制其功能。在隐藏分区里放上分区表备份、系统分区映像和相应工具程序就行了。只是对于初级用户来说,必须有个好的菜单界面才真正方便。
回复

使用道具 举报

14#
发表于 2006-1-20 14:40:31 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

下面引用由lxl16382006/01/19 03:45pm 发表的内容:
隐藏分区的boot.ini配合GRUB,由GRUB将引导权交给其它分区(如第2分区)引导,安装Windows时,起作用的是其它分区(如第2分区)的BOOT.INI文件,不用修改隐藏分区的boot.ini文件。这里就是一个例子,这个例子虽然没 ...

这个例子讲的是双硬盘时的情况,装windows时还要更改bios启动顺序。
如果是但硬盘该做怎样的修改?
回复

使用道具 举报

15#
 楼主| 发表于 2006-1-20 15:47:40 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

当时发表这个帖子时正在研究如何让系统不会轻易坏掉时产生的想法,现在竟然被翻了出来,我就简单说一下吧!
这种方式的软件在我发帖子二个月后已经有公司作出了产品,本人通过多方途径得到了北软科技的STARTCENTER软件进行测试,确实很完美,但是有太多的不便,本人没有再使用下去,它能够在硬盘启动时提示你的硬件及分区表是否有变化,并且能强行 修复它,还有就是你非正常关机情况下它会在启动时扫描很长时间来确保你的数据安全,不利于个人电脑使用!
但是它的隐藏分区采用了先进的HPA分区,隐藏分区中的操作系统采用了MINIGUI的收费LINUX的定制版本,在做系统备份时速度很慢,难以忍受。
之所以它安全性比较高就是因为它的隐藏分区能得到优先启动权并对硬盘分区表和你的主操作系统进行检测校验!
大家有兴趣自己看相关资料吧!
回复

使用道具 举报

16#
发表于 2006-1-20 16:04:00 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

太好了!
回复

使用道具 举报

17#
发表于 2006-1-20 21:12:28 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

个人觉得到了那种级别的数据保护,还原卡更占优势,毕竟它可以监控COMS和硬盘,起点高。
回复

使用道具 举报

18#
发表于 2006-1-20 21:49:45 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

下面引用由hughengwu2006/01/20 02:40pm 发表的内容:
这个例子讲的是双硬盘时的情况,装windows时还要更改bios启动顺序。
如果是但硬盘该做怎样的修改?
单硬盘原理也相似,由隐藏分区启动,将引导权交给安装XP所在的分区。我另一台机子就是这样。原理无非是将引导权从一个分区交给另一个分区!
回复

使用道具 举报

19#
发表于 2006-1-23 09:55:28 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

[这个贴子最后由wwwzhx在 2006/01/25 07:34am 第 1 次编辑]

这样的东西都是基于硬盘的,简单说,系统开机首先执行的程序就是主引导扇区前446字节,检查分区,寻找可引导分区等等,ibm一键恢复是修改这里,弄潮儿的不但修改这里,还用到后面三个扇区,其中两个扇区是程序,第四个扇区是原主引导扇区备份。pqboot也是如此吧,我没用过,猜的。
但是只要重装xp,主引导就被修改了,还得改回来,要是做成基于bios的就行了。
不是有把8139网卡的bootrom做到硬盘的方法吗,做过无盘的应该知道。网卡的bootrom也是一个开机程序啊。所谓引导顺序,就是cpu上电后第一条指令从哪里读取的问题。大胆设想,把硬盘主引导扇区的前446提取,当做网卡bootroom刷到网卡里或bios里,再设置启动顺序为网卡启动先,会如何呢?诸位认为可行吗?可行的话,我
有编程器,有网卡,有rom芯片,试一试。其实咱们这里高人很多,他们用汇编写一个开机程序不是难事,这帖子里就看见了,就是人家有没有兴趣,愿不愿意无偿共享,有没有时间的问题,嘿嘿。大家说呢
回复

使用道具 举报

20#
发表于 2006-1-26 08:34:02 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

先顶上去
回复

使用道具 举报

21#
发表于 2006-1-26 19:38:58 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

楼上的主意不错,可是这个的难度比较大。我懂一点点汇编,可是不知ROM程序的代码规则,哪里有X86机BIOS用的ROM程序的一个范例来学习一下。
回复

使用道具 举报

22#
发表于 2006-1-27 11:43:24 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

如果你是一个计算机用户相信你一定安装过操作系统,当你用久了一个操作系统,你可能会安装一个新的操作系统,但你往往希望保留现在的操作系统。比如当你有了一个windows98,你可以在上面再安装windows2K或是windowsXP,这是因为Windows的NTloader可以认识比自己更早的操作系统,所以能够给你保留先前的操作系统。但是如果你现在已经拥有了一个windows2K或是windowsXP你要在硬盘上再装个WINDOWS98甚至一些怀旧派人士想在上面安装一个DOS6.22,此时又该怎么办呢?你往往会用到第三方软件,比如V communications,.inc的System Commander系列,PowerQuest Corporration的BootMagic等等都是很好的选择。这些软件的将硬盘分区设置为两个或是两个以上的主分区,(也就是我们所说的双“C”盘,或是多“C”盘),把不同的操作系统安装到不同的主分区,通过激活不同的分区来实现多重引导,其优点是安全稳定,一旦一个操作系统瘫痪,一点不影响其他操作系统,个人认为值得推荐。
本文不是一篇多操作系统实现的经验介绍,因此有关BootMagic等第三方软件的使用我就不再浪费篇幅来介绍,我要给大家分析的是此类软件的实现原理。
要了解其实现原理,首先你必须对硬盘的总体结构有一定的了解,如果你对其结构不了解可参照表1。
表1:
名称备注
1主引导扇区(Master boot sector)占用一个扇区
2第一个主分区的引导扇区(Boot sector)占用一个扇区
3第一个主分区的FAT区占用空间由磁盘大小和FAT类型来定
4第一个分区的根目录区存放分区根目录
5第一个分区数据区用来存放各种数据
6…
7扩展分区表 占用一个扇区
8第一个扩展分区的引导扇区占用一个扇区
9第一个扩展分区的FAT区占用空间由磁盘大小和FAT类型来定
10第一个扩展分区的根目录区存放分区根目录
11第一个扩展分区的数据区用来存放各种数据
12…
注意:该表以空间顺序进行描述,一个硬盘允许最多四个主分区和多个扩展分区
我们还需要了解主引导扇区(Master boot sector)的结构,它是硬盘的第一个扇区, 由主引导程序(MasterBoot Record简称MBR),硬盘分区表(Disk Partition Table简称DPT )和结束标识三部分组成。其结构如表2。

表2:
在主引导扇区中的位置名称备注
1偏移 00H~1BDH主引导程序占446个字节,但实际可能并未用满
2偏移1BEH~1FDH硬盘主分区表占64个字节,每个分区项占16个字节,最多可有4个分区项:1BEH~1CDH 分区项11CEH~1DDH 分区项21DBH~1EDH 分区项31EFH~1FDH 分区项4
3偏移1FEH~1FFH结束标识占2个字节,用来判断分区表的有效性
主引导程序我在此就不分析了,需要注意的是在主引导程序中有一些出错信息,一些引导型病毒往往会覆盖这些信息来将自己嵌入到主引导程序中去,并将主引导程序开始的几个字节改为一条跳转指令,通过观察主引导程序的变化,往往可以让我们看出自己的电脑是否有引导型病毒,一旦发现异常,我们可以用FDISK/MBR命令来覆盖原有的MBR。结束标识的两个字节总是55H AAH,该标识只是用于判断这个扇区是否是有效的主引导扇区,如果主引导程序发现没有这个结束标识,将会认为操作系统丢失,并显示“Missing Operating System”。
我们最后要了解的是硬盘分区表,多重引导软件一般都是通过修改分区表中的特定字节达到多重引导的目的的,在硬盘的主引导区中,从偏移1BEH~1FDH的64个字节存放的是硬盘分区表,其中最多包含4个分区项,每个分区项由16个字节构成,我们来看看每个分区项的详细含义,假设我们的一个分区占用的16个字节被标为00H~0FH,其结构如表3:
表3:
偏移含义
00H引导标识字节,其值只能为00H或80H,为00H时表示该分区不可引导,为80H时表示该分区可用于引导 。
01H分区起始磁头号
02H其高2位为分区起始柱面号的高位,底6位为分区起始扇区号
03H分区起始柱面号的低位
04H分区系统标志,当该值为00H时,表示此分区为不可识别的系统;为04H时该分区为FAT16分区;为05H或0FH该分区为 扩展分区;为0B时该分区为FAT32分区 ;为83H时表示该分区为Linux分区, 为07时该分区为NTFS分区
05H分区结束磁头号
06H其高2位为分区结束柱面号的高位,底6位为分区结束扇区号
07H分区结束柱面号的低位
08H~0BH在线性寻址方式下的分区的扇区地址。
0CH~0FH以扇区为单位的该分区大小(总扇区数)
我们来看看BootMagic之类的软件是如何实现多系统引导的了,在表3中我们看到在偏移00H处的一个字节当其值为80H时代表该分区是一个引导区,当其值为00H时代表该分区不是引导区,其实多引导的实现原理就是通过改变该处的值来选择用来引导的分区。
假设你已经了解了以上原理,我们就完全可以做出自己的多重引导程序来了,我在此写出一个完整的实现程序,我将为大家分析这个程序应该怎么来写。假设你有一块硬盘,你在上面安装了一个windowsXP,可你现在想装个windows98,于是你用PartitionMagic将你的第一个扩展分区也就是你的D区设置为主分区,然后激活,重启动并用windows98安装光盘引导系统,并安装好windows98。就到这,你先不要急于安装BootMagic,让我们来试试动手做个自己的BootMagic怎么样。
很显然,要实现此功能,最少需要两个模块,模块一:被写入主引导扇区中,用来取代原MBR区,它必须能够在系统引导前获取执行权,实现主分区的引导选择后,将执行权交给被选择的操作系统,从而实现多系统引导;模块二:实现三个功能,首先将原主引导扇区备份一个到其他扇区(在我的例子中把它备份到0头0道 6扇),然后将模块一写入主引导扇区。另外模块二还实现多引导程序的卸载
模块二功能相对简单,其源程序如下:
;硬盘多引导安装程序(SYSGUIDE.EXE)模块二
DATA SEGMENT
D1 DB ';choose';
D2 DB ';Please choose the number (1)Install the SYSGUIDE';,0dh,0ah,'; DB ‘ (2) Delete the SYSGUIDE';,0dh,';$';
D3 DB ';SYSGUIDE.DAT';,00H
D4 DB ';Can not find file (SYSGUIDE.DAT)';,0dh,0ah,';$';
D5 DB 0dh,0ah
DB 0dh,0ah
DB 0dh,0ah
DB '; ----------# MUCH SYSTEM GUIDE #------------';,0dh,0ah
DB '; E-mail:tyhhyf@hotmail.com';,0dh,0ah
DB '; OICQ:86633320';,0dh,0ah,';$';
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV DX,OFFSET D5
MOV AH,09H
INT 21H
MOV AH,00H
INT 16H
MOV DX,OFFSET D2
MOV AH,09H
INT 21H
readkey:
MOV AH,00H
INT 16H
cmp al,';1';
je key1
cmp al,';2';
je key2
jmp readkey
key1:
MOV AX,0201H ;读0 0 1扇区
MOV CX,0001H
MOV DX,0080H
MOV BX,0F000H
INT 13H
MOVSI,offset D1
MOVDI,0F020H
MOVCX,0003H
REPZ CMPSW
JZEXIT ;字符串相同则跳转
mov ax,0301h ;将原MBS区备份一个到0 0 6 扇
mov cx,0006h
mov dx,0080h
int 13h
MOV AH,3DH
MOV DX,OFFSET D3
MOV AL,00H
INT 21H ;打开文件SYSGUIDE.DAT
JB OPERERROR
PUSH AX
MOV AH,3FH
MOV DX,0F000H
MOV CX,018DH
POP BX
INT 21H
MOV AX,0301H ;将SYSGUIDE.DAT写到0 0 1扇,替代原来的MBR
MOV CX,0001H
MOV DX,0080H
MOV BX,0F000H
INT 13H
JMP EXIT
key2:
MOV AX,0201H;读0 0 1扇区
MOV CX,0001H
MOV DX,0080H
MOV BX,0F000H
INT 13H
MOVSI,offset D1
MOVDI,0F020H
MOVCX,0003H
REPZ CMPSW
JNZEXIT ;字符串相同则跳转
MOV AX,0201H ;读0 0 6扇区
MOV CX,0006H
MOV DX,0080H
MOV BX,0F000H
INT 13H
MOV AX,0301H ;写0 0 1扇区
MOV CX,0001H
MOV DX,0080H
MOV BX,0F000H
INT 13H
JMP EXIT
OPERERROR:
MOV AH,09H
MOV DX,OFFSET D4
INT 21H
EXIT:
MOV AH,4Ch
INT 21h
CODE ENDS
END START
模块一被写入到硬盘的第一个扇区中,在系统引导之前获得执行权,从而实现多引导。因为这是个扇区程序,有别于一般的程序文件,其格式类似于COM文件,在此我是采用DEBUG程序,从EXE文件中提取的方法来实现的,源程序如下:
;多引导程序(SYSGUIDE.DAT),需要从以下源程序(模块一)产生的程序文件中提取
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
;这一段是将整个硬盘锁从0000:7c00移至0000:0600,以免被后来读入的代码覆盖
START:
db 256 dup (00h)
PUSHDS
PUSHES
MOVCX,0100h
MOVDI,0600h
MOVAX,0000h
MOVDS,AX
MOVES,AX
MOVSI,7C00h
REPNZ MOVSW
mov ax,0686h
JMPax ;长跳转至移动后的代码,也就是从screen处开始执行
words db ';Please choose the partition for guide.';
db 10 dup (20h)
db ';(1)partition 1;(2)partition 2;(3)partition 3;(4)partition 4;';,00h
screen:
MOVAX,0600h
MOVBH,0F0h
MOVCX,0000h
MOVDX,184Fh
INT10h ;初始化屏幕(前景为黑色,背景为灰白,字符闪烁)
MOVDL,1Ah
MOVSI,0619h ;从0619H处显示字符(因为程序将被读入了0000:0600处,
;实际显示的也就是现在的words处开始的字符串)
DISPLAY:
MOV AH,02H
MOV DH,10H
MOV BH,00H
INT 10H
MOV AL,[SI]
CMP AL,00H
JE readMBS
MOV AH,09H
MOV CX,01H
MOV BH,00H
MOV BL,70H
INT 10H
INC DL
INC SI
JMP DISPLAY
readMBS:
MOVAX,0201h
MOVCX,0001h
MOVDX,0080h
MOVBX,1000h
INT13h ;将主引导区(即本SYSGUIDE.DAT)读出到0000:1000H处
MOV ax,0201h
MOV cx,0006h ;读0 0 6扇,(即原来的MBS)
MOV dx,0080h
MOV bX,07C00h
int 013h
readkey:
MOV AH,00H
INT 16H
CMP AL,';1'; ;是1么?
JE number1
CMP AL,';2';
JE number2
CMP AL,';3';
JE number3
CMP AL,';4';
JE number4
jmp readkey
number1:
db 0a0h,0c2h,11h ;相当于mov al,[011c2h],因为用mov al,[011c2h]不能编译
cmp al,00h
je error1
cmp al,05h
je error1
cmp al,0fh
je error1
mov ah,080h
db 88h,26h,0beh,11h ;相当于mov [011beh],ah
mov ah,00h
db 88h,26h,0ceh,11h ;mov [11ceh],ah
db 88h,26h,0deh,11h ;mov [11deh],ah
db 88h,26h,0eeh,11h ;mov [11eeh],ah
jmp ok
number2:
db 0a0h,0d2h,11h ;mov al,[11d2h]
cmp al,00h
je error1
cmp al,05h
je error1
cmp al,0fh
je error1
mov ah,80h
db 88h,26h,0ceh,11h ;mov [11ceh],ah
mov ah,00h
db 88h,26h,0beh,11h ;mov [11beh],ah
db 88h,26h,0deh,11h ;mov [11deh],ah
db 88h,26h,0eeh,11h ;mov [11eeh],ah
jmp ok
error1:
jmp readkey
number3:
db 0a0h,0e2h,11h ;mov al,[11e2h]
cmp al,00h
je error1
cmp al,05h
je error1
cmp al,0fh
je error1
mov ah,80h
db 88h,26h,0deh,11h ;mov [11deh],ah
mov ah,00h
db 88h,26h,0beh,11h ;mov [11beh],ah
db 88h,26h,0ceh,11h ;mov [11ceh],ah
db 88h,26h,0eeh,11h ;mov [11eeh],ah
jmp ok
number4:
db 0a0h,0f2h,11h ;mov al,[11f2h]
cmp al,00h
je error1
cmp al,05h
je error1
cmp al,0fh
je error1
mov ah,80h
db 88h,26h,0eeh,11h ;mov [11eeh],ah
mov ah,00h
db 88h,26h,0ceh,11h ;mov [11ceh],ah
db 88h,26h,0deh,11h ;mov [11deh],ah
db 88h,26h,0beh,11h ;mov [11beh],ah
jmp ok
ok:
mov ax,0301h
mov cx,0001h
mov dx,0080h
mov bx,1000h
int 13h ; 将改变了引导标示的分区表,写回0 0 1扇
MOVCX,040h
MOVDI,7dbeh
MOVSI,11beh
REPNZ MOVSW
MOV ax,0301h
MOV cx,0006h ;将改变了引导标示的分区表,写回0 0 6扇
MOV dx,0080h
MOV bX,07C00h
int 013h
MOV bx,7c00h ;交执行权给0000:7C00处
JMP bx ;长跳转至原MBR代码处执行
CODE ENDS
END START
代码到此就讲完了,程序本身不复杂,只要你了解了实现原理,在实现时才会得心应手,好了,赶快把我们的源代码编译链接一下,把模块二得到的程序取名为SYSGUIDE.EXE,从模块一所得的程序中提取出我们要的程序取名叫SYSGUIDE.DAT,提取方法如下:
1、在DOS方式下,输入“DEBUG GUIDE.EXE”,其中GUIDE.EXE是我们用模块一得到的程序文件(在此强烈警告千万不要运行这个GUIDE.EXE程序),
2、在DEBUG提示符下输入:R CX(回车) 1BD(回车) N SYSGUIDE.DAT(回车) W(回车)Q(回车)。
在命令行中输入DEBUG,然后
-R CX(回车)
-1BD(回车)
-N SYSGUIDE.DAT(回车)
-W(回车)
-Q(回车)。
这样你就会发现在你当前的目录中就有了一个名为SYSGUIDE.DAT的文件,着就是我们将用来写入硬盘第一扇区的扇区程序文件了,赶快把它和SYSGUIDE.EXE文件拷贝到一个文件夹下吧。
好了,我们要的程序已经得到了,就让我们来用用看,在我们最后安装的WIN98中执行吧,当看到以下提示时,键入数字键“1”。
';Please choose the number (1)Install the SYSGUIDE
(2) Delete the SYSGUIDE
然后重新启动,怎么样,是不是看到了引导选择提示?不过界面是不太好看了^_^,但是没什么,毕竟这是我们自己写的多引导程序哦!好了,我们选择“1”试试,是不是进了我们先前安装的WINXP?然后重新启动,再选择“2”试试,是不是进了我们后来安装的WIN98了!
对了我们好象还有一个BOOTMAGIC的功能没有实现哦,就是程序自动识别操作系统的功能,我想这个功能就留到我们读者自己去扩充吧!我在这大致的说明一下原理,又回到我们的表3,看到其中偏移04的那个字节么?其实BOOTMAGIC就是利用了这个原理来实现智能化的识别操作系统的,那具体要怎么做呢?我不说,自己去想^_^。
又到了说886的时候了,再写下去编辑可不会用了哦!就这样吧,有兴趣来讨论,联系方法到我的源程序中找。程序可以到http://lsky.net/download/soft.asp?id=35 下载。
回复

使用道具 举报

23#
发表于 2006-1-27 12:14:36 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

压缩包是8139网卡的pxe启动代码
RTSROM_M.LOM 52k,是用于写入主板BIOS的代码
RTSROM_M.NIC 64k  是用于写入网卡启动芯片的代码
[UploadFile=8139pxerom_1138334549.rar]
要是能把ibm的一键恢复或是弄潮儿的一键恢复写入网卡启动芯片或是bios就好了
就是不知道系统启动的时候加载MBR的引导管理程序和加载网卡的远程引导程序过程是否一样,
MBR 系统引导过程主要由以下几个步骤组成(以硬盘启动为例)
1、 开机;
2、 BIOS加电自检(POST---Power On Self Test),内存地址为0fff:0000;
3、 将硬盘第一个扇区(0头0道1扇区,也就是Boot Sector)读入内存地址0000:7c00处;
4、 检查(WORD)0000:7dfe是否等于0xaa55.若不等于则转去尝试其他介质;如果没有其他启动介质,则显示 ”No ROM BASIC” ,然后死机;  
5、 跳转到0000:7c00处执行MBR中的程序;
6、 MBR先将自己复制到0000:0600处,然后继续执行;
7、 在主分区表中搜索标志为活动的分区.如果发现没有活动分区或者不止一个活动分区,则停止;
8、 将活动分区的第一个扇区读入内存地址0000:7c00处; 
9、 检查(WORD)0000:7dfe是否等于0xaa55,若不等于则显示 “Missing Operating System”,然后停止,或尝试软盘启动;
10、 跳转到0000:7c00处继续执行特定系统的启动程序;
11、 启动系统.
以上步骤中(2),(3),(4),(5)步由BIOS的引导程序完成;(6),(7),(8),(9),(10)步由MBR中的引导程序完成.
一般多系统引导程序(如Smart Boot Manager, BootStar, PQBoot等)都是将标准主引导记录替换成自己的引导程序,在运行系统启动程序之前让用户选择想要启动的分区.而某些系统自带的多系统引导程序(如 LILO,NT Loader等)则可以将自己的引导程序放在系统所处分区的第一个扇区中,在Linux中即为两个扇区的SuperBlock.
注:以上步骤中使用的是标准的MBR,多系统引导程序的引导过程与此不同.

PXE的原理:
1、 用户端电脑开机后, PXE Boot ROM 获得控制权之前先做自我测试,然后以广播形式发出一个请求FIND帧。
2、 如果服务器收到个人电脑所送出的要求, 就会送回 DHCP 回应, 内容包括用户端的 IP 地址, 预设通讯通道, 及开机映像文件。 否则, 服务器会忽略这个要求。
3、 工作站收到服务器发回的响应后则会回应一个FRAME,以请求传送启动所需文件。
4、 之后,将有更多的讯息在用户端与服务器之间作应答, 用以决定启动参数。 BootPROM 由 TFTP 通讯协议从服务器下载开机映像档, 这个映像档就是软盘的映象文件。
5、 工作站使用TFTP 协议接收启动文件后,将控制权转交启动块,引导操作系统,完成远程启动。
回复

使用道具 举报

24#
发表于 2006-1-27 20:00:18 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

你说的这些东西我都知道。可是我不知道一个ROM程序和MBR程序有哪些不同,比如说载入地址、数据格式等等。
回复

使用道具 举报

25#
发表于 2006-1-30 07:23:38 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

唉,我也不知道~~~~~
回复

使用道具 举报

26#
发表于 2006-1-31 21:48:28 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

那就要在硬盘引导区写首先访问隐藏分区  隐藏分区再写文件判断 然后正确在返回主分区
有点复杂
回复

使用道具 举报

27#
发表于 2006-2-2 02:09:00 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

我现在把硬盘分成两个分区,第一分区优先启动并隐藏,装好硬盘版式的pe,第二分区装xp,请问怎样进进行引导可以做到楼主所说的样子.
   我现在遇到的问题是,pe分区的ntldr分件和xp分区的ntlder文件不一样,用pe分区的ntlder文件时启动后直接进入pe,系统不去读取boot.ini.而把它替换成xp的ntldr后我又不知道怎样进入pe
   请各位大大不吝指教!
回复

使用道具 举报

28#
发表于 2006-2-4 11:33:40 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

把常用软件装上,然后按个小哨兵之类的硬件还原卡,从此不死系统诞生了。。。。
回复

使用道具 举报

29#
发表于 2006-2-12 22:09:41 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

“创建隐藏分区(活动的主分区在硬盘最后分区).并且有第一启动权.”
标准的MBR好像是寻找活动分区,然后把控制权交给活动分区的引导记录。请注意“标准”两个字。
如果要先引导到隐藏分区,那就要改变标准MBR的做法。换句话说要自己重写MBR,如果这个可以接受的话应该就做的到吧。可是“不标准”的做法总是让人有些担心。
回复

使用道具 举报

30#
发表于 2006-2-17 00:11:10 | 只看该作者

[讨论]让隐藏分区获得优先启动权!!!

目前这项技术应该有点眉目了!!!建议多讨论!!!有好想法多提!!!!!!!!1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-2-28 06:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表