我的目标很简单,标题说明了一切,但我尝试过的每一种方式都失败了。我已经阅读了各种网站上的说明(除了这里),它们似乎都缺少一些东西......这就是我所拥有的:
- 16 GB 闪迪 USB 3 驱动器。
- Debian Jessie 机器
- windows机器,macbook pro
虽然我可以使用 rufus 轻松创建可启动的 Windows 10 USB,但我的目标更具教育意义:我想了解发生了什么,以及我失败的原因是什么,如果可能的话,让它发挥作用。
当我尝试在终端中创建 Win10 映像时,我尝试了以下命令:
sudo dd if=Windows10.iso of=/dev/sdc1 bs=512k
我得到一个似乎安装在 Debian 上的分区,但在 Windows 和 Mac 上却无法识别。Gparted 显示: gparted 报告文件系统 比较未知,另一个正常工作的 USB 闪存驱动器(我有 4 个)读取如下: 在此处输入图像描述
我在某些地方读到您不应该输出到分区(sdc1)而是输出到驱动器(sdc),所以我尝试了这个:
sudo pv Windows10.iso | sudo dd of=/dev/sdc bs=5M
(对于那些熟悉的人来说,它是相同的命令,通过 dd 管道传输,并使用 sdc 代替)。正如您从 fdisk 中看到的那样,这似乎会破坏整个分区:我的终端输出显示了命令和 fdisk。
这很令人沮丧,但我决定重新开始。我重新启动,并运行以下命令
sudo umount /dev/sdc1
sudo wipefs -a /dev/sdc
sudo fdisk -l
sudo fdisk /dev/sdc
n, p, 1, [enter], [enter], t, 7, w
这应该格式化一个新分区并将其从默认(linux)更改为我需要的 ntfs 分区。然后我运行:
lsblk
并使用以下命令创建 NTFS 文件系统:
sudo mkfs -t ntfs /dev/sdc1
之后,我尝试运行 dd,但使用了一个附加选项:conv=fdatasync(有些人说这可以确保缓存中没有任何内容,并且可以解决这个问题)。
pv Windows10.iso | sudo dd of=/dev/sdc conv=fdatasync bs=512k
(我删除了字节大小以防出现问题)。不管我怎么做,我注意到以下几点:
- dd 确实写入文件和文件系统,它在 linux 中是可读的(我可以打开文件)但它没用, lsblk 和 gparted 都说那里什么都没有!
- 我选择 sdc1 还是 sdc 似乎只会影响驱动器损坏的严重程度。一个会损坏分区,而另一个会使整个驱动器看起来像未分配。
- 驱动器很好:我进入 Windows 并使用相同的“损坏”的 USB 驱动器,复制相同的文件并验证它可以启动并且工作正常。
请记住 dd 命令与gpartedlive一起使用。我运行了以下代码:
sudo wipefs -a /dev/sdc
sudo fdisk /dev/sdc
lsblk
sudo mkfs -t vfat /dev/sdc1
pv gparted-live-1.1.0-1amd64.iso|sudo dd of=/dev/sdc bs=4M conv=fdatasync
并获得了一个完全正常工作的 gparted 实时驱动器。这让我很困惑,所以我想我会寻求帮助。我知道如果我和鲁弗斯呆在一起就可以省去麻烦,但这不是简单的,而是要了解正在发生的事情。我知道 linux 上的一些 gui 工具可能会解决这个问题,但是,我希望尽可能使用旧的 unix 终端来解决这个问题。如果不可能,那么我想知道为什么。总结一下:
- 为什么它不工作?我究竟做错了什么?
- 为什么 dd 破坏了分区,但它似乎与 gparted 一起工作正常?
- 我在哪里可以了解更多关于将图像复制到闪存驱动器的这种不太常见的用法?
非常感谢您的帮助!你会为我节省更多的头痛时间!
Rufus 开发人员在这里。
太多人无法理解的方式,因为 Linux ISO 正在应用这种方法,但这本质上是一个MAJOR HACK CALLED 'ISOHYBRID',在大多数情况下,您不能简单地获取 ISO 映像并将其逐字节复制到一个 USB 驱动器,并期望它能够启动。
这是因为 ISO 格式和它使用的底层文件系统 (
ISO9660
或UDF
) 是专为光学引导而设计的,这与常规 HDD 或 USB 引导完全不同。一方面,光学介质,因此(常规)ISO 映像,没有分区表,这(通常)对于 HDD 或 USB 启动是必不可少的,而且它们(通常)也没有主启动记录,也就是MBR,这对于 BIOS 引导至关重要。这意味着,如果您将常规ISO(例如 Windows 1)以 1:1 的比例复制到磁盘上,然后尝试启动,将会发生以下情况:
0x55
0xAA
在 MBR 的最后 2 个字节中看不到指示磁盘可 BIOS 引导的序列。因此,它将无法在 BIOS 模式下启动该磁盘。UDF
或ISO9660
分区,因为即使它具有这些文件系统的驱动程序,您创建的结果磁盘也会缺少分区表MBR
或GPT
分区表。当引导普通磁盘时,UEFI 设计为首先查找分区,然后/efi/boot/bootx64.efi
在该分区上查找引导加载程序(例如)。因此,如果媒体上没有MBR
或GPT
分区表,这将是常规 ISO 的情况,那么 ISO 是否包含引导加载程序文件并不重要,因为 UEFI 固件将无法挂载它所在的分区上。因此,像 Rufus 这样的实用程序在从 Windows ISO(完全标准的光学媒体映像)创建可启动磁盘媒体时所做的是:
MBR
或作为文件系统(请注意,它使用的文件系统与 ISO 使用的文件系统完全不同)。GPT
FAT32
NTFS
MBR
使用,则MBR
在相关MBR
分区上定位辅助引导加载程序的一些代码旨在从该分区以磁盘模式启动 Windows 内核的执行。哦,它还确保0x55
0xAA
在末尾添加引导标记,MBR
以便 BIOS 将磁盘视为可引导磁盘。然后它还将 ISO 的内容复制到一个FAT32
或NTFS
分区上。GPT
使用,Rufus 会验证是否确实存在 UEFI 引导加载程序文件,例如/efi/boot/bootx64.efi
(好吧,实际上它会在您允许您选择 GPT 之前这样做,因为如果没有,尝试创建 GPT 可引导驱动器没有多大意义UEFI 引导加载程序),然后将其与其余 ISO 文件一起复制到一个FAT32
分区上,因为从FAT32
分区引导是 UEFI 的强制要求(但这并不意味着 UEFI 不能从NTFS
或者exFAT
如果你有相关的 UEFI 驱动程序,如果您有一个文件大于 4 GB 的 Windows ISO,它会派上用场,因为 FAT32 无法容纳此类文件)。现在,上述方法仅在辅助引导加载程序(即来自 Windows 且 Rufus 未修改的引导加载程序)被设计为支持光学和常规引导时才有效,这通常意味着它们需要同时处理
UDF
orISO9660
和FAT32
orNTFS
文件系统,以及从磁盘引导与从光学引导时出现的其他差异。但是微软确实为此设计了它的引导加载程序,这是明智之举,因为如果您的目标系统是 UEFI,这意味着您(通常,只要 4 GB 最大文件大小问题FAT32
不会引起丑陋的头脑) 不需要实用程序将 ISO 转换为可启动 USB,但您可以将该 USB 格式化为 FAT32 并将 ISO 文件复制到其中(文件复制,不是字节复制),并且您有一个可启动媒体。既然我们已经完成了上述所有内容,我可以咆哮并解释为什么我认为通常比这更聪明的 Linux 发行版维护者实际上正在对他们的用户造成一些伤害,即使他们正在尝试帮助他们:
几乎所有最近的 Linux 发行版都使用名为“IsoHybrid”的MAJOR HACK,有人设法找到一种方法,将
ISO9660
光学映像伪装成普通磁盘映像,带有分区表,MBR
以及一切......换句话说,大多数你现在发现的 Linux ISO 正在滥用ISO9660 文件系统,使它看起来像它从未设计过的样子:双磁盘和光学映像。显然,目标是创建一个也可以与
dd
命令一起使用的 ISO,即使 ISO 永远不能以这种方式工作。我同意,从理论上讲,这听起来很棒,因为能够将单个图像用于完全不同的用途对用户来说应该很好,但在实践中,这会导致经常被忽视的问题:ext
用作 顶部的“辅助”文件系统ISO9660
),这意味着许多正在创建第一次使用 Linux 的可引导驱动器,对于为什么他们无法再访问闪存驱动器的内容感到非常困惑。如果“IsoHybrid”还包括一个 EFI 系统分区 (ESP),那就更糟了,因为这些用户会觉得他们的驱动器的尺寸已经完全缩小了。如果你去 reddit 或其他地方,你会看到很多用户对他们的 USB 媒体发生了什么完全困惑的帖子,这并没有给人留下很好的 Linux 第一印象......FAT32
格式化分区来创建 UEFI 可启动媒体的选项,实际上,这应该始终是创建 UEFI 可启动驱动器的首选方法(因为与使用dd
命令相比,格式化分区然后复制文件的风险通常要小得多)。正因为如此,我们已经看到了一些导致 Manjaro、Ubuntu 用户体验不佳的问题......这实际上是我对“ISOHybrid”的主要争论点:它不应该成为放弃既定手段的借口创建可启动媒体!dd
......这实际上会导致 Windows 7 上的 BSOD(但这实际上是 Windows 错误而不是 ISOHybrid 问题)。尽管如此,对于创建可启动驱动器的 Windows 人员来说,这并不是最好的体验......dd
最后,因为“ ISOhybrids ”被呈现为好像它们是世界上最自然的媒体(它们当然不是),所以像你这样的人被引导相信每个 ISO 映像都可以使用比规则。这是非常不幸的,因为它造成了大量的用户困惑,一些 Linux 用户告诉想要创建 Windows 可启动媒体的人,他们应该能够使用dd
,而那肯定永远不会工作!此外,如果您选择 10 年前的任何 Linux ISO,我非常有信心您会发现几乎没有一个可以真正用于创建可启动媒体,dd
因为这种“IsoHybrid”实际上是最近的发展。据我所知,微软没有计划为他们的 Windows ISO 切换到 ISOHybrid 的“hack”,这意味着你不太可能用它
dd
来创建可启动的 USB 媒体,因此,如果您想从 ISO 创建 Windows 可启动媒体,您可以:NTFS
,并将 ISO文件提取到其中。现在,如果使用or ,您可能还需要做一些额外的工作......FAT32
exFAT
NTFS
exFAT
NTFS
或者FAT32
-exFAT
将无法工作,因为 Microsoft 从未为其发布 BIOS 引导加载程序),然后创建相关的引导加载程序链,从 MBR 引导代码到卷引导记录。实现起来实际上并不复杂,但它确实比从 ISO 文件 1:1 复制需要更多的工作。
希望这能回答你的问题。
dd
不是创建 Windows 可启动 USB 的正确工具。简单的方法是使用woeusb
.安装:
现在,包版本是
3.3.1
,如果包更新,该命令./setup-development-environment.bash
将打印当前版本,您应该在上面的命令中替换它。用法:
您可以使用 GUI,
woeusbgui
从终端运行。或者您可以使用 CLI:卸载 USB 设备(重要)。然后运行:
使用此处的见解作为寻找从Mac OS构建Windows Server 2019可启动 USB 驱动器的方法的动机。问题是您需要一个 FAT32 格式的 GPT 格式磁盘,并且您需要使用扩展来解决大约 4GB 最大文件大小的限制。我最初尝试使用实用程序- 但很快意识到磁盘格式不能用于 WinOS 启动。
wimlib-imagex
dd
在 MacOS 上创建 Windows Server 2019 可启动磁盘