简介
在网络安装服务器套件Cobbler(补鞋匠)出现以前,很多人一直认为装机民工这份很有前途的职业,这其中就包括年轻时的我,记得刚进大一的时候,总觉得电脑城的装机人员很NB,暑假有一段时间甚至准备去电脑城打工,好偷学一下神秘的装机技术。【自打若干年前 Red Hat 推出了 Kickstart,此后我们顿觉身价倍增。不再需要刻了光盘一台一台地安装 Linux,只要搞定 PXE、DHCP、TFTP,还有那满屏眼花缭乱不知所云的 Kickstart 脚本,我们就可以像哈里波特一样,轻点魔棒,瞬间安装上百台服务器。这一堆花里胡哨的东西可不是一般人都能整明白的,没有大专以上学历,通不过英语四级, 根本别想玩转。总而言之,这是一份多么有前途,多么有技术含量的工作啊。很不幸,Red Hat 最新(Cobbler项目最初在2008年左右发布)发布了网络安装服务器套件Cobbler(补鞋匠),它已将 Linux 网络安装的技术门槛,从大专以上文化水平,成功降低到初中以下,连补鞋匠都能学会。对于我们这些在装机领域浸淫多年,经验丰富,老骥伏枥,志在千里的民工兄弟们来说,不啻为一个晴天霹雳。】<==中间这一段摘自百科君,所以IT狗注定劳累一身,一入IT深入海,从此青春是路人~~!
在补鞋匠没有统一江湖之前,装机大神使用的终极绝招就是使用PXE+Kickstart加服务来完成复杂而又繁琐的批量装机重任,一般小学生是不会玩的,当然大学还有去女生宿舍装机的私活啦,学会装机是多么重要的事,所谓哥装的不是机,是寂寞!
具体步骤如下,接下来一个个详细解剖一下,了解一下安装原理
1.PXE引导+ks配置
2.DHCP服务器
3.TFTP服务器
4.HTTP服务器(NFS、FTP)
5.网上启动
6.yum仓库安装源
1. PXE+KS
1.1 什么是PXE
PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。
PXE的工作过程:
1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;
4. PXE Client 取得pxelinux.0 文件后之执行该文件;
5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;
6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;
详细工作流程,请参考下面这幅图:
1.2 什么是Kickstart
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
PXE+Kickstart 无人值守安装操作系统完整过程如下:
2、相关服务介绍
2.1 DHCP:
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。
2.2 TFTP:
TFTP是一种比较特殊的文件传输协议。相对于FTP和目前经常使用的SFTP,TFTP是基于TCP/IP协议簇,用于进行简单文件传输,提供简单、低开销的传输服务。TFTP的端口设置为69。
相对于常见的FTP,TFTP有两个比较好的优势:
1. TFTP基于UDP协议,如果环境中没有TCP协议,是比较合适的;
2. TFTP执行和代码占用内存量比较小;
默认情况下,Linux内部是安装了tftp服务器包的。但是默认是不启动的。
3、Cobbler简介
Cobbler 是一个免费开源系统安装部署软件,用于自动化网络安装操作系统;基于Python开发,是对 PXE 的二次封装,提供了 CLI 和 Web 的管理形式,也提供了API接口,方便二次开发使用。Cobbler通过将设置和管理一个安装服务器所涉及的任务集中在一起,从而简化了系统配置。相当于Cobbler封装了DHCP、TFTP、XINTED等服务,结合了PXE、kickstart等安装方法,可以实现自动化安装操作系统,并且可以同时提供多种版本,以实现在线安装不同版本的系统。它不仅可以安装物理机,同时也支持虚拟化、GuestOS的安装。另外,Cobbler还能结合 Puppet 等集中化管理软件,实现自动化管理。
Cobbler各组件关系:
4、交互过程分析
cobbler server与裸机(PXE client)交互过程分析:
裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个IP
DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址
裸机拿到ip后再向cobbler server发送请求OS引导文件的请求
cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port
裸机通过上面告知的TFTP server地址和port通信,下载引导文件
裸机执行该引导文件,确定加载信息,选择要安装的os,期间会再向cobbler server请求kickstart文件和os image
cobbler server发送请求的kickstart和os image
裸机加载kickstart文件
裸机接收os image,安装该os image
之后,裸机就不“裸”了,有了自己的os和dhcp分配给其的ip。
可以毫不夸张的说,有了补鞋匠自动批量安装上百台服务器不再是梦,
预知后事如何,请看下回实战!
参考:http://blog.csdn.net/taiyang1987912/article/details/42176709
http://blog.csdn.net/yeruby/article/details/51167862
http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html
RedHat 安装光盘安装树介绍:
光盘中包含文件夹isolinux、images、Cluster、ClusterStorage、Server、VT六个文件夹;包含隐藏文件.discinfo及.treeinfo和一些普通文件如TRANS.TBL等;
isolinux文件夹中有开机引导系统的安装内核(vmlinuz)及RAM 镜像(initrd.img),在引导力系统时会加载入内存,给系统的安装提供一个Linux安装引导平台;文件夹中还有在不同模式下显示信息的.msg文件;splash.lss是特殊格式的引导过程背景图片(640*320,16位色,ppm格式);
images文件夹中包含有各种引导镜像;有用于制作微型启动光盘的boot.iso;有可放置于USB或其他大容量可引导介质的VFAT分区上,制作引导工具的镜像diskboot.img;
也有用于制作PXE安装方式引导介质的pxeboot文件夹;及XEN所需的xen文件夹;
Server、VT、Cluster、ClusterStorage四个文件夹包含安装所需的所有RPM包;Server文件夹中包含基础软件包,VT包含xen相关的软件包;Cluster、ClusterStorage是集群及集群存储相关的软件包;根据这四个包可以配置本地的yum源;
TRANS.TBL文件记录当前目录的列表,用mkisofs的-T参数重新生成,主要是为了长文件名称
.discinfo 是安装介质的识别信息;
.treeinfo 文件记录不同安装方式安装程序所在的目录结构,如:PXE方式时,内核kernel=images/pxeboot/vmlinuz;根文件系统initrd=images/pxeboot/initrd.img
stage2.img、minstg2.img是引导后第二阶段安装需要用到的镜像文件(这两个镜像文件功能及结构在后面描述),若定制LiveCD,则需要修改;
repodata 是精确描述一个RPM包的详细信息,如依赖关系,包含文件,校验码信息等;
comps.xml是一个xml格式的数据文件,将各个RPM包按照一定的原则组织成若干组,安装时可以按照信息直接安装一组软件包;
(stage2.img映像文件中的主要部分是安装程序anaconda,它的主执行体是/usr/bin下的anaconda,由其调用的大量例程分布在/usr/lib/anaconda下,而安装过程中要用到的资源文件分布在/usr/share/anaconda下。
当boot.img所代表的启动介质被系统引导之后,在内存中就建立了一个完整的Linux系统(包括Linux内核和一个内存虚拟文件系统),之后便执行文件系统中存在的loader命令,从适当的介质中执行安装程序(例:安装介质是CD-ROM,就解析CD-ROM上的stage2.img,并从中执行安装程序),即执行anaconda,完成Linux系统的安装任务
详细可参看:(Linux发行版制作指南)http://leozhao.livejournal.com/3128.html
)
Anaconda/Kickstart系统安装过程图示:
boot.img、stage2.img结构示意:
注:现在新版本的两个镜像略有出入,依实际为准(图后附查看img方法);
loop方式挂载特殊格式的img镜像方法:
1. [root@bogon images]# ls
2. boot.iso diskboot.img minstg2.img pxeboot README stage2.img TRANS.TBL xen
3. [root@bogon images]# file stage2.img
4. stage2.img: Squashfs filesystem, little endian, version 3.0, 0 bytes, 8969 inodes, blocksize: 65536 bytes, created: Mon Mar 22 19:56:50 2010
5. #从上面看出img文件格式为squashfs,所以在下面挂载时明确指定该格式,否则会报错;
6.
7. [root@bogon images]# mkdir ../img
8. [root@bogon images]# mount -o loop -t squashfs stage2.img ../img/
9. [root@bogon images]# ls ../img
10. etc lib modules proc usr var
11. [root@bogon images]#
使用Kickstart进行安装的多种方式列举
(过程不再赘述,对于一些重要的实验在后期会附上HOW-TO):
1. kickstart放置于镜像中,重新制作ISO并刻盘,从光盘实现引导,自动配置并提供安装树安装;
2. kickstart可放置于网络上,用FTP/HTTP/NFS提供出来;用光盘引导及提供安装树;
3. 用FTP/HTTP/NFS提供kickstart及安装树,用光盘或其他可引导的大象存储设备引导;
4. 搭建PXE纯网络的架构,实现引导,kickstart,及安装树的提供完全自动化;
参考:
Red_Hat_Enterprise_Linux-5-Installation_Guide-en-US
http://leozhao.livejournal.com/3128.html