1245 字
6 分钟
在linux下刻录光盘

Linux 下光盘刻录#

制作iso镜像文件#

Terminal window
# 基本参数
genisoimage -V "<盘名称>" -J -R -udf -allow-limited-size -o "<输出iso文件位置>" <要打包的目录>
# 基本示例
genisoimage -V "BD-1-2025-11-11" -J -R -udf -allow-limited-size -o "~/iso/BD-1-2025-11-11.iso" ~/Documents
参数意义说明
-V”BD-1-2025-11-11” 设置光盘卷标,在系统中显示为光盘名称
-J生成 Joliet 目录记录,支持Windows长文件名
-R使用 Rock Ridge 协议,保留Unix/Linux文件权限和符号链接
-udf启用 UDF 文件系统,支持大于4GB的文件和更好的兼容性
-allow-limited-size允许创建超过ISO 9660标准限制的镜像
-o ”~/iso/BD-1-2025-11-11.iso”指定输出ISO文件的路径和名称
~/Documents要打包的源目录路径

🎯 其他常用可选参数#

文件系统相关#

参数说明
-joliet-long允许Joliet文件名达到103字符(默认64)
-ucs-level 3使用UCS级别3,支持更多Unicode字符
-iso-level 4使用ISO 9660版本4,支持更多特性
-no-iso-translate禁止字符转换,保持原文件名

优化和性能#

参数说明
-sort按文件名排序文件在光盘上的位置
-r按反向顺序排序
-cache-inodes缓存inode信息(Linux系统)
-no-cache-inodes不缓存inode信息(其他系统)

文件过滤和排除#

参数说明
-exclude-list file.txt从指定文件读取要排除的文件列表
-exclude “*.tmp”排除所有.tmp文件
-path-list file.txt只包含列表中的文件和目录

引导和特殊用途#

参数说明
-b boot.img指定引导镜像文件
-c boot.catalog指定引导目录文件
-no-emul-boot非模拟模式启动
-boot-load-size 4设置引导扇区加载大小
-hide file.txt在ISO 9660中隐藏文件
-hide-joliet file.txt在Joliet中隐藏文件

💡 实用命令示例#

完整的推荐命令#
Terminal window
genisoimage -V "BACKUP_2025" -J -joliet-long -R -udf -iso-level 4 \
-allow-limited-size -cache-inodes -o "/backup/backup.iso" \
-exclude "*.tmp" -exclude "*.log" /usr/total_backup
创建可启动备份#
Terminal window
genisoimage -V "RESCUE_DISK" -J -R -udf -b boot/grub/stage2_eltorito \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-allow-limited-size -o "/backup/rescue.iso" /rescue_files
带文件过滤的备份#
Terminal window
# 创建排除列表文件
echo "*.tmp" > exclude-list.txt
echo "*.log" >> exclude-list.txt
echo "temp/" >> exclude-list.txt
genisoimage -V "CLEAN_BACKUP" -J -R -udf -allow-limited-size \
-exclude-list exclude-list.txt -o "/backup/clean.iso" /usr/total_backup

启动刻录#

Terminal window
growisofs -dvd-compat -speed=<速度> -Z <光驱位置>="<iso文件位置>"
growisofs -dvd-compat -speed=2 -Z /dev/sr0="~/iso/BD-1-2025-11-11.iso"
参数说明示例
基本操作
-Z开始刻录到空白光盘-Z /dev/sr0=file.iso
-M追加刻录(多会话)-M /dev/sr0=file2.iso
-dvd-compat封闭光盘提高兼容性-dvd-compat
速度控制
-speed=N设置刻录速度-speed=2
-s模拟刻录(测试)-s
缓存设置
-use-the-force-luke=bufsize设置缓冲区大小bufsize:32m
-overburn允许超刻(超过标称容量)-overburn
光盘管理
-dvd-compat完成后封闭光盘-dvd-compat
-dao使用 Disk-At-Once 模式-dao
-sa使用 Session-At-Once 模式-sa
文件系统
-udf使用 UDF 文件系统-udf
-iso-level设置 ISO 级别-iso-level 3
-joliet启用 Joliet 扩展-joliet
-rock启用 Rock Ridge 扩展-rock
调试信息
-v详细输出-v
-dry-run干运行(不实际刻录)-dry-run
特殊选项
-use-the-force-luke=notray不弹出光盘托盘notray
-use-the-force-luke=tty强制 TTY 输出tty
-use-the-force-luke=4gms使用 4GB 边界对齐4gms

验证光盘#

文件完整性验证#

Terminal window
cmp -n $(stat -c%s image.iso) image.iso /dev/sr0
参数含义
-n $(stat -c%s image.iso)限制比较的字节数为原始 ISO 文件的大小
image.iso原始 ISO 镜像文件
/dev/sr0刻录后的光盘设备

工作原理:#

  • stat -c%s image.iso 获取原始 ISO 文件的确切字节大小
  • cmp 读取光盘上前 N 个字节(N=ISO文件大小)与原始文件逐字节比较
  • 如果完全一致,命令不输出任何内容(返回码 0)
  • 如果发现差异,会报告第一个不匹配的位置

文件校验#

步骤1:计算原始文件哈希#

Terminal window
# 计算MD5(快速)
md5sum BD-1-2025-11-11.iso

步骤2:验证光盘内容#

Terminal window
# 获取ISO文件大小
iso_size=$(stat -c%s "BD-1-2025-11-11.iso")
# 验证MD5
dd if=/dev/sr0 bs=1M 2>/dev/null | head -c $iso_size | md5sum

步骤3:自动化验证脚本#

#!/bin/bash
ISO_FILE="BD-1-2025-11-11.iso"
CD_DEVICE="/dev/sr0"
echo "计算原始文件MD5..."
original_md5=$(md5sum "$ISO_FILE" | awk '{print $1}')
echo "计算光盘内容MD5..."
iso_size=$(stat -c%s "$ISO_FILE")
cd_md5=$(dd if="$CD_DEVICE" bs=1M 2>/dev/null | head -c $iso_size | md5sum | awk '{print $1}')
if [ "$original_md5" = "$cd_md5" ]; then
echo "✅ MD5验证成功:光盘刻录完整"
else
echo "❌ MD5验证失败:文件不匹配"
echo "原始文件: $original_md5"
echo "光盘内容: $cd_md5"
fi
参数说明示例
基本操作
(无参数)计算文件MD5值md5sum file.iso
-b二进制模式读取文件md5sum -b file.iso
-t文本模式读取文件(默认)md5sum -t file.txt
验证模式
-c从文件检查MD5值md5sum -c checksum.md5
—status静默模式,只返回状态码md5sum -c —status checksum.md5
输出控制
—tag输出BSD风格格式md5sum —tag file.iso
-z用NUL分隔输出行md5sum -z *.iso

💡 实际应用示例#

创建MD5校验文件#
Terminal window
# 为多个文件创建校验文件
md5sum *.iso > checksum.md5
# 检查内容
cat checksum.md5
# 输出:
# d41d8cd98f00b204e9800998ecf8427e file1.iso
# e4d909c290d0fb1ca068ffaddf22cbd0 file2.iso
批量验证文件#
Terminal window
# 验证checksum.md5中所有的文件
md5sum -c checksum.md5
# 输出:
# file1.iso: 确定
# file2.iso: 确定
网络下载验证#
Terminal window
# 下载文件和他的MD5校验文件
wget http://example.com/file.iso
wget http://example.com/file.iso.md5
# 验证下载的文件
md5sum -c file.iso.md5
在linux下刻录光盘
http://8.148.86.53/posts/linux_dvd/
作者
Mint
发布于
2025-11-15
许可协议
CC BY-NC-SA 4.0