本篇博文主要介绍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文件制作工具
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自动化安装系统
三、测试自动化安装系统
到此PXE自动化安装已经完成,但是如果想要安装不同的操作系统,使用PXE就很难实现了,实现起来也不方便;有什么更简单的方法又能安装不同的操作系统呢?答案是肯定有的啦... 那就是另一个自动化运维工具cobbler;后续会更新cobbler是如何实现自动化安装系统的...