什麼是PXE
PXE中文叫“預啓動執行環境”。計算機在啓動時需要加載操作系統,而加載的方式常見有:光驅啓動(CDROM)、硬盤啓動、網絡啓動。光驅啓動一般用在光驅插入有系統盤的時候使用;當我們裝完操作系統以後一般選擇硬盤啓動;網絡啓動就是通過網卡中的PXE芯片到遠程服務器端下載啓動文件。三種啓動方式的先後順序可在BIOS中進行設置。
爲什麼通過PXE來安裝操作系統
小弟單位雖然不大但也有上千臺服務器,分佈在三個機房,三機房離辦公室最近的也有10KM以上。每次新上服務器都需要重裝系統,可以想象如果按傳統方式拿着系統盤到機房現場裝系統,那畫面真是太美……這種情況,利用PXE網絡啓動,坐辦公室暖氣吹吹就可以把遠端機房的服務器系統裝好;安裝整個過程全自動,節省下的時間完全可以去做更有技術含量的事情。
拓撲示意圖
VMWARE虛擬機模擬環境
材料準備
一臺linux服務器,作爲網絡服務器(一般爲虛擬機,方便使用)。系統的IOS文件(網上下載需要安裝的linux發行版IOS)。
配置詳細過程
一、TFTP服務器設置
yum install -y tftp-server [root@pxe ~]# vim /etc/xinetd.d/tftp 1 # default: off 2 # description: The tftp server serves files using the trivial file transfer \ 3 # protocol. The tftp protocol is often used to boot diskless \ 4 # workstations, download configuration files to network-aware printers, \ 5 # and to start the installation process for some operating systems. 6 service tftp 7 { 8 socket_type = dgram 9 protocol = udp 10 wait = yes 11 user = root 12 server = /usr/sbin/in.tftpd 13 server_args = -s #修改主目錄 14 disable = #啓動服務器 15 per_source = 11 16 cps = 100 2 17 flags = IPv4 18 } [root@pxe tftpfiles]# chkconfig xinetd on #設置開機啓動 [root@pxe tftpfiles]# service xinetd restart #重啓TFTP服務 Stopping xinetd: [ OK ] Starting xinetd: [ OK ]
二、系統安裝文件準備
1、安裝syslinux,完成後,拷貝pxelinux.0到tftp主目錄(自創建):
yum install -y syslinux.x86_64 cp /usr/share/syslinux/pxelinux.0 /tftpfiles/
2、掛在IOS系統鏡像,並拷貝initrd.img、vmlinuz、boot.msg文件到主目錄
mount -t iso9660 /dev/cdrom /mnt/centos/ #掛載光驅 cp /mnt/centos/images/pxeboot/{vmlinuz,initrd.img} /tftpfiles/ #拷貝initrd.img、vmlinuz文件 cp /mnt/centos/isolinux/boot.msg /tftpfiles/ #拷貝boot.msg文件
3、創建pxelinux.cfg文件夾,將IOS中isolinux.cfg文件拷到該文件夾更名爲default
mkdir /tftpfiles/pxelinux.cfg cp /mnt/centos/isolinux/isolinux.cfg /tftpfiles/pxelinux.cfg/default vim default #修改default 1 default #默認選擇label爲ks選項,可自行修改 2 prompt 0 3 timeout 600 4 5 #display boot.msg 6 7 menu background splash.jpg 8 menu title Welcome to CentOS 6.5! 9 menu color border 0 #ffffffff #00000000 10 menu color sel 7 #ffffffff #ff000000 11 menu color title 0 #ffffffff #00000000 12 menu color tabmsg 0 #ffffffff #00000000 13 menu color unsel 0 #ffffffff #00000000 14 menu color hotsel 0 #ff000000 #ffffffff 15 menu color hotkey 7 #ffffffff #ff000000 16 menu color scrollbar 0 #ffffffff #00000000 17 18 label #設置你的系統標籤爲ks 19 kernel vmlinuz #內核 20 append initrd=initrd.img ks=nfs:10.10.10.1:/tftpfiles/ks.cfg #指導客戶機通過nfs到服務器獲取ks.cfg,也可以選擇http\ftp方式
4、在/tftpfiles下創建ks.cfg文件,ks.cfg文件也可以通過進入X-windows界面安裝運行system-config-kickstart獲取。ks.cfg用來配置安裝系統時的各種參數,比如用戶名密碼、如何分區、配置網卡等,可按自己需求進行配置。下面是我的ks.cfg供參考:
vim ks.cfg 1 auth --useshadow --enablemd5 #密碼加密方式 2 install #系統安裝設置 3 text #純文本安裝,不安裝X-window 4 firewall --disable 5 keyboard us 6 lang en_US 7 selinux --disable 8 timezone --isUtc Aisa/Shanghai 9 nfs --server 10.10.10.1 --dir=/mnt/centos #設置系統安裝文件獲取服務器地址及路徑 10 rootpw 123456 #--iscrypted 49ba59abbe56e057 設置root的密碼,--iscrypted爲md5後的值 11 firstboot --disable 12 logging --level=info 13 reboot #一定要加,不然安裝過程還需要手動重啓 14 15 bootloader --append="rhgb quiet" --location=mbr --driveorder=sda 16 zerombr 17 network --bootproto=dhcp --device=eth0 --onboot=on #也可以手動配置靜態IP 18 clearpart --all --initlabel #刪除所有分區後再重新分區 19 part / --fstype="ext4" --size=10240 20 part swap --fstype="swap" --size=2048 21 part /boot --fstype="ext4" --size=200 22 23 %packages #選擇默認要安裝的包 24 @base #ks很強大,還可以設置很多東東。比如安裝前或安裝後需要執行的命令,可深入學習。
綜上,安裝系統需要的文件已經準備齊全,default在pxelinux.cfg中,目前主目錄內容如下:
[root@pxe tftpfiles]# ll total 36676 -r--r--r--. 1 root root 84 Nov 22 21:58 boot.msg -r--r--r--. 1 root root 33383679 Nov 22 21:58 initrd.img -rw-r--r--. 1 root root 539 Nov 23 01:50 ks.cfg -rw-r--r--. 1 root root 26759 Nov 23 07:09 pxelinux.0 drwxr-xr-x. 2 root root 4096 Nov 24 18:25 pxelinux.cfg -r-xr-xr-x. 1 root root 4128368 Nov 22 21:58 vmlinuz
三、配置DHCP服務器
DHCP服務器用來給客戶機分配IP,讓客戶機與服務器能通信從服務器獲取安裝信息及文件。
yum install -y dhcp.x86_64 #安裝dhcp服務器 [root@pxe tftpfiles]# vim /etc/dhcp/dhcpd.conf #設置服務器參數 1 # 2 3 default-lease-time 600; 4 max-lease-time 7200; 5 6 log-facility local7; 7 8 # DHCP server to understand the network topology. 9 10 subnet 10.10.10.0 netmask 255.255.255.0 { 11 range 10.10.10.2 10.10.10.254; 12 option routers 10.10.10.1; #10.10.10.1爲本機與客戶機互聯網卡地址 13 option subnet-mask 255.255.255.0; 14 next-server 10.10.10.1; 15 filename "pxelinux.0"; 16 } vim /etc/init.d/dhcpd #第30、31行修改DHCPD使用權限爲自己,否則DHCPD服務器啓動失敗 30 user=root 31 group=root [root@pxe tftpfiles]# chkconfig dhcpd on [root@pxe tftpfiles]# service dhcpd restart Shutting down dhcpd: [ OK ] Starting dhcpd: [ OK ]
四、配置NFS服務器
除了NFS,還可以選擇HTTP、FTP等方式傳輸文件
yum install -y nfs-utils.x86_64 #安裝nfs服務器 [root@pxe tftpfiles]# vim /etc/exports #設置開放的路徑及用戶地址段,ro爲只讀 1 /tftpfiles 10.10.10.0/24(ro) 2 /mnt/centos/ 10.10.10.0/24(ro) [root@pxe tftpfiles]# chkconfig nfs on [root@pxe tftpfiles]# chkconfig rpcbind on [root@pxe tftpfiles]# service nfs restart Shutting down NFS daemon: [ OK ] Shutting down NFS mountd: [ OK ] Shutting down NFS services: [ OK ] Shutting down RPC idmapd: [ OK ] Starting NFS services: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] [root@pxe tftpfiles]# service rpcbind restart Stopping rpcbind: [ OK ] Starting rpcbind: [ OK ]
客戶機開始安裝
客戶機必須有一張網卡與服務器在同一廣播域,不然服務器將收不到客戶機的DHCP請求。安裝前關閉服務器iptables和selinux,以免tftp連接超時:service iptables stop;setenforce 0。如果是mini版的centos安裝過程中可能會出現未知缺包提示。
1、通過DHCP獲取IP、pxelinux.0文件,然後通過TFTP連接到服務器獲取default文件,接着加載vmlinuz、initrd.img文件
2、開始掛在文件系統、檢測硬件
3、安裝系統軟件
4、安裝完畢,開始關閉進程,重啓系統
5、重啓完成,安裝完畢!