U盘启动盘的烦恼--特怵

来源:百度文库 编辑:神马文学网 时间:2024/04/29 14:51:12
我一直把U盘做成USB-ZIP启动的。──最早是用的USB-HDD,在我那盗版windows2000里被认成"本地磁盘驱动器",换成USB- ZIP才是"可移动磁盘驱动器",这样看着才爽。。。。如今早就不用windows2000了。windowsXP里两者是看不出区别来的,都显示成"可移动磁盘"。
前几天同窗的启动光盘突然罢工了......后来发现他的康柏笔记本电脑只支持USB-HDD方式......然后发现USBoot工具的USB-HDD那一项是灰色的(Why?)......最后我决定DIY一个USB-HDD的U盘启动盘。
凭我多年的专业知识加上大胆猜测(这里自大多了一点:-P),USB-ZIP和USB-HDD两种方式的区别就在于分区与否。USB-ZIP就像一张软盘,第一个扇区就是FAT文件系统的引导扇;USB-HDD却像硬盘,第一个扇区是MBR+分区表,下一条磁道的第一个扇区才是第一个分区的引导扇区。从磁头、磁道、扇区到实际的闪存存储单元地址的转换,应该都是U盘的控件芯片负责的,计算机本身不知道U盘和一般的磁盘有什么区别。
所以我只要手工给U盘分了区,再在这个"小硬盘"上安装好系统就行了──就像装裸机一样。
1.在linux下"fdisk /dev/sda",只建一个主分区,设好引导标志和系统标志06(FAT16)。
2.复制一份DOS/windows系统的MBR上去。我的硬盘的MBR换成了GRUB的,但我曾经有先见之明地把原来的MBR备份到第31个扇区上了,呵呵,"dd if=/dev/hda bs=512 skip=30 of=~/temp.bin count=1 && dd if=~/temp.bin bs=446 of=/dev/sda count=1"。
3.用mkdosfs格式化成FAT16。
4.。。。。
前几步顺理成章很简单就做下来了,最后一步就是想办法把DOS系统弄进去──就是这一步,烦了我好几天也没想出办法来......
试过用dosemu模拟freedos的命令"format /s"和"sys",都提示什么什么错误,难道不能用于/dev/sda?......试过到windos下用winimage把软盘镜像转换格式再写进去,结果不能启动,不会是软盘启动盘不能直接倒到硬盘上吧......我还想到了干脆装一个MSDOS,后来又一想那还不如装windows98呢,可咱这么忙活半天不就是为了达到USBoot同样的目的:不用装多余的系统吗......
得了,不单干了,上网上找找吧......找来找去发现国内网站实在没什么有价值的东西──牛人当然有,可竟然还在研究什么"高度优化的中文超级启动软盘 "之类的,拜托,研究那些有什么实用价值,有时间还不如写几篇教程,没准还有人看看呢......也罢,咱们价值观不同。。。。
找到了老外的一篇"Bootable USB Keys"(http://www.marlow.dk/usbkeys),呵呵,人家对我做过的工作做了相当程度的认可嘛,知音相见恨晚啊;-)──可惜也没写如何在linux下做第4步(真的是很简单的一步,可是我不知道怎么做,唉!难道是我用的debian testing的dosemu或freedos的bug?──我比较喜欢推卸责任。)。。。。用他介绍的"Memorykey Tools"的工具MBRTool去windows下试试........................
这事从开始到现在已经有几天了,现在我已经把我的U盘做回USB-ZIP启动了。从理论上讲毫无问题,实践起来却是困难重重──我到现在也不明白为什么,不会是我的电脑根本就不支持USB-HDD启动吧?我换过一次主板,是同型号的不是同一批,换之前那块是支持的。。。。老外的MBRTool不应该是骗人的,这么说来我自己前几次失败的实验也不一定完全不对了。
要想弄明白真相,我只想到了一个办法,就是用虚拟机跟踪调试,bochs一类的。我仅仅在学汇编时看过MBR代码,唉,这下任重道远了。。。