折腾了一下,加强U盘的启动能力

三 2nd, 2009

今天新买的群联芯片的 8G U盘启动方面遇到一点问题。过程中觉得很奇怪,当然事实上是不奇怪的,只是目前bios和千差万别导致如此了。

首先是发现我的笔记本与公司电脑不一样,调好一边另一边启不动。后来发现grub4dos的启动能力强点。
就用它了,搞定一个 case。

然而又发现,在公司同样的dell 740版电脑,A机器进BIOS发现启动可选USB-HDD,而USB-ZIP旁边标示着not present.
B机器进BIOS,情况就反过来了,USB-ZIP可用,而USB-HDD则标为not present。
这两台机器,只有BIOS的版本不一样,其它硬件都一样。因为其中一台是刷过BIOS的。

这两种不同的情况导致了严重的后果。USB-ZIP的那台机器无法启动。显示
Remove disks or other media.
Press any key to restart
经查,这句话位于活动活区的第一扇区。把它改为其它值后发现,提示信息跟着变化。

这说明,bios直接启动了第一扇区的代码,未经过mbr.(mbr上装着grub4dos)

接下来就简单了,修改一下这个第一扇区的代码。还是老办法,0×40处的0×00一定要改为0×80,这是非软盘启动的基础。这个字节表示启动的介质类型。不是软盘就得填0×80。还有就是0xe6的四个字节跳转指令全部nop掉。强制用LBA方式(扩展int 13)读盘。这样不同BIOS的CHS参数不一样的问题 可以被绕过。此外0×170处的NTLDR改为GRLDR,强制启动grub4dos.

修改完成后,这个盘就可以在两台机器上都启动了。

标签:
  1. qdk0901
    三 10th, 200920:20

    orz
    我也去试试。

  2. Nature Inspired
    一 2nd, 201209:02
    #2
*