DVD 版 Linux 安装光碟制作

准备工具

  • Redhat CDs (以 Redhat Enterprise Linux 3 ES 为例, 共有三片)
  • 与光碟相同版本之环境 (以 RHEL 3 ES 为例, 制作时环境也需为 RHEL 3 ES)

需要工具

  • anaconda-runtime 套件组
  • anaconda 套件组
  • mkisofs

参考来源

之前小弟为了测试不同的 Server 型态, 在两三台机器重新安装了 Redhat 好几次, 后来发现, 装一次 RHEL 一共要动用 4 片光碟片, 感觉不是很好, 又麻烦, 每次事情做到一半又要被中断然后再换片, 实在有点麻烦, 后来才想到要制作 DVD 版本的 Redhat 安装光碟, 这次小弟以 Redhat Enterprise Linux 3 ES (以下称 RHEL) 为例, 相信其它的 Redhat 系应该都是差不多的作法。

环境的需求

要制做 RHEL DVD 光碟片, 环境上最少也要是 RHEL 的环境, 因为在制作的同时会需要使用到一些特有的模组, 不过在此小弟偷偷告诉大家, 我在制作的过程中, 是以 CentOS 4.0 来做的, 要做的修改就是把 anaconda-runtime 及 anaconda 这两个套件装成 RHEL 3 的, 否则在制作的过程中会发生问题, 另一个问题是 library 的问题, 如果你不想要重新安装 RHEL 的 library 的话, 那么就从别的地方 copy 过来就 OK 了!

复制档案

首先要准备好那 4 片安装光碟, 然后都一同复制到资料夹下. 我们先建立一个工作资料夹, 本例为 /burn/rhel3es

[root@nbcentos burn]# mkdir /burn/rhel3es

再复制光碟里的每个档案, 现在拿出第一片光碟出来, 然后执行以下指令

[root@nbcentos burn]# mount /dev/cdrom /mnt/cdrom; cp -rf /mnt/cdrom/* /burn/rhel3es
[root@nbcentos burn]# cp -rf /mnt/cdrom/.diskinfo /burn/rhel3es
[root@nbcentos burn]# umount /mnt/cdrom

等第一片 copy 完成之后, 再拿出第二片出来

[root@nbcentos burn]# mount /dev/cdrom /mnt/cdrom; cp -rf /mnt/cdrom/RedHat/RPMS/* /burn/rhel3es/RedHat/RPMS/
[root@nbcentos burn]# umount /mnt/cdrom

再来的第三, 第四片请重复上面的动作.

删除 TRANS.TBL

[root@nbcentos burn]# cd /burn/rhel3es
[root@nbcentos rhel3es]# find ./-name TRANS.TBL | xargs rm -f

修正 .diskinfo* 档

[root@nbcentos burn]# vi /burn/rhel3es/.diskinfo
_________________
1065565780.808209
Red Hat Enterprise Linux 3
i386
1,2,3,4 <- 本来为 1, 修改为 1,2,3,4 (如果你原本只有三片就输入 1,2,3)
RedHat/base
RedHat/RPMS
RedHat/pixmaps
_________________
[root@nbcentos burn]#

修正 hdlist* 档

[root@nbcentos burn]# /usr/lib/anaconda-runtime/genhdlist /burn/rhel3es/

复制开机资讯

复制开机资讯的目的是我们需要这片 DVD 能够直接安装, 所以需要使用到 isolinux 目录下的 .bin 和 .cat 档, 记得一定要另外 copy 出来, 不然会出错.

[root@nbcentos burn]# cd /burn
[root@nbcentos burn]# cp -rf /burn/rhel3es/isolinux ./

建立 ISO 档

[root@nbcentos burn]# cd /burn
[root@nbcentos burn]# mkisofs -A "RHEL3es_i386_DVD" -V "REHL3es_i386_DVD" \
> -J -R -v -T \
> -o rhel3es.iso -b isolinux/isolinux.bin -c isolinux/boot.cat \
> -no-emul-boot -boot-load-size 4 -boot-info-table \
> rhel3e

... 略 ...
55.23% done, estimate finish Sat Apr 9 23:29:37 2005
55.48% done, estimate finish Sat Apr 9 23:29:40 2005
55.74% done, estimate finish Sat Apr 9 23:29:40 2005
56.00% done, estimate finish Sat Apr 9 23:29:38 2005
... 略 ...

Total translation table size: 535686
Total rockridge attributes bytes: 964580
Total directory bytes: 2544532
Path table size(bytes): 12646
Done with: The File(s) Block(s) 1926144
Writing: Ending pad block Start Block 1928448
Done with: Ending pad block Block(s) 16
Max brk space used 760000
1928464 extents written (3766 Mb)

[root@nbcentos burn]#

建立 md5sum

[root@nbcentos burn]# /usr/lib/anaconda-runtime/implantisomd5 -f /burn/rhel3es.iso
Inserting md5sum into iso image...
md5 = 95e91cdd85cce5b2496a4ec81e165faa
Setting supported flag to 0
[root@nbcentos burn]#

以上, 最后在 /burn/ 下会有一个 rhel3es.iso 的映像档了.


*.diskinfo 修改这个档, 其实也不知道为什么要改里头的数字, 应该是要让安装程式知道所有的 rpm 都在同一张光碟吧, 这是从 https://www.redhat.com/archives/fedora-list/2003-August/msg00140.html 参考来的.

*hdlist 是用来记录 rpm 的标头档, 也记录勒那个 rpm 在那一片光碟可以被取得, 所以要重新修改一下 hdlist 这个档案, 参考来源是 http://www.linuxjournal.com/comment/reply/6473 .

04/10/2005

Index