Cat如何/为什么将可启动ISO写入设备


15

我最近发现,只需使用cat(或dd),就可以从ISO文件创建可引导USB密钥。

我找不到有关此工作原理的任何信息。为什么会:

cat my.iso > /dev/sdb && sync

获取该文件并将其包含的所有文件(以可启动格式)写入设备?


我从来没有想过要用cat到位的dd制作liveUSBs时
罗布

3
它在实时Tor图片“ Tails”的说明中。我做了一个小小的谷歌搜索(在这里问之前),似乎dd是人们用来做这种事情的东西,但是cat现在似乎是首选的工具。我想这很容易,因为您不必费心为输入/输出详细信息指定命名参数。

Answers:


14

ISO文件是完整的格式化文件系统映像。所有catdd所做的就是将该文件系统映像逐位复制到目标介质。

幕后没有魔术。预先完成了ISO文件系统的准备工作(通常是通过专用工具进行的)。所有cat要做的就是写出该字节集合。它根本不解释它.iso,也根本不理解它试图创建可引导的可移动介质。
它确实需要内核和设备驱动程序的适当支持才能write在该介质上工作。由于可写光学介质的操作方式与传统硬盘驱动器不完全相同,因此有些“魔力”还在继续。但是,这种魔术并不涉及解释ISO文件的内容。

您可以.iso直接挂载文件,而无需使用循环挂载将其刻录(如果您的操作系统上有这种情况)。同样,您可以创建一个包含例如ext4文件系统的文件,然后cat将其分配给分区。


1
然后只需确保数据已真正写入分区(而不是只
缓存

@yuyichao sync应该可以解决这个问题,对吧?编辑:我才意识到我回复了一个6岁的评论
Manchineel

5

之所以有效,是因为iso映像是使用进行处理的isohybrid,它将一个普通的syslinux引导加载程序安装到iso映像中。这是可能的,因为iso9660通常不使用映像的前几个扇区,因此可以在其中放置或多或少的普通硬盘引导加载程序。当刻录到光盘上时,它将被忽略,并且BIOS使用常规的el torito cdrom引导方法引导光盘。将映像放在闪存驱动器上时,将加载syslinux引导扇区。

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.