只需将文件重新命名即可。任何以
.iso
扩展名的文件都可以安全地重命名为
.img
扩展名。
简而言之
ISO与IMG
原始磁盘映像是一个二进制文件,它包含存储设备上存储的二进制数据的逐扇区二进制副本。原始磁盘映像是源介质的完整快照,包括MBR、GUID或Apple分区表。
ISO映像是一个原始磁盘映像,它包含光盘上存储的二进制数据的逐扇区副本。ISO映像包含以ISO-9660文件系统格式化的光盘的二进制数据。
ISO映像是原始磁盘映像的一个子集。ISO映像(.iso
扩展名)可以重命名为原始磁盘映像文件(.img
扩展名),但反过来并不自动成立,除非磁盘映像包含ISO-9660格式化的数据。包含ext4格式化数据的原始磁盘映像不是ISO映像。
然而,通常情况下,如果ISO映像包含MBR引导扇区或ESP引导分区,它们会被用作可启动介质。BIOS/UEFI固件将能够执行引导加载程序代码并启动系统。
我下载了一个Ubuntu 22.04可启动的ISO文件,用于快速演示,探测文件类型显示为:
root@ubuntu:~# file ./ubuntu-22.04-desktop-amd64.iso
ubuntu-22.04-desktop-amd64.iso: DOS/MBR boot sector; GRand Unified Bootloader, stage1 version 0x79, boot drive 0xbb, stage2 address 0x8e70, 1st sector stage2 0xb8db31c3, stage2 segment 0x201
ISO镜像使用了GPT(GUID分区表)布局,其中包含一个保护MBR。保护MBR包含了第一阶段引导加载程序的引导代码,这是一个小型可执行代码,用于加载第二阶段引导加载程序(即GRUB),负责在传统BIOS引导过程中加载内核。
第二阶段引导加载程序存储在ESP(EFI系统分区)中,具有符合UEFI规范的新型计算机可以通过探测磁盘来直接执行第二阶段引导加载程序。
保护MBR还包含一个分区表,定义了一个大小为整个磁盘的存根分区。这样可以防止不理解GPT布局的软件将磁盘视为空白。
探索镜像内容
要探索镜像的内容,我们可以将ISO镜像附加到一个循环设备上。
循环设备是一个块设备,它将其数据块映射到文件系统中常规文件或另一个块设备的块上,而不是物理存储设备的块。这对于为存储在文件系统中的原始镜像提供块设备非常有用。
你可以使用
ls -l /dev/loop*
命令列出循环设备。特殊字符设备
/dev/loop-control
是循环设备的内核驱动程序。它用于动态查找可用的循环设备,并向系统添加和删除循环设备。
将ISO镜像附加到可用的循环设备上:
root@ubuntu:~# losetup -f --show -P ./ubuntu-22.04-desktop-amd64.iso
/dev/loop0
列出分区:
root@ubuntu:~# fdisk -l /dev/loop0
Disk /dev/loop0: 3.41 GiB, 3654957056 bytes, 7138588 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A09DB2B8-B5F6-43AE-AFB3-91E0A90189A1
Device Start End Sectors Size Type
/dev/loop0p1 64 7129427 7129364 3.4G Microsoft basic data
/dev/loop0p2 7129428 7137923 8496 4.2M EFI System
/dev/loop0p3 7137924 7138523 600 300K Microsoft basic data
挂载 ISO-9660 和 EFI 分区:
root@ubuntu:~# mkdir -p /mnt/{iso,esp}
root@ubuntu:~# mount -o ro /dev/loop0p1 /mnt/iso
root@ubuntu:~# mount /dev/loop0p2 /mnt/esp
注意:ISO-9660是一个只读文件系统,因此分区必须使用“ro”选项挂载。
您可以使用以下命令验证已挂载的文件系统:
root@ubuntu:~# df -T /dev/loop0p{1,2}
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/loop0p1 iso9660 3564682 3564682 0 100% /mnt/iso
/dev/loop0p2 vfat 4214 3222 992 77% /mnt/esp
卸载分区并释放循环设备,请运行以下命令:
root@ubuntu:~# umount loop0p{1,2}
root@ubuntu:~# losetup -d /dev/loop0
hdiutils
),要么只是建议将.iso重命名为.img(我怀疑这是否是正确的方法)。 - Marius Hofert