本篇博文主要介绍PXE+Kickstart+TFTP+DHCP实现无人值守安装Linux操作系统

一、简介

二、安装部署PXE+Kickstart系统

三、测试自动化安装系统


对安装操作系统来说,想必都不陌生吧!如果对单台主机或几台主机安装Linux操作系统,使用U盘或光驱很容易就能搞定;但如果是几十台或上百台主机呢?显然是不能使用这种比较笨的办法的,费神又费力而且效率又低;那么本篇博文就是解脱使用U盘或光驱来安装操作系统的,高效而又完全自动化,非常给力...

PXE简介

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成客户端的基本软件设置,从而引导预先安装在服务器中的终端操作系统,PXE可以引导多种操作系统

PXE原理

1、客户端通过DHCP服务器来获取IP地址,并且DHCP服务器会告诉客户端TFTP服务器的地址

2、PXE客户端会从TFTP服务器上下载"pxelinux.0"与"default"文件;然后运行"pxelinux.0"并加载"default"文件;"default"文件加载后会弹出一个系统安装选择框,让用户选择相应的操作系统并安装

3、启动一个临时系统(vmlinuz、initrd.img);配置安装前的一个临时环境,这里会读取"kickstart"文件,根据"keckstart"配置文件自动完成操作系统的安装

所需软件

dhcp                     #动态分配IP地址及指定TFTP服务器地址
tftp、tftp-server        #提供系统安装时,引导所需要的文件等
xinetd                   #管理tftp服务的超级守护进程
vsftpd                   #提供安装源
syslinux                 #提供了引导所需要的"pxelinux.0"文件
system-config-kickstart  #生成"kickstart"安装系统所需配置文件的工具

二、安装部署PXE+Kickstart系统

环境介绍:

系统为Centos-6.4-x86_64 两台主机一台为服务器端IP地址为"172.16.14.1"; 另一台主机作为客户端;整个系统为VMware虚拟机实现,网卡为"VMnet2",如果使用"Host-only"会有问题提示"kickstart"文件错误,具体为什么不行,也不是很了解,搞了大半天才找到是这个问题

1、这里都使用rpm包安装方法,安装前需要配置好YUM源

[root@localhost ~]# wget http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm
[root@localhost ~]# rpm -ivh epel-release-6-8.noarch.rpm

2、安装相关软件包

[root@localhost ~]# yum -y install dhcp tftp tftp-server vsftpd syslinux system-config-kickstart

3、配置DHCP服务

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
# dhcpd.conf
# option definitions common to all supported networks...
option domain-name "allen.com";
option domain-name-servers 172.16.14.1;
default-lease-time 43200;
max-lease-time 86400;
log-facility local7;
subnet 172.16.0.0 netmask 255.255.0.0 {
  range 172.16.14.10 172.16.14.100;    #定义动态获取地址的地址池
  option routers 172.16.14.1; 
}
next-server 172.16.14.1;    #指定TFTP服务器地址
filename="pxelinux.0";      #指定TFTP目录的相对路径
######以上都很好理解就不再详细介绍了
----------------------------------------------------------------------
[root@localhost ~]# service dhcpd start
[root@localhost ~]# chkconfig dhcpd on
[root@localhost ~]# netstat -anpu|grep dhcp
udp        0      0 0.0.0.0:67      0.0.0.0:*            2046/dhcpd

4、提供安装源,这里为了方便直接挂载了映像文件,在生产环境中是需要拷贝到系统中的

######在Vsftpd访问目录到创建安装源目录并挂载系统映像
[root@localhost ~]# mkdir /var/ftp/pub/centos-6.4-x86_64
[root@localhost ~]# mount /dev/cdrom /var/ftp/pub/centos-6.4-x86_64
[root@localhost ~]# chkconfig vsftpd on
[root@localhost ~]# service vsftpd start
[root@localhost ~]# netstat -anput| grep vsftpd
tcp        0      0 0.0.0.0:21      0.0.0.0:*      LISTEN   2094/vsftpd

5、设置TFTP为开机自启动

[root@localhost ~]# chkconfig tftp on
[root@localhost ~]# service xinetd start
[root@localhost ~]# netstat -anput|grep xinetd
udp        0      0 0.0.0.0:69    0.0.0.0:*       2233/xinetd

6、拷贝PXE启动时所需要的文件到TFTP根目录(/tftpboot)

[root@localhost ~]# cp /var/ftp/pub/centos-6.4-x86_64/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
[root@localhost ~]# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@localhost ~]# chmod +w /var/lib/tftpboot/pxelinux.cfg/default
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.4 ALLEN!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz    #ks:指定ftp服务器上的"kickstart"文件
  append initrd=initrd.img ks=ftp://172.16.14.1/pub/kickstart/centos-6.4-x86_64.cfg
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

7、制作"kickstart"文件并放对对应的目录中

[root@localhost ~]# system-config-kickstart  #执行此命令会弹出图形化界面kickstart文件制作工具

无人值守安装Linux系统_第1张图片

无人值守安装Linux系统_第2张图片

无人值守安装Linux系统_第3张图片

无人值守安装Linux系统_第4张图片

无人值守安装Linux系统_第5张图片

无人值守安装Linux系统_第6张图片

无人值守安装Linux系统_第7张图片

无人值守安装Linux系统_第8张图片

无人值守安装Linux系统_第9张图片

无人值守安装Linux系统_第10张图片

无人值守安装Linux系统_第11张图片

无人值守安装Linux系统_第12张图片

无人值守安装Linux系统_第13张图片

8、打开刚生成的"ks.cfg"文件稍做修改并把此文件放到ftp目录下

[root@localhost ~]# vim ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="ftp://172.16.14.1/pub/centos-6.4-x86_64"
# Root password
rootpw --iscrypted $1$MuuNwp5f$5JLfVMp6P6J33ep/Gzim/.
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Asia/Shanghai
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" --location=mbr --driveorder="sda"
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
part /boot --fstype=ext4 --size=200
part pv.008002 --size=61440
volgroup vg0 --pesize=8192 pv.008002    #添加分区信息
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --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
%post
echo -e 'Mage Education Learning Services\nhttp://www.allen.com\n' >> /etc/issue
sed -i '1,$s@id:[0-9]:initdefault:@id:3:initdefault:@g' /etc/inittab
%end
%packages
@client-mgmt-tools
@core
%end
----------------------------------------------------------------------
[root@localhost ~]# mkdir /var/ftp/pub/kickstart
[root@localhost ~]# cp ks.cfg /var/ftp/pub/kickstart/centos-6.4-x86_64.cfg
----------------------------------------------------------------------
######重启服务
[root@localhost ~]# service xinetd restart
[root@localhost ~]# service dhcpd restart
[root@localhost ~]# service vsftpd restart

到此,PXE+Kickstart配置及安装过程已全部完成,下面测试PXE自动化安装系统


三、测试自动化安装系统

无人值守安装Linux系统_第14张图片

无人值守安装Linux系统_第15张图片

无人值守安装Linux系统_第16张图片


到此PXE自动化安装已经完成,但是如果想要安装不同的操作系统,使用PXE就很难实现了,实现起来也不方便;有什么更简单的方法又能安装不同的操作系统呢?答案是肯定有的啦... 那就是另一个自动化运维工具cobbler;后续会更新cobbler是如何实现自动化安装系统的...