做U盘启动盘的问题(谁会写bootsector的代码)

bigbee 2004-10-11 09:51:18
小弟受命将一块U盘格式化成可启动的。基本思路经过一段时间的学习已经有了。即格式化中向盘写入MBR, DBR和一些必要的启动文件。我的BIOS也支持USB的启动。现在我在BIOS里选择USB ZIP或者USB HDD方式启动,插上我的U盘,可以观察到U盘已被正确识别,并且MBR起作用了,而在执行DBR中那段启动代码时出错了(我知道这点是因为打印出的语句就是DBR中包括的)。我想现在问题就出在这段DBR的启动代码上。可怜我现在还不太懂汇编,更看不懂这已经变成2进制文件的代码,不知道是在哪个条件上出错了。所以恳请哪位能施以援手,或许提供一段启动代码的汇编源程序(带注释最好)也能有所帮助。谢谢
...全文
334 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigbee 2004-10-13
  • 打赏
  • 举报
回复
ZivWang(王朝)实在是一语中第阿!我今天试了一下,把DBR写到0x20处,USB ZIP就成了。真是话不在多,而在精阿。好了,可以结贴了。
bigbee 2004-10-12
  • 打赏
  • 举报
回复
前人留下过一个format的函数,其中有以数组形式保存的DBR模板,然后根据当前U盘的大小修改部分数据就可以用了。当然那段boot code是不会去修改的。 txyj(猫G)提到的方法是指启动到DOS下,然后用format a; /s 将其格式化,然后就等于由系统为我们生成了正确的MBR, DBR是这个意思吗?
bigbee 2004-10-12
  • 打赏
  • 举报
回复
啥叫引导区是第32个?DBR在LBA=0x20处?我觉得不是这个问题
txyj 2004-10-12
  • 打赏
  • 举报
回复
如果你的主板支持usb设备启动,可以尝试如下:
插入u盘,重起机器,但不使用u盘启动,
启动到98dos下或2k,xp得故障恢复控制台下,不出意外,主板已将u盘映射为
一个盘符(maybe a: ),把它做成你想要得启动盘,然后,读出mbr,dbr。
当然系统必要的启动文件也要复制。
ZivWang 2004-10-12
  • 打赏
  • 举报
回复
USB zip 引导区好像是第32个
bigbee 2004-10-12
  • 打赏
  • 举报
回复
txyj(猫G) 莫急,50分给你留着。再等一下结帖。
bigbee 2004-10-12
  • 打赏
  • 举报
回复
今天早上依照txyj(猫G)的建议作了一下,真的成功了!我到DOS下,U盘被映射成D盘,于是我执行:format d: /s,之后就可以用USB HDD方式将这块U盘作为启动盘了。我拿我自己的另一块U盘作了个实验,也可以这样成为启动盘。现在USB HDD已经解决了。谁有办法解决US ZIP的启动呢?它的问题是系统一开始就不认同这是系统盘,提示错误:DOSK BOOT FAILURE. INSERT SYSTEM DISK AND PRESS ENTER. 看来应该在返回描述符时作些什么手脚。
rzsheng 2004-10-11
  • 打赏
  • 举报
回复
你是如何写DBR的?
万能启动u制作工具 FbinstTool v1.6 2010年9月更新 www.zzmxkj.cn Get From http://www.burgloader.com/bbs/index.php?topic=54.0 http://www.burgloader.com/bbs/index.php?topic=131.0 FbinstTool 1.602 测试版 for fbinst 1.6 【2010-09-15】 1.修正读取buldr内置菜单的一个小bug 2.修正版本号 3.根据bean大师的提示,完善“设置mbr参数”功能 【2010-09-10】 1.可以在win64位系统下使用 2.修正了备份分区表的一个bug(zxw提出) 3.拖入新的buldr时可以选择是否保留原buldr的内置菜单及prefix值 【2010-09-04】 1。添加右键打包文件夹为fba 2。右键fba解开到当前目录 3。右键ud里面的buldr可以修改prefix参数 4。添加直接编辑buldr的内置菜单(buldr 需是v5m及以上版本) 【2010-08-25】 修正bc12060101发现fbinst菜单的bug fbinst 1.6 正式版 v1: 支持windows vista/7(需要提升至管理员权限),现在格式化后remount分区,不需要弹出u。 support windows vista/7 (needs to run as administrator). It'd remount partition after format, no need to eject flash disk. v2: * 支持大的文件列表。当前缺省值是32640,最大可支持456960。 * 增加缺省启动文件。如果fb里没有配置菜单fb.cfg,则自动启动buldr。 * 支持使用符来表示设备,比如: fbinst F: info fbinst F: format (hdN)的形式依然支持,不过使用符更加直观。 * Support large file list. Default size is 32640, maximum size is 456960. * Support default boot file. If there is no fb.cfg, it'd boot buldr automatically. * Support the use of drive letter to represent disk drive. For example: fbinst F: info fbinst F: format v3: * 缺省列表使用最大值456960。 * format命令增加参数--chs,强制使用chs模式。这可以用于某些不能自动检测模式的bios。 * info命令新增输出format options,显示格式化参数。 格式化参数只有-p,-e,-l,--zip, --chs, --max-sectors的值,没有数据分区格式化的参数(它们无法自动检测)。而且,如果某一数值和缺省值相同时,将不显示。-l里显示的数值将上调到510的倍数(实际保存的数值是以扇区为单位的)。 这个版本里磁存储结构有较大改变,测试时请用附件里的buldr。附件里的grldr是比较旧的版本,如果需要最新版本的话,请使用#39里chenall的链接。 * Default list size set to 456960 * Add option --chs for format command, which force the boot loader to use chs mode. This option is useful for buggy BIOS that can't detect lba/chs mode properly. * Add "format options" output for info command, it shows the format option used to create the fb structure. Only -p,-e,-l,--zip, --chs, --max-sectors options are shown, options related to the data partition are not shown as they can't be detected properly. If some value is same as default, it's not shown. Moreover, the val
更新说明: 2017-02-04(yaya) Ls command: Empty Folder returns false. 2016-12-08(yaya) 修正lz4、vhd不显示解压缩进度指示。增加lzma解压缩进度指示。 2016-11-09(不点) 0x8205 bit 5 = 1: 使checkkey闲置循环停止指令。 2016-04-13(yaya) 支持动画菜单 setmenu --graphic-entry=类型=菜单行数=菜单列数=图形宽(像素)=图形高(像素)=菜单行间距(像素) 菜单项0的路径文件名 类型: 位0:高亮指定颜色 位1:高亮颜色翻转 位2:高亮显示线框 位7:背景透明(最好使用黑色背景) 文件名: *n.??? 格式 n=00-99 高亮颜色由 color HIGHLIGHT=0xrrggbb 指定。 字符可以使用任意字型、字高、颜色,可以辅以图标。 2016-03-25(yaya) 菜单字符可以使用不同字型。 例如:"七" 使用不同字型,将 .hex 文件中的 unicode 码 “4e03” 修改为 “0080”, 将菜单中的 "七" 修改为 “\X0080”。 2016-03-23(yaya) 增强 echo 函数功能。 例如:echo -e \x18 显示 UTF-8 字符 0x18。 echo -e \X2191 显示 unicode 字符 0x2191。 2016-03-15(yaya) 1.增加动画控制热键 F2:播放/停止。 2.增加动画控制位 0x835b,位0:0/1=停止/播放。 3.增加精简字库模式:--simp=起始0,终止0,...,起始3,终止3 中文可以使用 --simp= ,内置字库应当包含 DotSize=[font_h],['simp'] 例如:font --font-high=24 --simp= /24_24.hex DotSize=24,simp 不使用热键: 可以加载 32*32 unifont 全字库 使用热键: 可以加载 24*24 unifont 全字库 使用精简字库: 可以加载 46*46 汉字全字库 使用精简字库及热键:可以加载 40*40 汉字全字库 4.不再支持 bin 格式字库。 2016-03-03(yaya) 1.增加图像背景色设置方法。 splashimage --fill-color=[0xrrggbb] 作用之一,作为小图像的背景。 作用之二,直接作为菜单的背景(即不加载图像背景)。此时只设置字体的前景色即可。 2.增加动画菜单。 splashimage --animated=[type]=[delay]=[last_num]=[x]=[y] START_FILE 类型[type]:bit 0-3: 播放次数 bit 4: 永远重复 bit 7: 透明背景 type=00:禁止播放 播放n次:序列图像各显示n次,时间独占。可作为启动前导、序幕。 永远重复:序列图像无限循环,时间与菜单共享。可作为菜单里的动画。 背景透明:即抠像。要求4角像素为背景色。 背景色最好为白色或黑色,这样可以去除一些灰色杂波。若是彩色背景,则应当非常干净。 提醒:请以16进制方式输入。否则易错。 延迟[delay]:序列图像之间的延迟。单位是滴答,即1/18.2秒。 序列数[last_num]:序列图像总数(2位数,从1开始计数)。 偏移[x]、[y]:图像偏移,单位像素。 起始图像文件 START_FILE 命名规则:*n.??? n: 1-9 或 01-99 或 001-999。 3.增加固定图像的背景色可以透明。 splashimage [--offset=[type]=[x]=[y]] FILE 类型[type]:bit 7: 透明背景 2016-02-14(yaya) setmenu 函数增加菜单项目背景短/满参数(默认短) 2016-01-19(yaya) splashimage 函数增加图像起始偏移(默认0) 2015-08-20(yaya) 1.支持非

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧