本篇博文主要介绍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 dhcpudp 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 vsftpdtcp 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 xinetdudp 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/defaultdefault vesamenu.c32#prompt 1timeout 600display boot.msgmenu background splash.jpgmenu title Welcome to CentOS 6.4 ALLEN!menu color border 0 #ffffffff #00000000menu color sel 7 #ffffffff #ff000000menu color title 0 #ffffffff #00000000menu color tabmsg 0 #ffffffff #00000000menu color unsel 0 #ffffffff #00000000menu color hotsel 0 #ff000000 #ffffffffmenu color hotkey 7 #ffffffff #ff000000menu color scrollbar 0 #ffffffff #00000000label 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.cfglabel vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodesetlabel rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescuelabel local menu label Boot from ^local drive localboot 0xfffflabel memtest86 menu label ^Memory test kernel memtest append -
7、制作"kickstart"文件并放对对应的目录中
[root@localhost ~]# system-config-kickstart #执行此命令会弹出图形化界面kickstart文件制作工具
8、打开刚生成的"ks.cfg"文件稍做修改并把此文件放到ftp目录下
[root@localhost ~]# vim ks.cfg#platform=x86, AMD64, or Intel EM64T#version=DEVEL# Firewall configurationfirewall --disabled# Install OS instead of upgradeinstall# Use network installationurl --url="ftp://172.16.14.1/pub/centos-6.4-x86_64"# Root passwordrootpw --iscrypted $1$MuuNwp5f$5JLfVMp6P6J33ep/Gzim/.# System authorization informationauth --useshadow --passalgo=sha512# Use text mode installtextfirstboot --disable# System keyboardkeyboard us# System languagelang en_US# SELinux configurationselinux --disabled# Installation logging levellogging --level=info# Reboot after installationreboot# System timezonetimezone Asia/Shanghai# Network informationnetwork --bootproto=dhcp --device=eth0 --onboot=on# System bootloader configurationbootloader --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" --location=mbr --driveorder="sda"# Clear the Master Boot Recordzerombr# Partition clearing informationclearpart --all --initlabelpart /boot --fstype=ext4 --size=200part pv.008002 --size=61440volgroup vg0 --pesize=8192 pv.008002 #添加分区信息logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480logvol swap --name=swap --vgname=vg0 --size=2048logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480%postecho -e 'Mage Education Learning Services\nhttp://www.allen.com\n' >> /etc/issuesed -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自动化安装系统
三、测试自动化安装系统
到此PXE自动化安装已经完成,但是如果想要安装不同的操作系统,使用PXE就很难实现了,实现起来也不方便;有什么更简单的方法又能安装不同的操作系统呢?答案是肯定有的啦... 那就是另一个自动化运维工具cobbler;后续会更新cobbler是如何实现自动化安装系统的...