这是写于2007年的日志,现发布出来,供有需要的参考。
目的:通过修改MBR代码,实现在电脑开机的时候,选择不同硬盘分区上的操作系统。
实现方法:需要一个安装程序,该安装程序实现提取硬盘分区信息,并将操作系统信息写入到启动代码里,然后将修改后的代码写入到硬盘的0磁头0磁道2到3扇区内。
对MBR的修改(下面代码不包含对MBR的修改):探测到Ctrl或alt或shit按下时,将自定义选择与启动代码从0磁头0磁道2到3扇区里读出,加载到内存0000:7C00处执行。
以下为自定义的启动代码(0磁头0磁道2到3扇区):加载之后,将自身从0000:7C00处搬到0000:0600处运行,根据选择的启动分区的参数,将启动分区的第一扇区读取到0000:7C00处,然后跳转到0000:7C00处启动相应的操作系统。
如果是linux操作系统的话,需要将linux操作系统的启动管理器安装到某个分区上,而不能安装到MBR(该启动管理器安装后,会破坏原始的MBR,会导致linux启动不了)。
[780]启动条数(1-N)(通过安装程序,将启动分区信息与提示信息写入到这里。)
[781]当前显示行
[782]当前所选择的行
[783]字串显示颜色
[900]欢迎信息起始地址
[940]操作说明起始地址
[990]读盘错误提示起始地址
:7C00 FC CLD
:7C01 BE007C MOV SI,7C00
:7C04 BF0006 MOV DI,0600
:7C07