首先我们来看看环境准备:
1、一台刚安装好的、符合业务要求的系统
2、新装系统的/root 目录下 install.log 和 anaconda-ks.cfg 文件,之后会用到
3、需要添加的安装包
4、CentOS 6.7镜像文件或者光盘
1 [root@localhost ~]# yum -y install anaconda createrepo mkisofs rsync
一、插入光盘,挂载DVD镜像,创建相关目录
1 [root@localhost ~]# mount /dev/cdrom /mnt #挂载光盘镜像 2 [root@localhost ~]# mkdir -p /root/iso/Packages #存放当前系统里已安装的包 3 [root@localhost ~]# mkdir -p /root/iso/MyPackages #存放自定义安装包
二、centos系统在安装包时,包名都记录在root目录install.log文件里,我们可以从中提取出来
1 awk '/Installing/{print $2}' /root/install.log | sed 's/^[0-9]*://g' >/root/package.txt
三、从挂载的光盘镜像中提取出需要的安装包,放到/root/iso/Packages目录里
1 [root@localhost ~]# cat test.sh 2 #!/bin/bash3 Packages='/mnt/Packages' #挂载的光盘镜像中存放安装包的路径4 i='/root/iso/Packages/' #新镜像存放安装包的路径5 while read line6 do7 cp ${Packages}/${line}*.rpm /${i} || echo "$line don't cp......."8 done < /root/package.txt9 10 [root@localhost ~]# sh test.sh
四、把镜像需要的其他文件也拷贝到iso目录下
[root@localhost ~]# rsync -a --exclude=Packages --exclude=repodata /mnt/ /root/iso [root@localhost ~]# ll iso/ total 112 -rw-------. 1 root root 1539 May 30 01:18 anaconda-ks.cfg -r--r--r--. 1 root root 14 Nov 29 2013 CentOS_BuildTag dr-xr-xr-x. 3 root root 4096 Nov 29 2013 EFI -r--r--r--. 1 root root 212 Nov 28 2013 EULA -r--r--r--. 1 root root 18009 Nov 28 2013 GPL dr-xr-xr-x. 3 root root 4096 Nov 29 2013 p_w_picpaths dr-xr-xr-x. 2 root root 4096 May 29 23:16 isolinux drwxr-xr-x. 2 root root 4096 May 30 01:17 MyPackages drwxr-xr-x. 2 root root 36864 May 30 19:55 Packages -r--r--r--. 1 root root 1354 Nov 28 2013 RELEASE-NOTES-en-US.html -r--r--r--. 1 root root 1706 Nov 28 2013 RPM-GPG-KEY-CentOS-6 -r--r--r--. 1 root root 1730 Nov 28 2013 RPM-GPG-KEY-CentOS-Debug-6 -r--r--r--. 1 root root 1730 Nov 28 2013 RPM-GPG-KEY-CentOS-Security-6 -r--r--r--. 1 root root 1734 Nov 28 2013 RPM-GPG-KEY-CentOS-Testing-6 -r--r--r--. 1 root root 4060 May 30 01:18 TRANS.TBL
五、执行createrepo程序生成repodata下的comps.xml文件(重要),comps.xml 文件中包含了安装时用户所见到的与rpm相关的所有内容,它会检查Packages下的RPM包的依赖关系,安装时如果缺少依赖包,它会提示哪个RPM 包需要哪些依赖库
1 [root@localhost ~]# mkdir -p /root/iso/repodata 2 3 [root@localhost ~]# cat xml.sh 4 #!/bin/bash 5 6 ISO_DIR=/root/iso 7 cd ${ISO_DIR} 8 declare -x discinfo=$(head -1 .discinfo) 9 cp /mnt/repodata/*-comps.xml ${ISO_DIR}/repodata/ 10 createrepo -g ${ISO_DIR}/repodata/*-comps.xml ${ISO_DIR} 11 createrepo -u "media://$discinfo" -g ${ISO_DIR}/repodata/*-comps.xml ${ISO_DIR}
1 [root@localhost ~]# sh xml.sh 2 Spawning worker 0 with 502 pkgs3 Workers Finished4 Gathering worker results5 6 Saving Primary metadata7 Saving file lists metadata8 Saving other metadata9 Generating sqlite DBs10 Sqlite DBs complete11 Spawning worker 0 with 502 pkgs12 Workers Finished13 Gathering worker results14 15 Saving Primary metadata16 Saving file lists metadata17 Saving other metadata18 Generating sqlite DBs19 Sqlite DBs complete
六、制作ks.cfg自动应答脚本
anaconda-ks.cfg记录了在安装系统时填写的参数和选项,即你在安装系统时选择分区、时区、设置用户密码等一系列操作,存放在/root目录,我们直接对由系统安装所创建的anaconda-ks.cfg进行修改,当然也可以用system-config-kickstart工具制作而成。
附上一个这次使用的ks.cfg
1 # kickstart template for Fedora 8 and later.2 # (includes %end blocks)3 # Kickstart file automatically generated by anaconda.4 5 #version=DEVEL6 install7 cdrom8 lang en_US.UTF-89 keyboard us10 network --onboot no --device eth0 --bootproto dhcp --noipv611 rootpw --iscrypted $6$zOtv5lnBZdQzG2ku$3CddYMrBl8mSv3O9TDQ9ox55PErc4PeX5SoaiiSXJ9ui9mLA2aq7hz9UTw52V0VCLmsH3EIcd7qQgsuFag7xK/12 firewall --service=ssh13 authconfig --enableshadow --passalgo=sha51214 selinux --disabled #禁止selinux15 reboot #安装完成后自动重启16 timezone --utc Asia/Shanghai #设置时区17 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"18 zerombr #清除mbr19 clearpart --all --initlabel #删除所有分区,初始化卷标20 # Allow anaconda to partition the system as needed #以下是系统分区21 part /boot --fstype=ext4 --asprimary --ondisk=sda --size=50022 part pv.008002 --fstype=lvmpv --ondisk=sda --size=200 --grow23 volgroup vmvg --pesize=4096 pv.00800224 logvol swap --fstype=swap --name=swap --vgname=vmvg --recommended25 logvol / --fstype=ext4 --name=root --vgname=vmvg --size=200 --grow26 27 %post #系统安装完后执行的脚本命令28 echo '*/20 * * * * /usr/sbin/ntpdate 10.20.122.199 &> /dev/null' > /tmp/sync_date.txt29 /usr/bin/crontab /tmp/sync_date.txt30 rm -f /tmp/sync_date.txt31 %end32 33 %packages #选择需要安装的包34 @base35 @console-internet36 @core37 @debugging38 @development39 @directory-client40 @hardware-monitoring41 @java-platform42 @large-systems43 @network-file-system-client44 @performance45 @perl-runtime46 @server-platform47 @server-policy48 @system-management49 @system-admin-tools50 @workstation-policy51 pax52 python-dmidecode53 oddjob54 sgpio55 device-mapper-persistent-data56 systemtap-client57 jpackage-utils58 samba-winbind59 certmonger60 pam_krb561 krb5-workstation62 perl-DBD-SQLite63 %end
七、修改 isolinux.cfg 配置文件,指定ks.cfg路径
1 [root@localhost mnt]# cat /root/iso/isolinux/isolinux.cfg2 default vesamenu.c323 #prompt 14 timeout 6005 6 display boot.msg7 8 menu background splash.jpg9 menu title Welcome to CentOS 6.7!10 menu color border 0 #ffffffff #0000000011 menu color sel 7 #ffffffff #ff00000012 menu color title 0 #ffffffff #0000000013 menu color tabmsg 0 #ffffffff #0000000014 menu color unsel 0 #ffffffff #0000000015 menu color hotsel 0 #ff000000 #ffffffff16 menu color hotkey 7 #ffffffff #ff00000017 menu color scrollbar 0 #ffffffff #0000000018 19 label autolinux20 menu label ^Auto Install CentOS 6.721 kernel vmlinuz22 append initrd=initrd.img ks=cdrom /isolinux/ks.cfg23 label linux24 menu label ^Install or upgrade an existing system25 kernel vmlinuz26 append initrd=initrd.img27 label vesa28 menu label Install system with ^basic video driver29 kernel vmlinuz30 append initrd=initrd.img nomodeset31 label rescue32 menu label ^Rescue installed system33 kernel vmlinuz34 append initrd=initrd.img rescue35 label local36 menu label Boot from ^local drive37 localboot 0xffff38 label memtest8639 menu label ^Memory test40 kernel memtest41 append -42
八、制作iso镜像,并生成 MD5校验码
1 cd /root/iso2 /usr/bin/genisop_w_picpath -v -R -J -T -o /root/CentOS-6.7-x86_64-auto.iso\ -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot\ -boot-load-size 4 -boot-info-table -eltorito-alt-boot -b p_w_picpaths/efiboot.img -no-emul-boot .3 implantisomd5 /root/CentOS-6.7-x86_64-auto.iso
转载于:https://blog.51cto.com/gjc1202/1845012