1245 字
6 分钟
在linux下刻录光盘
Linux 下光盘刻录
制作iso镜像文件
# 基本参数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中隐藏文件 |
💡 实用命令示例
完整的推荐命令
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创建可启动备份
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带文件过滤的备份
# 创建排除列表文件echo "*.tmp" > exclude-list.txtecho "*.log" >> exclude-list.txtecho "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启动刻录
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 |
验证光盘
文件完整性验证
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:计算原始文件哈希
# 计算MD5(快速)md5sum BD-1-2025-11-11.iso步骤2:验证光盘内容
# 获取ISO文件大小iso_size=$(stat -c%s "BD-1-2025-11-11.iso")
# 验证MD5dd if=/dev/sr0 bs=1M 2>/dev/null | head -c $iso_size | md5sum步骤3:自动化验证脚本
#!/bin/bashISO_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校验文件
# 为多个文件创建校验文件md5sum *.iso > checksum.md5
# 检查内容cat checksum.md5# 输出:# d41d8cd98f00b204e9800998ecf8427e file1.iso# e4d909c290d0fb1ca068ffaddf22cbd0 file2.iso批量验证文件
# 验证checksum.md5中所有的文件md5sum -c checksum.md5
# 输出:# file1.iso: 确定# file2.iso: 确定网络下载验证
# 下载文件和他的MD5校验文件wget http://example.com/file.isowget http://example.com/file.iso.md5
# 验证下载的文件md5sum -c file.iso.md5