Ubuntu24中ISO文件制作工具

Ubuntu24中ISO文件制作工具

技术背景

Windows系统中习惯使用WinISO整理自己的归档资料,最近使用Ubuntu系统过程中有同样的诉求,Genisoimage工具中的mkisofs命令就是一个比较不错的选择。虽没有WinISO界面化完美,但使用命令配带自己定义的参数,反倒是更加灵活方便。

注:Ubuntu中的WinISO的替代方案

实现过程

  • 安装 genisoimage工具
bash 复制代码
sudo apt-get install genisoimage
  • mkisofs命令制作iso文件
bash 复制代码
sudo mkisofs -r -R -J -iso-level 2 -input-charset UTF-8 -o /test.iso /home/yunxi/

执行结果:将/home/yunxi/路径下的所有文件整理生成名称为test.iso的文件,存放在根路径 / 下。

less 复制代码
参数说明:
-r:保留源文件
-R:以启用 Rock Ridge 扩展,确保文件系统符合 ISO 9660 标准
-J:用于启用 Joliet 扩展
-iso-level:设置ISO9660一致性等级,范围为1到4。
-input-charset:输入字符集,本例中为UTF-8
-o:输出文件,本例中为:/test.iso
最后一个参数为整理路径:/home/yunxi/
  • 命令参数说明
    查看命令参数
bash 复制代码
mkisofs -help

具体参数说明如下:

less 复制代码
-nobak                      不要包含备份文件
-no-bak                     不要包含备份文件
-abstract FILE              设置抽象文件名
-A ID, -appid ID            设置应用程序ID
-biblio FILE                设置书目文件名
-cache-inodes               缓存inode(需要检测硬链接)
-no-cache-inodes            不要缓存inode(如果文件系统没有唯一的单元)
-check-oldnames             从旧会话中检查所有导入的ISO9660名称
-check-session FILE         检查以前会话中的所有ISO9660名称
-copyright FILE             设置版权文件名
-debug                      设置调试标志
-b FILE, -eltorito-boot FILE      设置El Torito启动映像名称
-eltorito-alt-boot          开始指定替代El Torito引导参数
-B FILES, -sparc-boot FILES 设置sparc启动映像名称
-sunx86-boot FILES          设置sunx86启动映像名称
-G FILE, -generic-boot FILE 设置通用引导映像名称
-sparc-label label text     设置sparc启动磁盘标签
-sunx86-label label text    设置sunx86启动磁盘标签
-c FILE, -eltorito-catalog FILE    设置El Torito引导目录名称
-C PARAMS, -cdrecord-params PARAMS 来自cdrecord的魔术参数
-d, -omit-period            忽略来自文件名的尾随句点(违反ISO9660)
-dir-mode mode              使所有目录的模式成为此模式。
-D, -disable-deep-relocation 禁用深度目录重定位(违反ISO9660)
-file-mode mode             使所有普通文件的模式成为此模式。
-f, -follow-links           跟随符号链接
-gid gid                    让所有文件的群组拥有者成为这个gif。
-graft-points               允许使用嫁接点作为文件名
-root DIR                   为所有新文件和目录设置根目录
-old-root DIR               在前一个搜索文件的会话中设置根目录
-help                       打印选项帮助
-hide GLOBFILE              隐藏ISO9660 / RR文件
-hide-list FILE             带有ISO9660 / RR文件列表的文件要隐藏
-hidden GLOBFILE            在ISO9660文件上设置隐藏属性
-hidden-list FILE           带有隐藏属性的ISO9660文件列表文件
-hide-joliet GLOBFILE       隐藏Joliet文件
-hide-joliet-list FILE      带有Joliet文件列表的文件要隐藏
-hide-joliet-trans-tbl      从Joliet树隐藏TRANS.TBL
-hide-rr-moved              在Rock Ridge树中将RR_MOVED重命名为.rr_moved
-gui                                切换GUI的行为
-i ADD_FILES                  不再支持
-input-charset CHARSET      用于文件名转换的本地输入字符集
-output-charset CHARSET     输出文件名转换字符集
-iso-level LEVEL            为ISO9660版本2设置ISO9660一致性等级(1..3)或4
-J, -joliet                 生成Joliet目录信息
-joliet-long                允许Joliet文件名为103个Unicode字符
-jcharset CHARSET           Joliet目录信息的本地字符集
-l, -full-iso9660-filenames ISO9660名称允许完整的31个字符文件名
-max-iso9660-filenames      允许ISO9660名称的37个字符文件名(违反ISO9660)
-allow-leading-dots         允许ISO9660文件名以'。'开头。 (违反ISO9660)
-ldots                      允许ISO9660文件名以'。'开头。 (违反ISO9660)
-L, -allow-leading-dots     OLD Pre-POSIX.1-2001选项 - 不要使用-L
-log-file LOG_FILE          将消息重定向到LOG_FILE
-m GLOBFILE, -exclude GLOBFILE 排除文件名称
-exclude-list FILE          带有要排除的文件名列表的文件
-pad                        填充输出到32k的倍数(默认)
-no-pad                     不要将输出填充到32k的倍数
-M FILE, -prev-session FILE 将路径设置为前一个会话进行合并
-dev SCSIdev                将路径设置为前一个会话进行合并
-N, -omit-version-number    忽略ISO9660文件名的版本号(违反ISO9660)
-new-dir-mode mode          创建新目录时使用的模式。
-force-rr                   禁止先前会话的自动Rock Ridge检测
-no-rr                      禁止从以前的会话中读取Rock Ridge属性
-no-split-symlink-components 禁止拆分符号链接组件
-no-split-symlink-fields    禁止拆分符号链接字段
-o FILE, -output FILE       设置输出文件名称
-path-list FILE             带有要处理的路径名列表的文件
-p PREP, -preparer PREP     设置音量准备
-print-size                 打印估计的文件系统大小并退出
-publisher PUB              设置卷发布者
-P PUB, -publisher PUB      OLD Pre-POSIX.1-2001选项 - 不要使用-P
-quiet                      安静地运行
-r, -rational-rock          生成合理化的Rock Ridge目录信息
-R, -rock                   生成Rock Ridge目录信息
-s TYPE, -sectype TYPE      将输出扇区类型设置为数据/ XA1/生
-sort FILE                  根据FILE中的规则对文件内容位置进行排序
-split-output               将输出分割成约。 1GB大小
-stream-file-name FILE_NAME 设置流文件ISO9660名称(包括版本)
-stream-media-size #        在扇区中设置CD媒体的大小
-sysid ID                   设置系统ID
-T, -translation-table      为不了解长文件名的系统生成翻译表
-table-name TABLE_NAME      翻译表文件名
-ucs-level LEVEL            设置Joliet UCS等级(1..3)
-udf                        生成UDF文件系统
-dvd-video                  生成符合DVD-Video的UDF文件系统
-uid uid                    让所有这些文件的所有者。
-U, -untranslated-filenames 允许未翻译的文件名(用于HPUX和AIX - 违反ISO9660)。 Forces -l,-d,-N,-allow-leading-dots,-laxable-filename,-allow-lowercase,-allow-multidot
-relaxed-filenames          允许7位ASCII,小写字符除外(违反ISO9660)
-no-iso-translate           不要翻译非法ISO字符'〜',' - '和'#'(违反ISO9660)
-allow-lowercase            除了当前字符集外,还允许使用小写字符(违反ISO9660)
-allow-multidot             允许多个点的文件名(例如.tar.gz)(违反ISO9660)
-use-fileversion LEVEL      使用文件系统的文件版本号
-v, -verbose                详细信息
-version                     显示版本
-V ID, -volid ID            设置卷ID
-volset ID                  设置音量设置ID
-volset-size #              设置卷大小
-volset-seqno #             设置卷序列号
-x FILE, -old-exclude FILE  排除文件名(不建议使用)
-hard-disk-boot             引导映像是硬盘映像
-no-emul-boot               启动映像是"无模拟"映像
-no-boot                    启动映像不可启动
-boot-load-seg #            设置启动映像的加载段
-boot-load-size #           设置负载扇区的数量
-boot-info-table            用信息表修补引导映像
-XA                         生成XA目录属性
-xa                         生成合理化目录属性
-z, -transparent-compression 启用文件的透明压缩
-hfs-type TYPE              设置HFS默认的TYPE
-hfs-creator CREATOR        设置HFS默认CREATOR
-g, -apple                  添加Apple ISO9660扩展
-h, -hfs                    创建ISO9660/HFS混合卷
-map MAPPING_FILE           将文件扩展名映射到HFS TYPE / CREATOR
-H MAPPING_FILE, -map MAPPING_FILE   OLD Pre-POSIX.1-2001选项 - 不要使用-H
-magic FILE                 HFS TYPE / CREATOR的魔术文件
-probe                     探测Apple / Unix文件类型的所有文件
-mac-name                   为ISO9660 / Joliet / RockRidge文件名使用Macintosh名称
-no-mac-files               不要查找Unix / Mac文件(不建议使用)
-boot-hfs-file FILE         设置HFS启动映像名称
-part                       生成HFS分区表
-cluster-size SIZE          PC Exchange Macintosh文件的群集大小
-auto FILE                  设置HFS AutoStart文件名称
-no-desktop                 不要创建HFS(空)桌面文件
-hide-hfs GLOBFILE          隐藏HFS文件
-hide-hfs-list FILE         要隐藏的HFS文件的列表
-hfs-volid HFS_VOLID        HFS分区的卷名称
-icon-position              保持HFS图标位置
-root-info FILE             用于根文件夹的finderinfo
-input-hfs-charset CHARSET  用于HFS文件名转换的本地输入字符集
-output-hfs-charset CHARSET 用于HFS文件名转换的输出字符集
-hfs-unlock                 保持HFS卷被解锁
-hfs-bless FOLDER_NAME      祝福的文件夹名称
-hfs-parms PARAMETERS       以逗号分隔的HFS参数列表
-prep-boot FILE             PReP启动映像文件 - 最多允许4个
-chrp-boot                  添加CHRP引导标题
--cap                       查找AUFS CAP Macintosh文件
--netatalk                  查找NETATALK Macintosh文件
--double                    查找AppleDouble Macintosh文件
--ethershare                寻找Helios EtherShare Macintosh文件
--exchange                  查找PC Exchange Macintosh文件
--sgi                       查找SGI Macintosh文件
--macbin                    查找MacBinary Macintosh文件
--single                    查找AppleSingle Macintosh文件
--ushare                    查找IPT UShare Macintosh文件
--xinet                     寻找XINET Macintosh文件
--dave                      寻找DAVE Macintosh文件
--sfm                       查找SFM Macintosh文件
--osx-double                查找MacOS X AppleDouble Macintosh文件
--osx-hfs                   寻找MacOS X HFS Macintosh文件
  • ISO-LEVEL参数说明
    mkisofs工具中,`iso-level LEVEL参数用于设置ISO9660一致性等级,范围为1到4。选择合适的等级需平衡兼容性、文件名支持和功能需求。
less 复制代码
1. ISO9660 Level 1‌:这是最基础的ISO9660标准,文件名限制为8.3格式(主名8字符,扩展名3字符),且仅支持7位ASCII字符。‌
该等级兼容性最佳,几乎所有系统(包括旧版Windows、macOS和Linux)都能读取,适合需要广泛兼容性的场景,如创建通用
数据光盘或备份旧系统文件。
2. ‌ISO9660 Level 2‌:允许文件名长度增至31字符,但仍使用7位ASCII字符集。‌
它比Level 1更灵活,适用于需要较长文件名但无需特殊字符的场景,例如备份Linux系统文件或创建多媒体光盘,同时
保持较好的跨平台兼容性。
3. ‌ISO9660 Level 3‌:与Level 2类似,但允许文件名长度扩展至37字符(违反ISO9660标准)。‌
这提供了更大的灵活性,适合需要长文件名的现代文件系统备份,如包含复杂目录结构的项目,但兼容性略有下降,
可能在极旧系统上出现问题。
4. ISO9660 Level 4‌:这是最高一致性等级,支持Joliet扩展(允许Unicode文件名长达103字符)和Rock Ridge扩展(支持长文件名、
符号链接等Unix特性)。‌它适合需要长Unicode文件名(如多语言支持)和高级功能的场景,例如创建Windows/Linux双系统安装ISO或
包含非ASCII字符的软件分发盘。Level 4在现代系统上兼容性良好,但某些老旧设备可能无法识别。

等级选择的建议:

a. 优先兼容性‌: 若目标系统包括大量旧设备,选择Level 1或2。‌

b. 长文件名需求‌: 若文件名较长或包含特殊字符,Level 3或4更合适。

c‌. 混合环境‌: 对于Windows和Linux共享,Level 4(通过Joliet)通常是最佳选择,因为它同时支持长文件名和Unix特性。‌

‌d. 避免 unnecessary violations‌: 除非需要长文件名,否则避免使用Level 3或4,因为它们违反ISO9660标准,可能在严格合规的系统上引发问题。‌

  • 成果确认
  1. linux环境确认
    a. 直接挂载镜像文件,查看文件内容
bash 复制代码
sudo mkdir /mnt/iso
sudo mount -o loop,ro /test.iso /mnt/iso
ll /mnt/iso/
sudo umount /mnt/iso	
sudo rm -rf /mnt/iso

-o loop 选项告诉系统使用循环设备

-o ro 表示以只读方式挂载

b. 挂载loop设备文件方式

确认loop设备状态,安装镜像文件到loop设备

bash 复制代码
sudo ls -ls /dev/loop*
sudo losetup /dev/loop0 /test.iso

挂载loop设备,查看结果

bash 复制代码
sudo mkdir /mnt/iso
sudo mount /dev/loop0 /mnt/iso
ll /mnt/iso/
sudo umount /mnt/iso
sudo rm -rf /mnt/iso
sudo losetup -d /dev/loop0

查看关联loop设备

bash 复制代码
sudo losetup /dev/loop0 /test.iso
sudo losetup -a
sudo losetup -d /dev/loop0
  1. windows环境确认
bash 复制代码
scp yunxi@192.168.8.134:/test.iso ./

windows系统浏览器直接装载,查看文件内容,确认没有问题。

相关推荐
代码游侠5 小时前
学习笔记——线程
linux·运维·开发语言·笔记·学习·算法
怪只怪满眼尽是人间烟火5 小时前
离线环境下部署区块链FISCO BCOS v2.11.0
linux·运维·区块链
努力努力再努力wz5 小时前
【Linux网络系列】:网络+网络编程(UDPsocket+TCPsocket)
java·linux·c语言·开发语言·数据结构·c++·centos
姬嘉晗-19期-河北工职大5 小时前
在虚拟机的 Linux 系统(CentOS 7)中搭建一个「虚拟机本地网站」
linux·运维·centos
hkhkhkhkh1235 小时前
Linux 内核三大核心结构体详解(驱动开发视角)
linux·数据结构·驱动开发·字符设备
HIT_Weston5 小时前
64、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(八)
前端·ubuntu·gitlab
怪我冷i5 小时前
wsl Ubuntu切换中科大源
linux·windows·ubuntu·ai编程·ai写作
FenceRain5 小时前
Linux 使用脚本删除文件
linux
QT 小鲜肉5 小时前
【Linux命令大全】001.文件管理之chgrp命令(实操篇)
android·linux·运维·笔记