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,否则会使用镜像安装的过程中会有如下报错提示。
另外一些定制方面的
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
转载于:https://blog.51cto.com/huanghai/1924854