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

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

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

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

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

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

3、需要添加的安装包

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

5、安装工具包

1 [[email protected] ~]# yum -y install anaconda repodata createrepo mkisofs rsync

一、插入光盘,挂载DVD镜像,创建相关目录

1 [[email protected] ~]# mount /dev/cdrom /mnt            #挂载光盘镜像
2 [[email protected] ~]# mkdir -p /root/iso/Packages      #存放当前系统里已安装的包
3 [[email protected] ~]# 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 [[email protected] ~]# 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 [[email protected] ~]# sh test.sh 

四、把镜像需要的其他文件也拷贝到iso目录下

[[email protected] ~]# rsync -a --exclude=Packages --exclude=repodata /mnt/  /root/iso
[[email protected] ~]# 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 [[email protected] ~]# mkdir -p /root/iso/repodata
 2
 3 [[email protected] ~]# 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 [[email protected] ~]# 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 [[email protected] ~]# cp anaconda-ks.cfg  /root/iso

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

 1 [[email protected] 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 [[email protected] mnt]# cat /root/iso/isolinux/isolinux.cfg
2 default linux  ks=cdrom:/anaconda-ks.cfg             #修改第一行

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

1 [[email protected] ~]# 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 [[email protected] ~]# implantisomd5  CentOS.iso

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

时间: 2024-07-30 10:13:23

初涉定制linux系统之——自动化安装Centos系统镜像制作的相关文章

PXE自动化安装centos系统

PXE自动化安装centos系统 ①安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP iptables -vnL #查看防火墙状态 systemctl stop firewall #关闭防火墙 getenforce #查看SELinux状态 setenforce 0 #禁用SELinux cat > /etc/sysconfig/network-scripts/ifcfg-ens37 <<EOF DEVICE=ens37 #网卡名称 ONBOOT=yes #开启网卡 BOO

虚拟机 ------- 启动虚拟机上的系统,或安装centos系统时出现鼠标不受控制

启动虚拟机上的系统,或安装centos系统时出现鼠标不受控制 本人解决方法: 调整缩放布局为推荐的百分比 原文地址:https://www.cnblogs.com/obge/p/12420222.html

基于pxe+cobbler的全自动化安装centos系统

前言: 基于上篇的内容,我们就已经可以搭建一个全自动化安装centos的服务了.不过如果我们想让它同时支持各种系统的安装,实现起来就比较复杂了.不同的系统,要用不同的引导启动 文件来安装,且还有不同的安装源以及kickstart文件等等.既然是复杂得事情,肯定能通过某种工具简化,而此次我们用到的就是传说中的cobbler来管理各个不同的源,pxe加载的内核文件等等.Let's do it! 正文: 老规矩,先描述一下加入cobbler以后整体的工作流程,已经cobbler能实现的功能.当一个需要

pxe实现自动化安装centos系统

实验:pxe实现自动化安装centos7系统 将配置搭建为如下框架: . ├── initrd.img ├── menu.c32 ├── pxelinux.0 ├── pxelinux.cfg │?? └── default └── vmlinuz (1)A机器配置 yum info tftp-server httpd dhcp syslinux syslinux提供pxelinux.0引导文件 #chkconfig tftp on 开启有xinetd守护的tftp服务 centos6上 #vi

配置pxe自动化安装centos系统

一.配置kickstart应答文件要想配置kickstart ,首先要配置个本地yum源,要不然用system-config-kickstart时选不上包.而且,centos6的yum 源的名字一定是[base],要不然会报:Package selection is disabled due to problems downloading package information.centos7要把仓库名称更改为development[development]name=basebaseurl=fi

Linux的发展,创建虚拟机并安装CentOS系统,

第1章 Linux的发展1.1. Linux发展 unix诞生1969年的贝尔实验室. 1986年Andrew S.Tanenbaum(谭邦宁)开发minix(mini unix),主要用于教学. Richhard Stallman(斯托曼)公司:自由软件基金会FSF 项目:葛奴计划GNUGNU=GNU is not unix优秀软件:bash(命令解释器),gawk(三剑客),emacs,gccGPL:通用公共许可a. 开源的免费传播,随意传播b. 随意修改,修改之后必须把修改的内容发出来GN

2、vmware安装centos系统以及基本的系统优化-鑫鑫linux运维网络培训

本节课主要讲解了安装centos系统以及基本的系统优化 更多视频试听课程:http://yunpan.cn/cVSrHAk8ExAd9  访问密码 aa19

自动化运维平台之系统自动化安装Cobbler系统使用详解

一.简介 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP.DNS.以及yum仓库.构造系统ISO镜像. Cobbler支持命令行管理,web界面管理,还提供了API接口,可以方便二次开发使用. Cobbler客户端Koan支持虚拟机安装和操作系统重新安装,使重装系统更便捷. 二.cobbler提供的功能 使用

基于Kickstart自动化安装CentOS实践

前言 因为需要在浪潮的x86服务器中集中部署CentOS搭建基于Hadoop的大数据平台,平时接触SLES(SuSE Linux Enterprise Server)较多并且已经实现基于Autoyast方式使用光盘或者PXE网络自动化安装(后续会分享具体实现方法).这次主要通过学习Kisckstart实现最简单的光盘方式自动化安装CentOS,而网上的大多数教程并不完全适用于自身的环境,本文将不再赘述Kickstart相关概念,细节可参考扩展阅读. Kickstart是最为通用的Linux自动化