在运维和技术支持的领域中,维护老旧系统是一项常见但颇具挑战性的工作,CentOS 6.8作为一款曾经非常流行的服务器操作系统,至今仍在一些特定环境中稳定运行,其安装介质通常分为两个DVD镜像:DVD1包含核心系统和大部分常用软件包,而DVD2则包含了额外的软件包,在进行全新安装或构建本地化安装源时,频繁切换光盘会带来不便,将这两张DVD合并为一个单一的、功能完整的ISO镜像,就成了一个极具实用价值的操作,本文将详细介绍如何在Linux环境下合并CentOS 6.8的两个DVD ISO文件,并生成一个可直接用于安装的全新镜像。

在开始之前,需要明确一点:CentOS 6.8已于2020年11月30日停止官方维护(End of Life, EOL),使用它将面临巨大的安全风险,本教程仅适用于必须维护历史旧系统的特殊场景,强烈建议在生产环境中升级到受支持的现代操作系统。
准备工作
要顺利完成合并操作,你需要准备以下几样东西:
- CentOS 6.8 的ISO文件:确保你已下载了对应架构的两个DVD镜像,通常命名为
CentOS-6.8-x86_64-bin-DVD1.iso和CentOS-6.8-x86_64-bin-DVD2.iso。 - 一台Linux主机:任何现代的Linux发行版均可,例如Ubuntu、Fedora,甚至另一台CentOS机器。
- 充足的磁盘空间:至少需要两个ISO文件大小之和的2.5倍空间,用于存放临时文件和最终生成的ISO。
- 必要的软件包:执行合并操作需要一些工具,可以通过包管理器安装,例如在基于RHEL的系统上使用
yum install createrepo genisoimage isomd5sum。
详细操作步骤
整个过程可以分解为挂载、复制、更新元数据和生成新ISO四个核心阶段,我们将通过一系列清晰的命令来完成它。
第一步:创建工作目录并挂载ISO
创建一个干净的工作环境,并将两个ISO文件分别挂载到不同的目录下。
# 创建主工作目录和挂载点 mkdir -p /mnt/centos68_merge mkdir /mnt/dvd1 mkdir /mnt/dvd2 # 挂载第一个DVD镜像 mount -o loop /path/to/CentOS-6.8-x86_64-bin-DVD1.iso /mnt/dvd1 # 挂载第二个DVD镜像 mount -o loop /path/to/CentOS-6.8-x86_64-bin-DVD2.iso /mnt/dvd2
第二步:复制所有文件

将DVD1中的所有内容完整地复制到我们主工作目录,这里使用 cp -a 命令可以保留文件的所有属性,如权限和时间戳。
# 复制DVD1的全部内容 cp -a /mnt/dvd1/* /mnt/centos68_merge/
是合并的关键步骤:将DVD2中Packages目录下的所有软件包复制到主工作目录对应的Packages中。
# 复制DVD2中的所有软件包 cp /mnt/dvd2/Packages/*.rpm /mnt/centos68_merge/Packages/
第三步:更新软件仓库元数据
当加入了新的软件包后,原有的软件包索引(即repodata目录)已经失效,必须重新生成它,这样安装程序才能识别所有软件包及其依赖关系。
# 进入主工作目录 cd /mnt/centos68_merge # 删除旧的repodata目录 rm -rf repodata # 生成新的repodata # -g 参数指定了组信息文件,这对于图形化安装时选择软件包组至关重要 createrepo -g repodata/comps.xml .
第四步:生成最终的合并ISO文件
所有文件都已就位,元数据也已更新,最后一步是使用genisoimage工具将整个目录打包成一个可引导的ISO镜像。

# 返回上一级目录,准备生成ISO
cd /mnt
# 使用genisoimage创建ISO
genisoimage -o CentOS-6.8-x86_64-Everything.iso \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-R -J -v -T \
/mnt/centos68_merge
生成ISO后,为了使其能够通过MD5校验并确保引导信息的正确性,还需要执行最后一步操作。
#植入MD5校验和 implantisomd5 /mnt/CentOS-6.8-x86_64-Everything.iso
至此,一个名为 CentOS-6.8-x86_64-Everything.iso 的、包含了两张DVD所有内容的完整安装镜像就制作完成了。
为了更清晰地回顾核心命令,下表小编总结了关键步骤及其作用:
| 步骤 | 核心命令 | 说明 |
|---|---|---|
| 复制基础文件 | cp -a /mnt/dvd1/* /mnt/centos68_merge/ |
复制DVD1全部内容作为新ISO的基础 |
| 合并软件包 | cp /mnt/dvd2/Packages/*.rpm /mnt/centos68_merge/Packages/ |
将DVD2的软件包合并到主目录 |
| 更新仓库元数据 | createrepo -g repodata/comps.xml . |
重新生成软件包索引,让安装程序能识别所有软件 |
| 生成ISO | genisoimage [...] /mnt/centos68_merge |
打包成ISO文件,并使其可引导 |
| 植入校验和 | implantisomd5 <ISO_FILE> |
向ISO文件写入校验和信息,用于安装时的完整性检查 |
相关问答FAQs
问:为什么在合并完软件包后,必须使用 createrepo 重新生成 repodata?
答:repodata 目录是YUM软件仓库的“数据库”或“索引”,它记录了仓库中所有软件包的名称、版本、大小、依赖关系等关键信息,当我们向Packages目录中添加了大量来自DVD2的新软件包后,旧的索引文件并不知道这些新成员的存在,如果不更新repodata,安装程序(如Anaconda)或YUM工具将无法找到、列出或安装这些新增的软件包。createrepo命令的作用就是扫描Packages目录,并基于其内容生成一套全新的、准确的索引文件。
问:整个过程可以在Windows系统上完成吗?
答:直接在原生的Windows环境下完成这一整套操作非常困难,几乎不可能,虽然Windows 10/11可以挂载ISO文件,并且可以复制文件,但核心工具如createrepo、genisoimage和implantisomd5都是为Linux/Unix环境设计的,要在Windows上实现,你需要借助兼容层,
- WSL (Windows Subsystem for Linux):在Windows上安装一个完整的Linux环境,然后在WSL中按照本教程操作,这是目前最推荐的Windows方案。
- 虚拟机:在VirtualBox或VMware中安装一个Linux系统,然后在虚拟机内完成所有操作。
- Cygwin:一个在Windows上提供大量Linux工具兼容层的软件,但配置相对复杂。 使用一台Linux主机是最直接、最简单、最可靠的方法。