如何将编译后的引导扇区放入USB闪存驱动器或磁盘?

13

我对操作系统是如何工作感兴趣,从POST启动过程到内核、GUI等方面。

好的,我必须从头开始:引导扇区

大多数教程只说明如何将您的.bin引导程序放入USB存储设备中供Linux用户使用。

但是,由于我正在使用XP系统,我想问如何将我的512字节的.bin文件正确地放置在我的USB设备上,这绝对不是通过资源管理器进行复制:D

2个回答

14

我经常使用的是针对Windows系统的dd工具。 http://www.chrysocome.net/dd

使用方法如下:

dd if=c:\my files\boot.bin of=\\.\z: bs=512 count=1

其中,'z:'是您挂载的USB驱动器的盘符,'if'是输入文件,'of'是输出设备,bs是块大小,count是要复制的块数。

我每个月都这样做来查看Haiku的开发进展情况。他们提供了写入USB驱动器的原始磁盘映像。

警告:如果驱动器字母搞错了,可能会破坏你的启动扇区,因此请先备份并熟悉使用dd工具。我曾经因不小心丢失了很多数据。


@Randomlnsano:你得到了我的+1,因为我从来不知道Windows上存在dd!太酷了! :) - t0mm13b
1
需要注意的是,这会写入到 Z: 映射的分区的开头,而不是 MBR(问题有点模糊)。如果要覆盖MBR引导扇区,则需要使用较新版本的 chrysocome dd 并使用 od 参数相对于物理设备的开头进行写入(而不仅仅是分区)。 这将覆盖 MBR。 dd if=c:\ my files\boot.bin od=z: bs=512 count=1 - Michael Petch
当您使用Windows格式化USB驱动器时,默认情况下会创建一个带有单个分区的硬盘等效物,并将该分区标记为可引导。Windows会编写一个充当链式加载器的MBR(主引导记录)。当您从该USB启动时,BIOS会加载MBR并跳转至它。MBR代码充当链式加载器,查找标记为可引导的分区,将分区的前512字节加载到内存位置0x0000:0x7C00,并跳转至该位置。分区引导扇区不知道它被链式加载,它认为BIOS直接加载它,就像它是真正的MBR一样。 - Michael Petch

0

也许你可以使用rawritewin来完成这项工作?

另一种方法是使用UNetBootIn,但从我的经验来看,它需要将ISO烧录到USB上...所以在你的情况下可能行不通,但你可以尝试创建一个ISO文件,准备写入到USB中...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接