ISO映像文件本身就是文件系统吗?


45

我正在尝试了解xxx.iso文件与块设备的其他方面(例如分区和文件系统)之间的关系。

人们通常将访问或.iso使用描述为“安装ISO”。

因此,换一种方式提出问题:如果我或某些软件想要将xxx.iso文件“挂载” 到USB设备上,是否必须具有一个完整的文件系统(例如FAT x或ext X)还是.iso文件(一旦处于“已挂载”状态)是一个较低级别的结构,其执行文件系统(甚至分区)所具有的相同/相似的作用?


15
请注意:在大多数情况下,术语“ ISO文件”是指包含光盘介质的ISO 9660标准中的文件系统的文件。例如,可以通过复制CD或DVD-ROM来获取ISO文件dd
Dubu

4
安装在USB上?您是说要让ISO内容在USB记忆棒的安装点下方显示为VFS树的一部分?你是说喜欢mount /dev/my_usb_stick /media/usb_stick && mount -o loop,ro foo.iso /media/usb_stick/some_dir吗?(Linux的mount命令支持loopmount选项来设置循环块设备,因为要像.iso一样挂载FS映像很常见。)
Peter Cordes

挂载ISO时,会将文件用作块设备。

Answers:


64

ISO文件不是文件系统。它包含一个文件系统。从使用的角度来看,它的功能与硬盘,USB设备或DVD的功能相同-您需要有一个挂载点,即文件系统中可以挂载其位置以获得内容的位置。


1
谢谢,那么,iso(一旦处于安装状态)会更类似于块设备或分区吗?-还是不可能画出直接的类比,因为iso完全是另一回事了?
the_velour_fog

@the_velour_fog这是一个很好的类比!
珍妮·D

19
无法写入的原因不是因为它是已装载的常规文件,而不是设备专用文件,而是因为文件系统驱动程序不支持它。如果映像包含另一个文件系统,例如FAT32或EXT2,而不是ISO9660,则可以读写。
rexkogitans '16

4
@rexkogitans:...或UDF,也称为ISO13346。这是可擦写CD-R使用的文件格式。
MSalters '16

1
@hobbs:USB记忆棒,HDD等也不需要分区。无分区的块设备有时称为“ SuperFloppy”。当您只对一个分区进行分区时,无需对分区进行分区。只是某些操作系统仅希望分区表存在,而不能直接在块设备上识别文件系统。例如,傻瓜数码相机中的嵌入式操作系统通常拒绝以SuperFloppy格式安装SD卡。
约尔格W¯¯米塔格

42

这里有三个独立的概念:

  • 块装置,它是代表一系列相等大小的数据块的物理或虚拟设备。HDD是块设备。数据CD也是如此。
  • 文件系统,它定义在表示一系列文件和目录和其它文件系统信息的块设备中存储数据的方式。ext3是一个文件系统,ISO9660也是。
  • 一个图像文件是一个数据块的设备上的副本,在文件的形式(在另一个文件系统)。图像文件可以有任何扩展名。.img常见。

.iso文件通常是一个图像文件一个的块设备含有ISO9660的文件系统。它包含CD上存储的数据的精确表示。类似地,您可以拥有一个.img文件(.ext3如果需要,可以调用它),该文件是包含ext3文件系统块设备映像文件。这是分发可启动USB或软盘映像的常用方法。名称是任意的,就是我们所说的包含ISO9660文件系统(或有时是UDF文件系统,更现代)的图像文件。.iso

您不能直接挂载映像文件,因为它们不是块设备,而仅仅是块设备中数据的副本。但是,Linux和其他OS具有称为循环设备的功能,该功能允许将图像文件作为块设备进行访问。要挂载ISO文件,首先要创建一个循环设备,该循环设备代表一个虚拟块设备,其内容与ISO文件相同。然后,您可以像安装物理CD一样,或像包含ext3文件系统的USB驱动器一样安装它。该mount命令可能会自动为您执行此操作,但是在后台它们是单独的步骤。

分区是一种将块设备分解为多个较小的逻辑块设备的方法。分区是可选的。在这方面,CD类似于未分区的USB驱动器或软盘,其中文件系统存储在整个设备上,没有分区表。因此,ISO文件不包含分区表。但是,没有什么可以阻止您在HDD分区上创建ISO9660文件系统的。当你这样做有分区,图像文件可以是单个分区或包含分区表的整个物理设备,但CD是不分区,所以区别是无关紧要的ISO映像。

你不具备挂载设备-为了获取其中所包含的文件-或图像文件。某些应用程序和库具有直接访问数据的能力,而无需使用操作系统。他们只是直接理解文件系统,并且具有模仿OS访问文件系统中文件时的行为的代码。这就是为什么存在一些工具可以显示ISO文件的内容,而无需通过操作系统实际挂载它的原因。挂载是一个操作系统概念,但这并不是访问块设备上数据的唯一方法。某些人可能会考虑以某种方式进行此“安装”的纯粹动作。

将设备(或通过回送设备的ISO文件)安装到的设备无关紧要。这就是在路径层次结构中要求操作系统显示设备内容的位置。在Linux上,通常会在一些已经挂载的文件系统上选择一个目录。但是,没有什么可以阻止您从CD引导并要求内核将其挂载为根文件系统。当然,由于ISO文件是一个文件,因此它可能首先存在于某些文件系统上,您必须将其安装在某个位置才能访问ISO。


11

不可以,ISO映像文件本身不是文件系统。就像一个分区可以包含一个文件系统,但不是一个文件系统一样,ISO映像文件也包含一个文件系统,但它不是一个文件系统。

但是您需要一个文件系统来完成两件事:

  • 一个存储.iso文件的地方(假设它不是一个闪亮的银色光盘)
  • 挂载目录,例如 /mnt/isotmp

之后,如果路径解析为/mnt/isotmp,则ISO映像文件系统的代码将进行解析,打开等操作。


不错,您所描述的安排类似于硬盘的安装方式,即在处进行了block device/partition/filesystem/安装/some/directory。那么我是否可以假设iso基本执行文件系统的功能?
the_velour_fog '16

我不会这样说。ISO文件包含一个文件系统。就像一个分区包含一个文件系统一样。您也不会说分区也是文件系统(我希望)
Anthon

这与说“ png文件包含图片但不是图片”有什么不同,即愚蠢而无用的区别?
Nick Matteo

@the_velour_fog:更准确地说,iso基本执行块设备的功能。
TMN
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.