在大規模的Linux應用環境中,好比Web羣集、分佈式計算等,服務器每每並不配備光驅設備,在這種狀況下,如何給成百上千臺服務器裸機快速安裝系統呢?傳統的USB光驅、移動硬盤等安裝方式很顯然已經力不從心了,那麼就須要——PXE網絡裝機及無人值守安裝。linux
PXE網絡裝機及無人值守安裝能夠實現的功能有:
1.規模化:同時裝配多臺服務器;
2.自動化:安裝系統、配置各類服務;
3.遠程實現:不須要光盤、U盤等安裝介質。vim
如圖:centos
關於Windows PXE網絡裝機能夠參考博文:Windows server 2016部署WDS服務bash
若要搭建PXE網絡體系,必需要知足的條件有: 1.客戶機的網卡支持PXE協議(集成BOOTROM芯片),且主板支持網絡引導; 2.網絡中必須有一臺DHCP服務器爲客戶機分配IP地址、指定引導文件的位置; 3.服務器經過TFTP(簡單文件傳輸協議)提供引導鏡像文件的下載。
其中第一個條件是硬件要求,目前絕大部分服務器和PC都可以提供此支持,只需在BIOS設置中容許從Network或LAN啓動便可。服務器
知足條件後,咱們來實現這種功能!網絡
本次試驗PXE遠程安裝服務器集成了CentOS 7 安裝源、FTP服務、TFTP服務、DHCP服務,可以像客戶機(裸機)發送PXE引導程序、Linux內核、啓動菜單等數據,以及提供安裝文件。app
PXE遠程安裝服務的部署過程大體能夠分紅這樣幾步: 1.安裝FTP服務並準備CentOS 7 安裝源; 2.安裝TFTP服務並啓動; 3.準備Linux內核、初始化鏡像文件; 4.準備PXE引導程序、啓動菜單文件; 5.安裝並啓動DHCP服務; 6.驗證PXE網絡安裝效果。
接下來咱們開始分步驟完成實驗,並實現理想的效果!dom
經過搭建本地YUM的方式安裝一系列服務。若是有朋友對YUM的搭建不明白能夠參考博文:YUM倉庫配置及命令詳解socket
[root@localhost ~]# mount /dev/cdrom /mnt [root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# rm -rf * [root@localhost yum.repos.d]# vim a.repo [a] baseurl=file:///mnt gpgcheck=0 [root@localhost ~]# yum -y install vsftpd //安裝FTP服務 [root@localhost ~]# mkdir /var/ftp/centos7 [root@localhost ~]# cp -rf /mnt/* /var/ftp/centos7/ //將光盤中的東西所有複製到FTP服務科匿名訪問的目錄中 [root@localhost ~]# systemctl start vsftpd //啓動FTP服務
TFTP(簡單文件傳輸協議)服務所使用UDP的69端口。分佈式
[root@localhost ~]# yum -y install tftp-server //安裝TFTP服務 [root@localhost ~]# vim /etc/xinetd.d/tftp //修改TFTP服務的配置文件,內容以下: service tftp { socket_type = dgram protocol = udp //TFTP服務採用udp傳輸協議 wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot //指定TFTP服務的根目錄 disable = no //這項必須改爲「no」 per_source = 11 cps = 100 2 flags = IPv4 } [root@localhost ~]# systemctl start tftp //啓動TFTP服務
用PXE網絡安裝的Linux內核、初始化文件能夠從CentOS 7系統光盤中得到,位於images/pxeboot/目錄下,分別是initrd.img和vmlinuz。將這兩個文件複製到TFTP服務的根目錄下。
[root@localhost ~]# cd /mnt/images/pxeboot/ [root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/
用於PXE網絡安裝的引導程序爲pxelinux.0,由軟件包syslinux提供。所以須要先安裝syslinux。
[root@localhost ~]# yum -y install syslinux [root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
啓動菜單來指導客戶機的引導過程,包括如何調用內核、如何加載初始化鏡像。默認的啓動菜單文件爲default,應放置在TFTP根目錄下的pxelinux.cfg子目錄下,典型的啓動菜單引導文件需手動建立,能夠參考如下內容:
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg //在TFTP服務根目錄下建立pxelinux.cfg目錄 [root@localhost ~]# cd /var/lib/tftpboot/pxelinux.cfg/ [root@localhost pxelinux.cfg]# vim default //建立default菜單文件。文件內容以下: default auto prompt 1 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.1.1/centos7 label linux text kernel vmlinuz append text initrd=initrd.img method=ftp://192.168.1.1/centos7 label linux rescue kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.1.1/centos7
其中個配置項的含義: default:用來指定默認入口名稱; prompt:用來決定是否須要等待用戶控制(1表示須要,0表示不須要); label:用來定義並分割啓動項,文件中有三種引導模式: 分別是圖形安裝(默認)、文本安裝、救援模式; kernel:用來指定所需內核; append:追加配置項; initrd:用來指定系統初始化文件; method:用來指定安裝方式; 引導入口的個數及內容根據實際狀況自定義。
因爲PXE客戶機一般是還沒有安裝系統的裸機,所以爲了與服務器取得聯繫並正確的下載相關引導文件,須要預先配置DHCP服務器來自動分配地址並告知引導文件位置。
[root@localhost ~]# yum -y install dhcp [root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf //複製DHCP服務的模板 [root@localhost ~]# vim /etc/dhcp/dhcpd.conf //修改DHCP服務的配置文件,主要內容以下: ……………… //省略部份內容 subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option domain-name-servers 192.168.1.1; option domain-name "internal.example.org"; option routers 192.168.1.1; option broadcast-address 192.168.1.255; default-lease-time 600; max-lease-time 7200; next-server 192.168.1.1; //指定TFTP服務器的地址 filename "pxelinux.0"; //指定PXE引導程序的文件名 } ……………… //省略部份內容 [root@localhost ~]# systemctl start dhcpd
對於新購買的裸機,通常都不須要設置(若是是從新裝系統,建議則應調BIOS爲網絡啓動)。若使用vmware虛擬機進行測試,虛擬機內存至少須要2GB,不然在啓動會報錯。
耐心等待,幾分鐘後:
出現這種狀況,表示部署成功!
經過PXE遠程安裝服務,雖然,安裝介質已經再也不受限於光盤、移動硬盤、U盤等設備,大大提升了系統安裝的靈活想可是,安裝期間仍然須要人爲的進行交互式的操做,當須要批量安裝時很是的不方便。那麼就須要使用到——「Kickstart無人值守安裝」
實現Kickstart無人值守安裝部署過程: 1.配置應答文件並保存; 2.啓動自動應答文件; 3.驗證無人值守安裝。
接下來咱們開始分步驟完成,並實現理想的效果!
要想圖形化的建立應答文件,則須要安裝system-config-kickstart工具,若是對配置文件很是熟悉的話,也能夠直接修改系統自動建立的無人安裝配置文件/root/anaconda-ks.cfg。本次案例安裝system-config-kickstart工具,圖形化的編輯配置文件。
[root@localhost ~]# yum -y install system-config-kickstart //安裝system-config-kickstart工具,安裝完成以後:
[root@localhost ~]# vim /var/ftp/ks.cfg //查看剛纔經過圖形化編輯的應答文件 #platform=x86, AMD64, 或 Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts keyboard 'us' # Root password rootpw --iscrypted $1$3uZeSVnX$FYsU4y8y/qqEWA66Wuysg1 # Use network installation url --url="ftp://192.168.1.1/centos7" # System language lang zh_CN # Firewall configuration firewall --disabled # System authorization information auth --useshadow --passalgo=sha512 # Use graphical install graphical firstboot --disable # SELinux configuration selinux --disabled # Network information network --bootproto=dhcp --device=ens33 # Reboot after installation reboot # System timezone timezone Asia/Shanghai # System bootloader configuration bootloader --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part swap --asprimary --fstype="swap" --size=2048 part / --asprimary --fstype="xfs" --grow --size=1 %post --interpreter=/bin/bash rm -rf /etc/yum.repos.d/* cd /etc/yum.repos.d/ echo -e "[a]" >> a.repo echo -e "baseurl=ftp://192.168.1.1/centos7" >> a.repo echo -e "gpgcheck=0" >> a.repo %end
不過剛纔已經說明了,還缺一個選項——「軟件包選擇」,須要本身手動添加幾行配置項,在末尾添加便可,添加內容以下:
%packages @^minimal %end //這三項的意思就是最小安裝
%packages @^gnome-desktop-environment %end //這三項的意思是桌面安裝
固然也能夠參考/root/anaconda-ks.cfg文件,文件中%packages到%end之間都是配置選項,每行一個配置選項,任意選擇!
你們能夠不通過圖形化編輯,直接複製配置文件!效果也可實現!
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default default auto prompt 0 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.1.1/centos7 ks=ftp://192.168.1.1/ks.cfg
將prompt 改成0,表示不等待用戶選擇。添加ks引導參數,並制定URL訪問路徑。
實驗完成!