本篇博文主要介紹PXE+Kickstart+TFTP+DHCP實現無人值守安裝Linux操做系統
linux
1、簡介vim
2、安裝部署PXE+Kickstart系統centos
3、測試自動化安裝系統bash
對安裝操做系統來講,想必都不陌生吧!若是對單臺主機或幾臺主機安裝Linux操做系統,使用U盤或光驅很容易就能搞定;但若是是幾十臺或上百臺主機呢?顯然是不能使用這種比較笨的辦法的,費神又費力並且效率又低;那麼本篇博文就是解脫使用U盤或光驅來安裝操做系統的,高效而又徹底自動化,很是給力...
服務器
PXE簡介
網絡
PXE(preboot execute environment,預啓動執行環境)是由Intel公司開發的最新技術,工做於Client/Server的網絡模式,支持工做站經過網絡從遠端服務器下載映像,並由此支持經過網絡啓動操做系統,在啓動過程當中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啓動軟件包到本機內存中執行,由這個啓動軟件包完成客戶端的基本軟件設置,從而引導預先安裝在服務器中的終端操做系統,PXE能夠引導多種操做系統app
PXE原理
運維
一、客戶端經過DHCP服務器來獲取IP地址,而且DHCP服務器會告訴客戶端TFTP服務器的地址
dom
二、PXE客戶端會從TFTP服務器上下載"pxelinux.0"與"default"文件;而後運行"pxelinux.0"並加載"default"文件;"default"文件加載後會彈出一個系統安裝選擇框,讓用戶選擇相應的操做系統並安裝tcp
三、啓動一個臨時系統(vmlinuz、initrd.img);配置安裝前的一個臨時環境,這裏會讀取"kickstart"文件,根據"keckstart"配置文件自動完成操做系統的安裝
所需軟件
dhcp #動態分配IP地址及指定TFTP服務器地址 tftp、tftp-server #提供系統安裝時,引導所須要的文件等 xinetd #管理tftp服務的超級守護進程 vsftpd #提供安裝源 syslinux #提供了引導所須要的"pxelinux.0"文件 system-config-kickstart #生成"kickstart"安裝系統所需配置文件的工具
2、安裝部署PXE+Kickstart系統
環境介紹:
系統爲Centos-6.4-x86_64 兩臺主機一臺爲服務器端IP地址爲"172.16.14.1"; 另外一臺主機做爲客戶端;整個系統爲VMware虛擬機實現,網卡爲"VMnet2",若是使用"Host-only"會有問題提示"kickstart"文件錯誤,具體爲何不行,也不是很瞭解,搞了大半天才找到是這個問題
一、這裏都使用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
二、安裝相關軟件包
[root@localhost ~]# yum -y install dhcp tftp tftp-server vsftpd syslinux system-config-kickstart
三、配置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
四、提供安裝源,這裏爲了方便直接掛載了映像文件,在生產環境中是須要拷貝到系統中的
######在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
五、設置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
六、拷貝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 -
七、製做"kickstart"文件並放對對應的目錄中
[root@localhost ~]# system-config-kickstart #執行此命令會彈出圖形化界面kickstart文件製做工具
八、打開剛生成的"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自動化安裝系統
3、測試自動化安裝系統
到此PXE自動化安裝已經完成,可是若是想要安裝不一樣的操做系統,使用PXE就很難實現了,實現起來也不方便;有什麼更簡單的方法又能安裝不一樣的操做系統呢?答案是確定有的啦... 那就是另外一個自動化運維工具cobbler;後續會更新cobbler是如何實現自動化安裝系統的...