首页
社区
课程
招聘
[讨论]大家的nasm boot loader的 U盘都是怎么设置的自启动MBR?
发表于: 2015-9-23 15:02 3036

[讨论]大家的nasm boot loader的 U盘都是怎么设置的自启动MBR?

2015-9-23 15:02
3036
nasm : 搭建可用的裸机U盘环境

实验对象 : 联想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
** 将启动扇区写成Dos7.1

插入U盘到裸机后,发现提示"Invaild ...", 忘记具体是啥了.
我在WinHex看到1#扇区末尾有同样的信息字符串。
将测试代码 jmp $  末尾有0x55aa, 编译后写入1#扇区。

再将U盘插入裸机后, 可以看到光标停在第一句提示后面不动, 说明1#扇区是这个MBR要读取的BOOT代码.

等一会, 在bochs中, 单步下这446个字节的MBR, 看看是否可以自己来写MBR.
如果可以的话, 再换只U盘时, 格式化U盘后(如果是格式化好的正常U盘, 连格式化都不用搞), 只要更换这446个字节的MBR内容,  和BOOT代码, 就可以做实验了.

mouseos老师,如果您看到这个帖子,将您的U盘自启动MBR生成的过程讲下好么? 谢谢.
您的x86/x64那本书上,没有详细讲这块.

而这块属于实验环境,如果搞不通,实验只能在bochs中做了.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//