码迷,mamicode.com
首页 > 系统相关 > 详细

初涉定制linux系统之——自动化安装Centos系统镜像制作

时间:2016-05-30 21:42:54      阅读:2153      评论:0      收藏:0      [点我收藏+]

标签:

最近碰到个需求:要在内网环境安装centos6.5系统并搭建服务,但由于自动部署脚本里安装依赖包使用的是yum安装,而服务器无法连接外网,实施人员也不会本地yum源搭建O__O "…..

本来想法是打算把需要的依赖包全找出来打包发给实施人员自己安装去,后来考虑到系统安装人员的安装方式不一致,分区及安装包的不统一会对之后的维护造成负担,干脆就决定做个自动化安装的镜像,并把需要的业务依赖包全打包进去

ok,首先我们来看看环境准备:

1、一台刚安装好的、符合业务要求的系统(博主选择的是minimal 最小化安装,这个看个人需求了)

2、新装系统的/root 目录下 install.log 和 anaconda-ks.cfg 文件,之后会用到

3、需要添加的安装包

4、CentOS 6.5镜像文件或者光盘

5、安装工具包

1 [root@localhost ~]# yum -y install anaconda repodata 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/bash
 3 Packages=/mnt/Packages             #挂载的光盘镜像中存放安装包的路径
 4 i=/root/iso/Packages/              #新镜像存放安装包的路径
 5 while read line
 6 do
 7 cp ${Packages}/${line}*.rpm  /${i} || echo "$line don‘t cp......."
 8 done < /root/package.txt
 9 
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 images
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} 
12 
13 [root@localhost ~]# sh xml.sh 
14 Spawning worker 0 with 502 pkgs
15 Workers Finished
16 Gathering worker results
17 
18 Saving Primary metadata
19 Saving file lists metadata
20 Saving other metadata
21 Generating sqlite DBs
22 Sqlite DBs complete
23 Spawning worker 0 with 502 pkgs
24 Workers Finished
25 Gathering worker results
26 
27 Saving Primary metadata
28 Saving file lists metadata
29 Saving other metadata
30 Generating sqlite DBs
31 Sqlite DBs complete

六、制作 anaconda-ks.cfg 脚本

 anaconda-ks.cfg记录了在安装系统时填写的参数和选项,即你在安装系统时选择分区、时区、设置用户密码等一系列操作,存放在/root目录,我们直接对由系统安装所创建的 anaconda-ks.cfg进行修改,当然也可以用system-config-kickstart工具制作而成

1 [root@localhost ~]# cp anaconda-ks.cfg  /root/iso

这里附上一个我在用的ks文件,其中新增的地方有注释

 1 [root@localhost mnt]# cat anaconda-ks.cfg
 2 # Kickstart file automatically generated by anaconda.
 3 
 4 #version=DEVEL
 5 install
 6 cdrom
 7 lang en_US.UTF-8
 8 keyboard us
 9 network --onboot no --device eth0 --bootproto dhcp --noipv6
10 rootpw  --iscrypted $6$ecJ0IYogLGRM0msv$hMDExHNgKGuIlcRp.lvQe8JW49iZAxHA2FoKAnM6CYDBWNn5Rz2MN0AkoYD5Al.loKlHVrrgT7xC8Hq1                
11 firewall --service=ssh
12 authconfig --enableshadow --passalgo=sha512
13 selinux --enforcing
14 reboot                            #安装完成后自动重启
15 timezone --utc Asia/Shanghai      #时区选择上海
16 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
17 zerombr                           #清除mbr
18 clearpart --all --initlabel    #删除所有分区 初始化卷标 
19 part /boot --asprimary --fstype="ext4" --ondisk=sda --size=200       #系统分区
20 part swap --asprimary --fstype="swap" --ondisk=sda --size=8192 
21 part / --asprimary --fstype="ext4" --grow --ondisk=sda --size=1      #博主这里只分了三个分区,/boot 200M,swap 8192M,剩余全给根目录
22 #repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100                #需要注释掉,不然安装系统时会报错,博主也还没弄明白原因,有感兴趣的欢迎一起研究
23 %post              #这里是系统安装完后执行的脚本命令,博主这里还自定义的依赖包放到新镜像的MyPackages目录里,之后进行安装,其实该目录里也可以放类似redis安装包、jdk安装包等,安装命令都可以写在这里
24 mkdir -p /mnt/cdrom
25 mount -o loop /dev/cdrom /mnt/cdrom
26 cp -rf /mnt/cdrom/MyPackages/*.rpm /tmp
27 cd /tmp && rpm -ivh *.rpm
28 
29 eject              #安装完弹出光盘
30 reboot -f          #系统重启
31 %end
32 
33 %packages          #这些是安装包信息,不需要修改
34 @base
35 @chinese-support
36 @core
37 @british-support
38 @server-policy
39 @workstation-policy
40 sgpio
41 device-mapper-persistent-data
42 %end

七、修改 isolinux.cfg 配置文件,指定anaconda-ks.cfg路径

1 [root@localhost mnt]# cat /root/iso/isolinux/isolinux.cfg  
2 default linux  ks=cdrom:/anaconda-ks.cfg             #修改第一行

八、制作iso镜像,并生成 MD5校验码

1 [root@localhost ~]# mkisofs -o CentOS.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4  -boot-info-table -R -J -v -T /root/iso/
2 [root@localhost ~]# implantisomd5  CentOS.iso

 

新鲜出炉的自动安装镜像就完事了,之后刻盘,安装系统时只需要放入光盘就行了,简单吧

 

初涉定制linux系统之——自动化安装Centos系统镜像制作

标签:

原文地址:http://www.cnblogs.com/dengtr/p/5543820.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!