CentOS6系统盘分为两张DVD,但在内网安装某些软件时,会产生DVD1和DVD2中的包互相依赖,由此想到将两个盘的安装包进行合并这个思路,定制一个类似与CentOS7-Everthing的iso镜像。


前提:已将DVD1和DVD2上传到CentOS


1、准备临时存放目录和挂载目录

mkdir /home/temp

mkdir /media/dvd1

mkdir /media/dvd2


2、挂载DVD1和DVD2

mount -o -loop <centos6-dvd1-full-path> /media/dvd1

mount -o -loop <centos6-dvd1-full-path> /media/dvd2


2、拷贝DVD1的内容到临时存放目录

cp -arp /media/dvd1/. /home/temp

注:

(1)-r循环操作用于拷贝文件夹

(2)-p保持原有的文件属性

(3)确保/mnt/.discinfo文件拷贝到用于制作iso的临时目录,这里是/home/temp


3、拷贝DVD2中Packages中的文件到临时目录的Packages目录中

cp -p /media/dvd2/Packages/*.rpm /home/temp/Packages


将DVD2中TRANS.TBL的信息追加到DVD1中TRANS.TBL后面, 并排序保存 

方法1:

cat /media/dvd2/Packages/TRANS.TBL>>/home/temp/Packages/TRANS.TBL 

sort -u /home/temp/Packages/TRANS.TBL 

方法2:

cat /media/dvd[12]/Packages/TRANS.TBL|sort -u > /home/temp/Packages/TRANS.TBL

说明:用mkisofs生成ISO时加上-T参数,即可给所有目录下生成TRANS.TBL文件,TRANS.TBL文件的作用是用于提供比ISO9660标准约定的基本文件名更加灵活的文件名,然而,ISO9660规范已经用Rock Ridge和Joliet扩展替代TRANS.TBL文件很久了,因此,现代所用之创建ISO9660镜像文件的工具,或者根本不创建TRANS.TBL文件,或者仅在用户明确指定时才会创建它们。


4.生成rpm包的依赖关系

[root@localhost ~]# cd /home/temp/

[root@localhost OS]# createrepo -g repodata/*-comps.xml /home/temp/

[root@localhost OS]# declare -x discinfo=`head -1 .discinfo`

[root@localhost OS]# createrepo -u "media://$discinfo" -g repodata/*-comps.xml /home/temp/


5.生成ISO镜像文件

[root@localhost ~]# cd /data/OS/

[root@localhost OS]# mkisofs -R -J -T -r -l -d -joliet-long \

 -V "CentOS_6.9_ALL" -allow-multidot \

 -allow-leading-dots -no-bak -o /data/CentOS-6.7-x86_64.iso \

 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot \

 -boot-load-size 4 -boot-info-table /data/OS


说明:

genisop_w_picpath 是制作光盘映像指令

-udf 指文件系统是 UDF filesystem

-allow-limited-size 允许单文件超过 2G 大小

-R 指 Rock Ridge

-J 指 Joliet

-joliet-long 允许超长文件名

-V CentOS6.9 将卷标设置为 "CentOS6.9"

-o /home/CentOS-6.5_x86_64-Everything.iso是在/home目录下创建mydisk.iso映像文件

-T /home/temp/指的是制作光盘映像的源目录


6.生成MD5校验码

[root@localhost ~]# implantisomd5 /data/CentOS-6.3-x86_64.iso


10.测试


如果安装提示“unable to read group information from repositories。This is problem with the generation of your install tree.” 是没生产MD5效验码,也就是忘记执行博文的第9步操作;


请确保原光盘中的.discinfo文件在镜像制作的临时目录中,本文中是/home/temp,否则会使用镜像安装的过程中会有如下报错提示。

wKioL1Phmm2QWcWVAACb7k62Ylk815.jpg


另外一些定制方面的


1.如何定制安装开机画面?

启动画面用的是一种比较奇怪的格式lss16,它限制图片使用16种颜色,除去前景和背景色只能有14种颜色。我们需要ppmtolss16 giftopnm等程序,系统一般默认都安装了。一般用gimp生成一个index模式的gif图形,颜色限制为14, 然后通过如下的办法进行转:

yum -y install syslinux

giftopnm < splash.gif | ppmtolss16 > splash.lss

另外你还需要修改isolinux/boot.msg文件,做一些个性化的提示。

如何生成高质量的图:

先用photoshop打开任何一张图片,然后在文件的下拉菜单里,保存的时候选择“保存为WEB和设备使用格式“,再然后选择gif再选择16色保存就OK.然后运行如下:

giftopnm < splash.gif | ppmtolss16 > splash.lss 转换即可。


2.如何生成GRUP的xpm文件?

(1) 将备一张640 x 480 16×××片,档案类型为JPG的格式;

(2)convert grub.gif -colors 14 -geometry 640x480! splash.xpm && gzip -9 splash.xpm;

(3) 直接替换/boot/grup/splash.xpm.gz 文件即可。

利用上面方法生成的图片可能无法显示,或者质量不高,如何生成高质量的grub图片呢.

利用文中后面我提供的ltospackl.tar.gz里面的grubtool.exe即可在windows平台将jpg,bmp图生成为.xpm.gz格式的文件,直接替换/boot/grup下的文件即可。


3.如何去掉安装过程中的CentOS字样?

在安装光盘里面有两个.buildstamp文件,一个位于stage2.img中,一个位于initrd.img中,

安装光盘运行时读取的是initrd.img中的那个.buildstamp文件,所以只要把initrd.img文件改了就可以了。.discinfo和.treeinfo文件里有CentOS字样,修改后即可。

如何解压initr.dimg文件:

2.6内核中的initrd.img采用cpio压缩,不再是2.4内核使用的ext2格式,无法使用mount -o loop 挂载。需要使用gunzip解压缩,然后再使用利用cpio给img解包。

# cd /ltos/isolinux/

# cp initrd.img /tmp/initrd.img.gz

# cd /tmp

# gunzip initrd.img.gz

# mkdir initrd

# mv initrd.img initrd

# cd initrd

# cpio -ivmd < initrd.img

然后修改.buildstamp文件,将CentOS改为LTOS即可.

如何制作initrd.img文件:

假设当前目录位于准备好的initrd文件系统的根目录下

# find . | cpio -c -o > ../initrd.img

# gzip ../initrd.img

# mv initrd.img.gz initrd.img

# cp initrd.img /ltos/isolinux/

仍后将initrd.img复制到/ltos/isolinux/


4. 如何替换安装以后的grub 的显示图片?

在安装光盘里的ks.cfg文件里写好替换splash.xpm.gz文件的脚本即可.


5. 如何去掉启动过程中的"CentOS release 5 (Final)"

在安装光盘里的ks.cfg文件里写好脚本,直接替换/etc/redhat-release即可.


相关脚本及制作工具下载:

http://www.linuxtone.org/project/ltos/ltospack.tar.gz //相关脚本及工具下载.


参考文档:

http://www.cnblogs.com/hjc4025/p/6918323.html

http://blog.sina.com.cn/s/blog_553c6d4e0101dod5.html