centOS封装
前言
在实际工作中,CentOS的安装需要设置的语言、键盘模式、时区等信息都存在很大程度上的雷同型。并且,安装完成后的一些设置工作也都是一样的。这些工作都可以在安装操作系统的时候自动完成。最终做到,安装完成即可得到一个可以使用的CentOS系统。
理论描述
Kickstart安装提供一个安装过程自动化的方法,可以是部分自动化,也可以是完全自动化。Kickstart文件包含所有安装程序会问到的问 题答案,比如您要在系统中使用的时区、如何对驱动器进行分区、或者应该安装哪些软件包。因此为安装程序提供准备好的Kickstart文件,就可以让安装 程序自动执行安装,而不需要用户介入。这在同时向大量系统中部署Red Hat Enterprise Linux时特别有用。
可将Kickstart文件保存在独立服务器系统中,并由每台计算机在安装过程中读取。这个安装方法可支持单一Kickstart文件在多个机器中安装Red Hat Enterprise Linux,使其成为网络和系统管理员的理想工具。
CentOS作为RHEL的社区版本,同样支持Kickstart机制。在安装时,如果指定了安装使用的ks.cfg文件,并且将安装过程中所需要的软件包都封装在ISO里面。就可以实现操作系统的自动安装。
ks.cfg文件同样支持在安装完成后,执行一些系统配置相关的脚本。通过此功能,可以到将一些通用配置工作自动完成。
操作步骤
准备封装环境
安装全新的一个CentOS系统,这里选择CentOS 6.6。下载其DVD镜像,使用VMware Workstation安装。选择软件包时,推荐选择minimal的安装角色。然后,在定制界面勾选Base软件组。推荐使用minimal版本的 CentOS默认安装,链接如下:
http://mirrors.sohu.com /linux/centos/6/isos/x86_64/CentOS-6.6-x86_64-minimal.iso
安装完成后,启动这个虚拟机。并将其DVD状态设置为启用,以便于在虚拟机中挂载磁盘。
通过putty或者SecureCRT登录刚刚安装好的CentOS系统。启用虚拟机的网络,使其可以在线安装软件包。
通过如下命令,挂载CDROM
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
在系统中创建文件夹,以作为定制版CentOS的ISO文件的根目录
mkdir /srv/CentOS
将CDROM中的文件复制到此目录下。
cp -rp /mnt/cdrom /srv/CentOS/
cp /mnt/cdrom /.*info /srv/CentOS
此时CentOS目录下的文件当类似如下所示:
[root@localhost ~]# ll -a /srv/CentOS
total 91
dr-xr-xr-x. 7 root root 4096 Oct 24 22:22 .
drwxr-xr-x. 6 root root 4096 Nov 10 22:29 ..
-r--r--r--. 1 root root 14 Oct 24 21:59 CentOS_BuildTag
-r--r--r--. 1 root root 33 Oct 24 22:13 .discinfo
dr-xr-xr-x. 3 root root 2048 Oct 24 22:12 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 2048 Oct 24 22:22 images
dr-xr-xr-x. 2 root root 2048 Oct 24 22:12 ISOlinux
dr-xr-xr-x. 2 root root 40960 Oct 24 22:22 Packages
-r--r--r--. 1 root root 1354 Oct 20 00:00 RELEASE-NOTES-en-US.html
dr-xr-xr-x. 2 root root 4096 Oct 24 22:22 repodata
-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 3380 Oct 24 22:22 TRANS.TBL
-r--r--r--. 1 root root 276 Oct 24 22:22 .treeinfo
安装创建软件库,制作ISO等用途使用的工具
yum install wget anaconda repodata createrepo mkisofs yum-plugin-downloadonly -y
定义自动应答
从用户根目录复制安装系统时自动创建的ks应答文件到CentOS目录下
cp /root/anaconda-ks.cfg /srv/CentOS/isolinux/ks.cfg
修改其内容为如下所示:
[root@localhost ~]# cat /srv/CentOS/isolinux/ks.cfg
# Kickstart file automatically generated by anaconda. #version=DEVEL
install #安装模式
cdrom #从CDROM中安装
lang en_US.UTF-8 #使用英语语言
keyboard us #使用美国键盘
network --onboot yes --bootproto dhcp 开机启用DHCP网络
rootpw --iscrypted 6$tEOtj.d19Z6.9u2P$b6sUz3Bj7hiiJ6DD06SFRT8HVlXO5vJEsGALnpwpzMAS5bi95agSYEaRo4tr2Bj9wrKiL.IcYbF6NqYbif.d0/ #设置root密码为centos
firewall --service=ssh #启用防火墙,允许ssh服务
authconfig --enableshadow --passalgo=sha512 #启用本地配置的用户授权配置
selinux --enforcing #启用SELinux
timezone --utc Asia/Shanghai #设置时区为亚洲上海
reboot #安装完成后重启
%packages --ignoremissing #忽略找不到的安装包
@base
@core
@console-internet
tree
policycoreutils-python #安装Selinux调试工具
ftp.xiyang-liu.com-CentOS-repos #使用自己封装的repo文件
salt-minion #安装saltstack客户端
%post --log=/root/ks-post.log #安装后执行脚本,启用日志
sed -i -e's/^#master: salt/master: salt-master.xiyang-liu.com/g' /etc/salt/minion
#设置salt主服务器地址
chkconfig salt-minion on #开机启用saltstack客户端服务
%end
准备软件包
yum -y --downloadonly --downloaddir=/srv/CentOS/Packages groupinstall core
yum -y --downloadonly --downloaddir=/srv/CentOS/Packages groupinstall console-internet
yum -y --downloadonly --downloaddir=/srv/CentOS/Packages groupinstall base
yum -y --downloadonly --downloaddir=/srv/CentOS /Packages install tree
yum -y --downloadonly --downloaddir=/srv/CentOS /Packages install salt-minion
yum -y --downloadonly --downloaddir=/srv/CentOS /Packages install policycoreutils-python
wget http://ftp.xiyang-liu.com/linux/ftp.xiyang-liu.com-CentOS-repos-6-6.noarch.rpm -P /srv/CentOS /Packages #自己封装的rpm包,内包含一组内网的repo源文件
更新软件库索引
在安装的过程中,我们添加了新软件,并且使用了CentOS默认的group分组信息进行安装。所以,要删除原有的软件库索引,通过createrepo命令重新创建软件库索引。
原有软件库信息包含如下文件
[root@localhost CentOS]# ls /srv/CentOS/repodata/
1178543d0c796123b61389f85e9bfb499cc37d09ffd6660a7dc48abb08ebd1f1-filelists.xml.gz
1942281fc19bc08ef30482f369826958917216990c7cf58749ac79d8a2a7ad47-other.sqlite.bz2
22df42595558712f571c91cbc49657ad7187a2a7990510e9c8883b5358ae2e16-primary.sqlite.bz2
460862ca0e99160b41eecc41b944eb2abc0b82609bd12407bc5609922627eac4-comps.xml.gz
4b60435c2aa393f4678e7f47a3e0ec3324c50d47cc59dc1b7d439dd6f2ceeda8-filelists.sqlite.bz2
7f916b09f7bde0b0396266f9dddd49ae679d116ee68529bbf0feb63cbdf288dd-other.xml.gz
9e2ddcc42b44eb150ebc61dde29c997318d8330b92205b3dbb3a87bcc06d10be-comps.xml
b047f47dcdfe466ea868dadba0cdde1038517a335e17e4aaf5afc7d78288ccca-primary.xml.gz
repomd.xml
备份原有分组信息:
mv /srv/centos/repodata/*-comps.xml /srv/comps.xml
删除现有软件库索引
rm -r /srv/CentOS/repodata/*
创建新索引
discinfo=`head -1 .discinfo ` ; createrepo -u "media://$discinfo" -g /srv/comps.xml /srv/CentOS/
修改ISOLINUX启动文件
软件包准备完成后,修改ISOLINUX启用器。使其启动时自动使用应答文件进行安装。修改至如下所示:
[root@localhost srv]# cat /srv/CentOS/isolinux/isolinux.cfg
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append<strong> ks=cdrom:/isolinux/ks.cfg </strong>initrd=initrd.img
创建ISO文件
cd /srv/CentOS/
mkisofs -o /srv/CentOS-6.6-xiyang-liu-x86_64.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T /srv/CentOS/
结语
本文档描述了以CentOS minimal安装为基础环境,通过修改ks.cfg文件的形式,定制具有特殊配置的CentOS系统。
参考链接
Kickstart 安装-红帽安装文档
centos定制-oschina-_sylee
http://my.oschina.net/sylee/blog/167759
centOS封装的更多相关文章
- 阿里云服务器上架设apache php mysql 环境
由于朋友一公司要做企业站,于是就买了阿里云的服务器.买完进去发现iptables 和selinux默认就是关掉的,可能是因为阿里云有云盾就可以不用自带的防火墙吧,具体配置过程如下(我边配边记录的): ...
- centos 7安装jdk并封装service服务
一.概述 有一个Spring Cloud的jar包,文件名为:RDS.jar.必须要jdk1.8版本,需要部署在 Centos 7.5的服务器上面,最好能设置开机自启动! 二.安装jdk 关闭防火墙 ...
- MonoDevelop 4.0.9 on CentOS 6.3 安装笔记
前言 Mono的前东家Novell公司旗下的SUSE Linux系列对Mono及MonoDevelop提供内置支持,所以在SUSE/OpenSUSE这些Linux系统中安装MonoDevelop是非常 ...
- 使用packer制作vagrant centos box
使用packer制作vagrant box:centos 制作vagrant box,网上有教程,可以自己step by step的操作.不过直接使用虚拟在VirtualBox中制作vagrant b ...
- Mac OSX+VirtualBox+Vagrant+CentOS初体验
1.安装VirtualBox VirtualBox下载地址 免费小巧非常适用,根据自己机器系统选择下载包 VirtualBox 安装包 2.安装并使用Vagrant 1)Vagrant下载地址 选择下 ...
- centos mysql php Curl
开放80端口 #/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT #/sbin/iptables -I INPUT -p tcp --dport ...
- 从零开始学 Java - CentOS 下安装 Nginx
早上下起了暴雨 闹钟还未响起就听到雨滴哗啦啦击打窗户的声音,被吵醒了.起床上班,在楼下的十字路口,暴雨大到完全看不清对面,两个穿着雨衣的交警站在路口中间指挥着过往的车辆,大家都慌慌张张.急急忙忙的打着 ...
- Linux(Centos)之安装Redis及注意事项
1.redis简单说明 a.在前面我简单的说过redis封装成共用类的实现,地址如下:http://www.cnblogs.com/hanyinglong/p/Redis.html. b.redis是 ...
- CentOS 安装 lamp(转)
一般情况下,安装的都是最新的正式版,除非你有特殊需求,要安装指定的版本,本文暂不讨论.从最基础的开始,一点点完成一个可用的 Linux 主机.这里就开始介绍如何在 CentOS 6.0 上安装 LAM ...
随机推荐
- 洛谷 1850 NOIP2016提高组 换教室
[题解] 先用floyed处理出两点间的最短路. 设f[i][j][k]表示走到第i个教室,总共换了j次,当前换或者不换,期望的最小移动距离. 分情况讨论来转移即可. #include<cstd ...
- 2018/08/23 cstring中memset()函数的运用
好多东西其实以前已经查过了,然后当时理解的还行,可是过段时间没用有些又会忘记,然后又去找资料又查,浪费了不少的时间和精力,所以,我,曾国强,今天起,要好好做笔记了! 今天复习第一个知识点,为什么要叫复 ...
- ACdream 1063 字典树
ACdream 1063 字典树 平衡树 神奇的cxlove有一颗平衡树,其树之神奇无法用语言来描述 OrzOrz. 这棵树支持3种操作: 1.加入一个数到树中,维护平衡树的合法性: 2.给一个数X, ...
- [luoguP1058] 立体图(超级大模拟(¬︿̫̿¬☆))
传送门 看到题后整个人成了mengbier 但是仔细分析一下就很简单了,先确定好输出的图的长和宽. 然后从输入的矩形的左上角的最下面的开始填充,顺序是从下到上,从左到右,从后往前. 填充的时候直接覆盖 ...
- HDU 4944
FSF’s game Problem Description FSF has programmed a game.In this game, players need to divide a rect ...
- bzoj4553 [Tjoi2016&Heoi2016]序列 树状数组(区间最大值)+cqd
[Tjoi2016&Heoi2016]序列 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1006 Solved: 464[Submit][ ...
- 开发辅助网站---programcreek
开发中让我们事半功倍的工具网站,开发中经常遇到api如何使用,很好的解决这个问题.java代码api案例网,提供最简单的demo,很不错分享一下,大家可以用用. http://www.programc ...
- 洛谷 P1608 路径统计
P1608 路径统计 题目描述 “RP餐厅”的员工素质就是不一般,在齐刷刷的算出同一个电话号码之后,就准备让HZH,TZY去送快餐了,他们将自己居住的城市画了一张地图,已知在他们的地图上,有N个地方, ...
- 选择器的使用(nth-of-type和nth-last-of-type选择器)
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...
- Eclipse错误:Syntax error on tokens, delete these tokens问题解决
错误:Syntax error on tokens, delete these tokens 出现这样的错误一般是括号.中英文字符.中英文标点.代码前面的空格,尤其是复制粘贴的代码,去掉即可.