xxx.iso
我试图了解文件与块设备的其他方面(例如分区和文件系统)之间的关系。
人们通常将访问或制作.iso
可用文件描述为“安装 ISO”。
因此,换句话说:如果我或某个软件想要将文件“挂载”xxx.iso
到 USB 设备上,是否需要有一个包含文件系统的预先存在的分区(例如 FAT)X或分机X)或者.iso
文件 - 一旦处于“已安装”状态 - 执行与文件系统(甚至分区)相同/相似的角色的较低级别构造?
答案1
ISO 文件不是一个文件系统。它包含一个文件系统。从使用的角度来看,它的功能与硬盘、USB 设备或 DVD 相同 - 您需要有一个安装点,即文件系统中可以安装它以获取内容的位置。
答案2
这里有三个独立的概念:
- A块设备,它是表示一系列大小相等的数据块的物理或虚拟设备。 HDD 是块设备。数据CD 也是如此。
- A文件系统,它定义了一种在块设备中存储数据的方式,该块设备表示一系列文件和目录以及其他文件系统信息。 ext3 是一个文件系统,ISO9660 也是一个文件系统。
- 一个图像文件是块设备上数据的副本,以文件的形式(在另一个文件系统上)。图像文件可以有任何扩展名;
.img
常见。
文件.iso
通常是一个图像文件的一个块设备含有一个ISO9660 文件系统。它包含 CD 上存储的数据的精确表示。类似地,您可以有一个.img
文件(.ext3
如果您愿意,可以调用它)图像文件的一个块设备含有一个ext3 文件系统。这是分发可启动 USB 或软盘映像的常见方法。名称是任意的,.iso
就是我们所说的包含 ISO9660 文件系统(或者有时是更现代的 UDF 文件系统)的映像文件。
您无法直接挂载映像文件,因为它们不是块设备,而只是块设备中数据的副本。然而,Linux 和其他操作系统有一个称为循环设备它允许将图像文件作为块设备进行访问。要挂载 ISO 文件,首先创建一个循环设备,它代表与 ISO 文件内容相同的虚拟块设备。然后您可以像安装物理 CD 一样安装它,或者像安装包含 ext3 文件系统的 USB 驱动器或其他任何东西一样安装它。该mount
命令可能会自动为您执行此操作,但在幕后它们是单独的步骤。
分区是一种将块设备分解为多个更小的逻辑块设备的方法。分区是可选的。在这方面,CD 类似于未分区的 USB 驱动器或软盘,文件系统存储在整个设备上,没有分区表。因此 ISO 文件不包含分区表。不过,没有什么可以阻止您在 HDD 分区上创建 ISO9660 文件系统。当你做如果 CD 具有分区,则映像文件可以是单个分区的文件,也可以是包括分区表在内的整个物理设备的文件,但 CD 没有分区,因此这种区别与 ISO 映像无关。
你不有安装设备 - 或图像文件 - 以便访问其中包含的文件。一些应用程序和库能够直接访问数据,而不涉及操作系统。他们只是直接理解文件系统,并拥有模仿操作系统访问文件系统中的文件时所做操作的代码。这就是为什么存在一些工具可以向您显示 ISO 文件的内容,而无需通过操作系统实际安装它。挂载是一个操作系统概念,但它并不是访问块设备上数据的唯一方法。有些人可能会认为只是以某种方式进行“安装”的操作。
您将设备(或通过环回设备安装的 ISO 文件)安装到什么位置无关紧要。这正是路径层次结构中要求操作系统显示设备内容的位置。在 Linux 上,您通常会在某些已安装的文件系统上选择一个目录。但是没有什么可以阻止您从 CD 启动并要求内核将其安装为根文件系统。当然,由于 ISO 文件是一个文件,因此它可能首先存在于某个文件系统上,您需要将其安装在某个位置才能访问 ISO。
答案3
不,ISO 映像文件本身并不是一个文件系统。就像分区一样包含一个文件系统,但不是文件系统,ISO 映像文件是否包含文件系统,但它不是文件系统。
但你需要一个文件系统来做两件事:
- 存储 .iso 文件的位置(假设它不是闪亮的银色光盘)
- 挂载目录,例如
/mnt/isotmp
之后,如果路径解析为 下的某个路径/mnt/isotmp
,ISO 映像文件系统的代码将执行解析、打开等操作。