实验对象 : 联想G480 + TOSHIBA TransMemory (7.2 GB, USB)
上周直接向U盘0扇区,写程序是可以有实验效果的. 这周,突然就不行了.
然后一直琢磨,怎样搞一个能用的U盘实验环境.
实验环境这块还挺重要的,要不实验都搞不下去了。
很多人都是在bochs下做实验,我是想在bochs下调试通了,再搬到U盘上启动本本, 有了效果,那才是真实的.
书上讲的启动原理,是BIOS将MBR加载到0x7c00, 然后由MBR再从63#扇区读取我们自己的BOOT代码.
但是不同的MBR, 功能不同, 她到底要从哪个扇区加载我们的BOOT代码, 这个就难说了. 从我这看到的情况是,加载的1#扇区.
这和所用的MBR生成者很有关系.
经过实验, 终于可以继续往下搞了.
我觉得最终那个446字节的MBR代码,还是要我们自己来写,比较靠谱. 现在先用工具生成的.
实验流程:
* 用WinHex将U盘全部填充为0.
* 用UltraISO, 写入硬盘映像功能.
** 将U盘格式化, 参数FAT32, 扇区4096Byte, 不选择快速格式化.
** 将MBR重建, 参数 USB-HDD
插入U盘到裸机后,发现错误提示, 忘记具体是啥了.
我在WinHex看到1#扇区末尾有同样的信息字符串。
将测试代码 jmp $ 末尾有0x55aa, 编译后写入1#扇区。
再将U盘插入裸机后, 可以看到光标停在第一句提示后面不动, 说明1#扇区是这个MBR要读取的BOOT代码.
等一会, 在bochs中, 单步下这446个字节的MBR, 看看是否可以自己来写MBR.
如果可以的话, 再换只U盘时, 格式化U盘后(如果是格式化好的正常U盘, 连格式化都不用搞), 只要更换这446个字节的MBR内容, 和BOOT代码, 就可以做实验了.