PXE批量安装部署CentOS6.5,pxe部署centos6.5以下操作以CentO
PXE批量安装部署CentOS6.5,pxe部署centos6.5以下操作以CentO
Linux操作系统如何安装? 以及如何自动(无人值守)安装? 以及如何批量自动安装? 下面我们会一一的来介绍。
以下操作以CentOS6系列为例,以 VMware 作为虚拟机管理器进行实验。
一、安装系统
1、个人 pc 如何安装一个Linux操作系统使用呢?
Linux操作系统的安装过程大致如下:
以本地镜像为例,POST加点自检,加载镜像文件中的内核和临时根文件系统,最后会启动anaconda的安装程序,此程序是交互式的,帮助用户来选择安装前的一些操作,完成这一步操作之后,进入真正的安装包软件,完成系统的安装。
#如何加载内存和根文件系统呢?
#大致过程是:执行光盘中isolinux目录下的isolinux.bin二进制程序,它会加载此目录下的
#vmlinuz和initrd.img文件实现内核和临时根文件系统的加载。
#
#加载完内核和临时根文件系统后,会执行isolinux.cfg脚本,此脚本的作用是显示安装菜单,
#同时会将splash.jpg格式的图片作为背景显示,如图1-1
#
#boot.cat文件是提供boot:提示符,来设置相关参数,Tab可补全相关参数,如图1-2。此功能
#等价于图1-1在相应菜单下按Tab后添加相关参数
#
#下面是光盘中isolinux目录下的的相关文件
#
[root@server~]#ll/media/cdrom/isolinux/
total37142
-r--r--r--1rootroot2048Nov292013boot.cat
-r--r--r--2rootroot84Nov292013boot.msg
-r--r--r--2rootroot334Nov282013grub.conf
-r--r--r--2rootroot33392971Nov282013initrd.img
-r--r--r--2rootroot24576Nov292013isolinux.bin
-r--r--r--2rootroot936Nov292013isolinux.cfg
-r--r--r--2rootroot165080Nov292013memtest
-r--r--r--2rootroot151230Nov292013splash.jpg
-r--r--r--1rootroot2215Nov292013TRANS.TBL
-r--r--r--2rootroot162860Nov292013vesamenu.c32
-r-xr-xr-x4rootroot4128368Nov292013vmlinuz
图1-1 安装菜单
图 1-2 手动添加参数安装
#对于图1-2的参数常用的有:
#ipnetmaskgateway指定ip地址,掩码,网管
#例如:ip172.16.10.44netmask255.255.0.0gateway172.16.0.1
#repo指定安装包的位置
#ks指定kickstat文件的位置。
#例如:repo=#ks=cdrom:/isolinux/ks.cfg
#
#我们为什么要设置这些参数呢?
#原因是:本地没有软件仓库,和实现自动安装。
#
#详细的配置参数可参考http://www.rehhat.com/docs对应版本的Installation_Guide文件
由于篇幅限制,对于具体的安装过程这里不在一一介绍。
二、如何实现无人值守安装(kickstart)?
个人在安装一次的Linux操作系统时,可以利用本地镜像交互式安装。现在出现了 5 台需要安装操作系统,像一台机器那样安装,可能就不是那么高效了。这里需要借助自制光盘镜像了来实现无人值守(非交互式安装)。
1、无人值守安装(kickstart)
无人值守安装时如何办到的呢 ??是向 anaconda 安装程序提供一个 .cfg 的文件,文件里面定义和设定好了安装前的操作,例如:键盘类型,时区,管理员密码,分区信息,语言,安装的包的名称等相关信息。
#选择硬件平台
#platform=x86,AMD64,orIntelEM64T
#防火墙设置--disabled禁用--enabled启用
firewall--disabled
#安装后升级系统安装:install升级:upgrade
install
#使用网络安装,如果使用网络安装,url是必须的,
url--url="
#指定网路软件仓库的位置
repo--name="CentOS"--baseurl=ftp://172.16.10.9/pub/cdrom--cost=100
#设置root密码
rootpw--iscrypted$1$FUS6GrNf$dArNmVbJWOo4EAKCmgdEK/
#系统认证信息
auth--useshadow--passalgo=sha512
#图形化安装
graphical
#键盘类型
keyboardus
#系统语言
langen_US
#SELinux设置
selinux--disabled
#系统安装收Reboot
reboot
#设置时区
timezoneAsia/Shanghai
#网卡配置
network--bootproto=dhcp--device=eth0--onboot=on
#加载内核是的参数
bootloader--append="crashkernel=autocrashkernel=autorhgbrhgbquietquiet"--location=mbr--driveorder="sda"
#清除MBR记录
zerombr
#清除缓存信息
clearpart--all--initlabel
#分区信息
part/boot--fstype=ext4--size=200
#设置逻辑卷分区,这个比较重要,因为图形配置时,不支持逻辑卷
partpv.008002--size=61440
volgroupvg0--pesize=8192pv.008002
logvol/--fstype=ext4--name=root--vgname=vg0--size=20480
logvolswap--name=swap--vgname=vg0--size=2048
logvol/usr--fstype=ext4--name=usr--vgname=vg0--size=10240
logvol/var--fstype=ext4--name=var--vgname=vg0--size=20480
#安装前执行的脚本
%pre
#setwelcominfo
echo"Welcom!!InstallCentOS6.5"
%end
#安装后要执行的脚本
%post
#sethosts
echo'172.16.0.1server.example.comserver'>>/etc/hosts
%end
#安装包组合包
%packages
@base
lftp
%end
配置文件格式和参数比较多,配置起来有难度。所以出现图形化的管理工具。使用 yum install system-config-kickstart 安装此管理工具。使用 system-config-kickstart 命令启动图形化管理工具进行配置。但是,图形化管理工具在分区是不支持逻辑卷,所以在配置文件里,这些配置参数应该熟悉。
1
2
#ksvalidatorks.cfg使用这个工具来检查是否有语法错误
#一般如果使用图形化工具配置不需要进行语法检查
2、制作引导镜像
在安装系统到开始安装软件包之前,只需要镜像中 isolinux 目录中的文件,所以,我们结合 kickstart文件制作光盘镜像。
具体做法:
1、将安装光盘isolinux目录拷贝出来,修改权限
#cp/media/cdrom/isolinux/tmp-R
#chmod755/tmp/isolinux-R
2、将制好的.cfg文件拷贝到isolinux目录下
#cp/roo/ks.cfg/tmp/isolinux/
3、修改isolinux目录下isolinux.cfg文件的以下内容
labellinux
menulabel^Installorupgradeanexistingsystem
menudefault
kernelvmlinuz
appendinitrd=initrd.img
#找到以上内容,在appendinitrd=initrd.img添加:
#ip172.16.10.99netmask255.255.0.0gateway172.16.0.1ks=cdrom:/isolinux/ks.cfg
#这里需要注意的是,这里的软件包是远程提供必须存在且能找到,就是在ks.cfg文件
#中的url和repo设置要正确。
4、制作iso镜像
#mkisofs参数的具体含义,可参照:http://wiki.osdev.org/Mkisofs
#mkisofs-R-J-T-v--no-emul-boot--boot-load-size4--boot-info-table-V"CentOS6.5x86_64boot"-bisolinux/isolinux.bin-cisolinux/boot.cat-o/root/boot.iso/tmp/isolinux
至此,我们可以实现无人值守安装。方法是:将制作好的镜像文件 boot.iso 拷贝到 5 台机器上,将它作为安装镜像,即可实现无人值守安装。
三、如何实现批量自动安装(PXE)?
现在需要安装的 50 台机器,如果用自制 iso 镜像那样安装的话,效率不是特别那么高效。这里需要借助于 PXE 机制了。
PXE(preboot execute environment,预启动执行环境)的工作原理是让安装的机器获得一个 ip 地址,然后到指定的服务器上利用 TFTP 协议下载一个 pxelinux.0 的文件,作用等价于光盘中 isolinux.bin。来实现再结合 kickstart 文件实现批量自动安装。
1、DHCP服务
DHCP(Dynamic Host Configration Protocol 动态主机配置协议),是一种 C/S 服务架构。作用是让客户端享服务端租约一个 IP 地址。使用UDP 协议传输,服务端监听的端口号是 67,客户端监听的端口号是 68。
为什么有了DHCP服务器以后,我们的客户端就可以获取地址呢?获取地址过程如下:
#第一步:在网卡的里面有一个BIOSRom的芯片,在开机时会向局域网里发出DHCPDICOVER广播请求,索取IP地址
#第二步:DHCP服务端收到客户端的广播请求会发出一个DHCPOFFER的广播数据包,分配ip地址
#第三步:客户端在接收到报文后,会在向服务端发出DHCPREQUEST的广播报文。来确定此ip地址是否可以使用,以免冲突
#第四步:服务端在接受到此报文后会发出一个DHCPACK的确认报文,此时客户端就可以租约使用这个ip地址了
安装:使用 yum install dhcp -y 即可安装
启动、关闭:/etc/init.d/dhcpd start|stop 启动时配置文件有错误会报错
开机自启动:chkconfig dhcpd on
DHCP
2、TFTP 服务
TFTP(Trivial File Transfer Protocol 简单文件传输协议),实际上是一个简单的文件服务器,提供文件下载服务,一般是文件数目较少时使用。也是一种 C/S 架构,服务器工作于UDP 的69 端口。
安装:yum install tftp-server tftp -y
此服务是由超级进程 xinetd 来控制,实现“随叫随到”的状态。服务的开启在/etc/xinetd.d/tftp 文件设置
#disable=no开启此功能
#在这里我们也可以找到默认的发布路径是:/var/lib/tftpboot
启动,关闭:/etc/init.d/xinetd start|stop
开机自启动:chkconfig tftp on
3、实现 PXE 的配置
实验拓扑图如下:
大致过程是:安装的机器向 DHCP 服务器租约一个 IP 地址,然后得到 TFTP 服务器的地址,到 TFTP 服务器上去下载 pxelinux.0 文件加载内核和临时根文件系统等,此时还会下载一个 default 的文件,里面指定了 kickstart 发布的方式,找到对应的服务器下载得到 kickstart 文件实现自动化安装。在 kickstart 文件里指定 repo 的位置,来实现安装时软件包的下载。
这里由于环境受限,DHCP,TFTP,FTP服务器都安装到 172.16.10.9 机器上。
第一步:配置dhcpx信息
#vim/etc/dhcp/dhcpd.conf
optiondomain-name"example.com";#域名
optiondomain-name-servers172.16.0.1;#DNS服务器名称
default-lease-time600;#租约时间
max-lease-time7200;#最大租约时间
log-facilitylocal7;
subnet172.16.0.0netmask255.255.0.0{
range172.16.10.14172.16.10.99;#地址池
optionrouters172.16.0.1;#网关
next-server172.16.10.9;#tftp服务器地址
filename"pxelinux.0";#下载文件名
}
#其他参数host,hardware,class等,这里不再详述。
#配置完成后启动服务
#/etc/init.d/dhcpstart
第二步:提供下载文件
#光盘挂载点是/media/cdrom
#cp/usr/share/syslinux/pxelinux.0/var/lib/tftpboot
#cp/media/cdrom/images/pxeboot/{initrd.img,vmlinuz}/var/lib/tftpboot
#cp/media/cdrom/isolinux/{vesamenu.c32,splash.jpg}/var/lib/tftpboot
#mkdir/var/lib/tftpboot/pxelinux.cfg
#cp/media/cdrom/isolinux/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default
#pxelinux.0是由安装包syslinux提供的,复制前确保已安装
#配置完成后启动服务
#/etc/init.d/xinetdstart
第三步:提供安装源 和提供ks.cfg文件
#yum源基于ftp实现
#yuminstallvsftpd-y
#mkdir/var/ftp/pub/cdrom-p
#mount--bind/media/cdrom/var/ftp/pub/cdrom
#/etc/init.d/vsftpdstart
#chkconfigvsftpdon
#制作kickstart文件
#可由system-config-kickstart生成。例如:ks.cfg
#将ks.cfg文件拷贝到/var/ftp目录下。
如何配置PXE可参照:http://www.syslinux.org/wiki/index.php/PXELINUX
补充说明:
1、还需要修改/var/lib/tftpboot/pxelinux.cfg/default 文件:
labellinux
menulabel^Installorupgradeanexistingsystem
menudefaul
kernelvmlinuz
appendinitrd=initrd.imgks=ftp://172.16.10.9/ks.cfg#添加ks文件的位置
#ks.cfg文件中的yum源一定保证有并且可以正确找到。
2、需要关闭防火墙
#/etc/init.d/iptablesstop
至此,就可实现批量安装。但是,如果安装的数量较多,网络带宽会有很大的压力,此时要借助于cobbler,puppet工具来实现了。
总结:本文主要介绍了 PXE 服务的原理和搭建过程。
本文出自 “逆水寒” 博客,请务必保留此出处http://guoting.blog.51cto.com/8886857/1533029
评论暂时关闭