过去在 Windows 系统下制作 FreeBSD 合盘 ISO 时,总离不开各种 ISO 提取工具,操作步骤十分繁琐。实际上,在 FreeBSD 环境中自己编写一个脚本,几分钟就能轻松完成。下面就将整理好的操作步骤分享出来,供有需要的朋友参考——教您如何将三张 disc*.iso 合并为一张完整的 dvd.iso。
1,准备工作
创建一个工作目录,名称为 work/,然后将以下三张 ISO 镜像放入该目录:
7.0-RELEASE-i386-disc1.iso7.0-RELEASE-i386-disc2.iso7.0-RELEASE-i386-disc3.iso
2,脚本内容
将以下代码保存为 mkdvd.sh,并放置于 work/ 目录中。使用 root 权限执行该脚本,执行完成后将在同一目录下生成 7.0-RELEASE-i386-dvd.iso 文件。
|
# ! / /
disc1 = ` ls| grep"disc1.iso" ` disc2 = ` ls| grep"disc2.iso" ` disc3 = ` ls| grep"disc3.iso" `
dvd = ` echo $disc1| sed"s/disc1/dvd/" `
# # Prepare temporary dir to store dvd files
if test - e tmp& & test - d tmpthen rm - fr tmpfi mkdir tmp
# # Extract contents of each disc* . iso to temporary dir
for disc in $disc3 $disc2 $disc1
do mdconfig - a- f $disc- u 66
if test - e/ dev/ md66then echo Extract $disc . . . mount - t cd9660/ dev/ md66/ mnttar - cf- - C/ mnt. | tar- xf- - C tmp/ umount / mntmdconfig - d- u 66
else echo Can not create memory disk.
exit - 1fi done
# # Merge index to point to the first discecho Merge index. . . cd tmp cat INDEX | sed"s/||2/||1/g" > indexcat index | sed"s/||3/||1/g" > INDEXcat INDEX | sed"s/|3/|1/g" > indexmv index INDEX cd . .
# # Make dvd isofile echo Make $dvd . . . mkisofs - R- no- emul- boot- b boot/ cdboot- o $dvd tmprm - fr tmp
exit 0 |
该脚本的执行逻辑非常清晰:首先,利用 mdconfig 命令将每张 ISO 镜像挂载为内存盘,然后通过 tar 将所有文件提取到临时目录 tmp/ 中;接着,修改 INDEX 文件,将指向 disc2 和 disc3 的条目统一改为 disc1,从而让安装程序能够识别并从第一张光盘获取软件包;最后,使用 mkisofs 工具打包生成一个可引导的 DVD 镜像。整个过程干净利落,比起在 Windows 系统中折腾各种提取工具要省心得多。
