如何使用DD命令行工具在USB记忆棒上创建MBR


16

好的,我正在尝试从运行Lion的Mac的USB密钥上创建BOOTABLE Windows7映像。我的图像是.iso格式。我试过了:

sudo dd if=/Users/myusername/Win7.iso of=/dev/disk1 bs=1m

这样成功地写入了文件,但在Mac上的DISK UTILITY中除外,它显示的分区类型为GUID分区表,而不是“ Master Boor Record”。在我的Vista计算机上引导密钥会产生错误“ USB设备上没有引导扇区”

据我所知,DD命令中的bs = 1m应该为引导扇区保留了1 MB,但是由于某种原因,USB密钥的此区域未正确设置,因此无法引导

如何解决此问题,或正确使用dd写入可启动的CD映像,使其现在成为可启动的USB驱动器?

注意:在我阅读的说明中,他们建议在使用DD之前将Win7.iso重命名为Win7.dmg,这对我来说绝对没有意义,因此我没有这样做。我现在可以尝试执行此步骤,但是将映像写入USB驱动器需要花费1.99个小时,因此在此处反复试验会产生巨大的损失。谢谢。


您是否已验证.iso文件具有有效的引导扇区?如果直接从可启动CD中翻录,则可能出了问题,因为CD具有2048字节的扇区,而大多数闪存驱动器具有512字节的扇区。
LawrenceC

仅供参考。DD是用于隐藏和复制文件的实用程序。它对分区表或引导扇区一无所知。bs = 1m表示一次最多可读写1兆字节。如果要在驱动器的前面留出空间,则可以使用seek = BLOCKS。其中块=扇区大小缺省值为512
马特ħ

@MattH您写了“FYI。DD是用于隐藏和复制文件的实用程序。” <---这是完全错误的,您知道的。至于它所知道的,您会说“它对分区表一无所知”。可以肯定的是,它仍然可以影响它们。这是关于从分区或整个硬盘驱动器而不是文件复制原始字节,并且您知道它。复制的内容可以包括文件,并且(我不是专家),我想它会包含一个分区表。
barlop

dd听起来不像是将cd iso转换为usb映像的正确工具。有很多方法可以将win7 iso插入USB,但我不认为dd是其中之一!至少没有人会正常使用!如果您有两个相同的硬盘驱动器,并且想要将一个硬盘复制到另一个硬盘,则dd / ddrescue很好。或者硬盘驱动器出现一些错误,并且您想在其他映像软件无法执行的情况下对其进行映像。
barlop

@barlop-dd手册页-“复制文件,并根据操作数进行转换和格式化。”
马特H

Answers:


7

在执行dd之前,使用磁盘工具选项将分区类型设置为Master Boot Record。

在此处输入图片说明 在此处输入图片说明


4
这失败了。我知道您的屏幕快照中描述的设置,但是先执行此操作,然后执行DD,结果图像仍找不到引导扇区。DD命令似乎无论如何都会破坏磁盘工具,似乎是在某种非常低级的原始模式下进行写入。我希望这能奏效,但老实说没有,而且愚蠢的是磁盘工具不支持.iso映像进行还原。
拉娜·米勒

5

尝试从OSX创建可引导USB磁盘时,我遇到了类似的问题。问题是UnetBootin没有在USB磁盘上正确设置主启动记录。您必须使用Disk Util和fdisk手动执行此操作。

  1. 使用正确的MBR在“磁盘工具”中格式化磁盘

    1. 打开磁盘实用程序
    2. 选择USB设备
    3. 单击分区
    4. 在分区布局中选择1个分区
    5. 在选项中选择“主启动记录”
    6. 在格式类型中选择MS-DOS(FAT)。
    7. 单击“应用”,然后单击“分区”
    8. 关闭磁盘实用程序
      这将擦除USB磁盘并使用正确的启动记录进行设置
  2. 从SysLinux项目安装MBR二进制文件

    1. 使用命令行diskutil查找USB驱动器的设备名称。
      diskutil列表
    2. 使用命令行卸载USB驱动器。注意:请确保将设备引用(在我的情况下为/ dev / SOMEdisk2)与上一步中标识的USB密钥的正确引用交换-每台机器都会有所不同。
      diskutil卸载磁盘/ dev / SOMEdisk2
    3. 将分区标记为活动,然后再次卸载
      须藤fdisk -e / dev / SOMEdisk2
      打印
      1
      写
      打印
      出口
      diskutil卸载磁盘/ dev / SOMEdisk2
    4. 下载Syslinux并解压缩mbr.bin文件
    5. 安装MBR
      须藤dd conv = notrunc bs = 440 count = 1 if = mbr.bin of // dev / SOMEdisk2
      注意:如果您需要有关步骤4和5的进一步帮助,请参阅我的完整说明
  3. 使用UnetBootin安装操作系统安装文件

    1. 下载并安装UnetBootin(如果尚未安装)
    2. 加载应用程序,选择您的首选发行版,然后单击“确定”。
    3. 完成后,弹出USB密钥并使用它

完整说明


保罗您好,如果您只是发布一个链接,请保持友好,并添加更多内容。如果您不介意,我会添加您的分步说明。另外,您可以还原编辑
nixda 2013年

没问题,我可以看到,这样可以更快/更轻松地找到答案,因此下次我将这样做-感谢您为我做的事情:)
Paul Maunders 2013年

syslinux zip中有3个mbr.bin,我应该使用哪一个?
Olivier Lalonde 2014年

只需使用标准的syslinux-5.00 / mbr / mbr.bin
Paul Maunders 2014年

它对我不起作用。不过,我仍然收到“非系统磁盘”消息。
浪费

1

使用主启动记录(MBR)格式化USB密钥

  • 在终端:diskutil列表中

  • 注意您的USB密钥的名称(我的名称是/ dev / disk1)

  • 在终端中:diskutil deleteDisk MS-DOS “ WINDOWS10” MBR / dev / disk1

  • 用您的USB密钥名称替换/ dev / disk1

挂载Windows 10磁盘映像

  • 在磁盘实用程序中:选择文件›打开磁盘映像›选择.iso

  • 在左窗格中:单击新安装的映像

  • 在右侧窗格中:选择名称并复制:类似于CCSA_X64FRE_FR-FR_DV5

将磁盘映像复制到WINDOWS10 USB密钥

  • 在终端中:cd / Volumes

  • 在终端中:cp -R CCSA_X64FRE_FR-FR_DV5 / WINDOWS10

  • 将示例中的映像名称替换为磁盘映像的名称

  • 最后的斜杠(在示例中为DV5之后)很重要

  • 复制到USB 2.0 usb密钥需要90分钟以上,没有进度指示器


0

此方法不使用dd,我也没有对其进行测试。

您应该能够使用UNetBootIn将ISO中的文件系统传输到USB驱动器。UNetBootIn是一个开放源代码,跨平台的实用程序,用于将可引导CD / DVD映像传输到USB驱动器。

运行UNetBootIn(在Windows,Mac OS X和Linux上运行),然后选择Disk Image单选按钮。然后ISO从下拉菜单中选择(默认是ISO),然后将ISO文件的路径放入path字段。从那里选择所需的USB驱动器以将其传输到该驱动器,然后单击“确定”。

在此处输入图片说明


2
我对其进行了测试,似乎可以正常工作,找到了引导扇区,但是它警告“操作系统缺失”。我不确定我使用的图像是否有问题,但我对此表示怀疑。不过,由于它似乎确实可以正确地写入引导扇区,因此还要多使用它。
拉娜·米勒

@LanaMiller我在使用Windows 7 Professional x64的USB记忆棒启动时遇到了相同的错误,您设法解决了吗?
克里斯·托普

0

刚刚在这里找到答案

# fdisk /dev/sdY

create single partition type 7+bootable partition

# mkfs.ntfs -f /dev/sdY1
# ms-sys -7 /dev/sdY

# mount -o loop win7.iso /mnt/iso
# mount /dev/sdY1 /mnt/usb
# cp -r /mnt/iso/* /mnt/usb/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.