在CentOS 7上安裝PXE服務器

做者:張瑞旗 / 騰科IT教育集團RHCA講師linux

PXE,即Preboot eXecute Environment的縮寫,譯做「啓動前運行環境」,以「服務器/客戶端」模式工做,可讓咱們經過網絡啓動一臺沒有安裝過操做系統的電腦,並協助其安裝操做系統。安裝了這種環境、能提供網絡安裝操做系統功能的服務器,就是PXE服務器。vim

安裝過操做系統的都知道,安裝過程當中,咱們須要不時地回答安裝程序提出的問題,脫不開身。之前使用光盤安裝操做系統的,還須要守到最後,根據提示及時更換光盤。要是公司新開一個辦公室,一次要安裝幾十臺甚至上百臺電腦,還要這樣一臺一臺地安裝,那可真得累個半死。centos

本文將在VMware Worksation上運行的一臺Linux CentOS 7安裝成PXE服務器,並建立另一臺虛擬機充當客戶端主機,驗證一下網絡安裝操做系統的過程。如今能搜索到的教程,大可能是Linux 6時代的攻略和命令,不忍卒讀,因而,我就整理出這篇在Linux CentOS 7上安裝PXE服務器的文章來。好了,廢話少說,咱們直奔主題。bash

要想在CentOS 7上安裝PXE服務器,要完成如下任務:
一、    安裝dhcp、tftp、vsftpd服務器等軟件
二、    設置IP地址,好比說:192.168.1.1
三、    關閉SELinux、firewalld
四、    配置dhcpd、tftp
五、    將CentOS 7映像文件部署到FTP服務器的輸入目錄中服務器

具體步驟網絡

第01步

安裝dhcpd、tftp、syslinux、wget和vsftpd
yum install -y dhcp tftp tftp-server syslinux wget vsftpddom

第02步

關閉SELinux和防火牆
手動修改/etc/selinux/config,確保SELINUX=disabled
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
poweroffsocket

第03步

在VMWARE中將虛擬機的網絡適配器設置爲「橋接模式」。post

第04步

這時候已經不須要上網了,因此能夠爲CentOS 7隨意設置IP地址。
nmcli con show
nmcli con modi ens32 ipv4.method manual ipv4.addresses 192.168.1.1/24
#個人網卡接口id是ens32。因而將它的IP設爲192.168.1.1。
nmcli con up ens32
nmcli con show
ip a
#確認192.168.1.1已經成功設置。url

第05步

設置dhcp服務器。
vim /etc/dhcp/dhcpd.conf
確保配置文件內容以下:

 ddns-update-style interim;
 ignore client-updates;
 authoritative;
 allow booting;
 allow bootp;
 allow unknown-clients;
 
# A slightly different configuration for an internal subnet.
 subnet 192.168.1.0 netmask 255.255.255.0 
{
   range 192.168.1.2 192.168.1.253;
   option domain-name-servers 192.168.1.1;
   option domain-name "server1.example.com";
   option routers 192.168.1.1;
   option broadcast-address 192.168.1.255;
   default-lease-time 600;
   max-lease-time 7200;
 
   # PXE SERVER IP
   next-server 192.168.1.1; #  DHCP server ip
   filename "pxelinux.0";
 }

至此,上文的filename所指的pxelinux.0目前尚未部署到位。最終它的位置是/tftpboot/pxelinux.0,但不要在這裏使用路徑,僅使用這個名稱就好。上面的每一行結尾都是一個分號(;)。

第06步

爲xinetd配置TFTP服務器,即將tftp服務交給xinetd來管理。
vim /etc/xinetd.d/tftp
/etc/xinetd.d/tftp的內容以下:

service tftp
{
     socket_type             = dgram
     protocol                = udp
     wait                    = yes
     user                    = root
     server                  = /usr/sbin/in.tftpd
     server_args             = -s /tftpboot
     disable                 = no
     per_source              = 11
     cps                     = 100 2
     flags                   = IPv4
 }


咱們要將tftp服務的位置挪到/tftpboot中,將有個程序仍然認爲它的路徑在/var/lib/tftpboot中,因此,要改回來。
vim /usr/lib/systemd/system/tftp.service
將ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
修改成:ExecStart=/usr/sbin/in.tftpd -s /tftpboot
看,只有這樣,才能與/etc/xinetd.d/tftp中的相應內容保持一致。

第07步

設置TFTP服務器網絡啓動文件。首先要建立一個路徑/tftpboot。
mkdir /tftpboot
chmod 777 /tftpboot

 cp -v /usr/share/syslinux/pxelinux.0 /tftpboot
 cp -v /usr/share/syslinux/menu.c32 /tftpboot
 cp -v /usr/share/syslinux/memdisk /tftpboot
 cp -v /usr/share/syslinux/mboot.c32 /tftpboot
 cp -v /usr/share/syslinux/chain.c32 /tftpboot

再建立兩個路徑:
mkdir /tftpboot/pxelinux.cfg
mkdir /tftpboot/netboot/

第08步

將CentOS的ISO文件發佈到FTP的文件夾中。要作到這一點,必需要有一個CentOS 7的ISO文件。我要把它以虛擬光盤的形式掛載到虛擬機中。操做步驟以下圖所示:

點擊屏幕右下方光盤圖標,在短菜單中選擇「鏈接到主機」
lsblk查看光盤掛載的路徑,
如sr0    /run/media/root/CentOS 7 x86_64
mkdir -p /var/ftp/pub
cp -r /run/media/root/'CentOS 7 x86_64'/* /var/ftp/pub
「CentOS 7 x86_64」要用引號括起來,不然會出錯。

第09步

將啓動時須要使用的鏡像文件拷貝到目錄位置。
cp /var/ftp/pub/images/pxeboot/vmlinuz /tftpboot/netboot/
cp /var/ftp/pub/images/pxeboot/initrd.img /tftpboot/netboot/

第10步

建立一個kickstart,即無人值守安裝文件,名字叫ks.cfg。
vim /var/ftp/pub/ks.cfg
其內容以下:
 

#platform=x86, AMD64, or Intel EM64T
 #version=DEVEL
 # Firewall configuration
 firewall --disabled
 # Install OS instead of upgrade
 install
 # Use NFS installation media
 url --url="ftp://192.168.1.1/pub/"
 rootpw --plaintext 123456
#root的密碼設爲123456
 # Use graphical install
 graphical
 firstboot disable
 # System keyboard
 keyboard us
 # System language
 lang en_US
 # SELinux configuration
 selinux disabled
 # Installation logging level
 logging level=info
# System timezone
 timezone Asia/Shanghai
 # System bootloader configuration
 bootloader location=mbr
 clearpart --all --initlabel
 part swap --asprimary --fstype="swap" --size=1024
 part /boot --fstype xfs --size=200
 part pv.01 --size=1 --grow
 volgroup rootvg01 pv.01
 logvol / --fstype xfs --name=lv01 --vgname=rootvg01 --size=1 --grow

%packages
 @core
 wget
 %end
 %post
 %end

保存後,用ksvalidator檢查一下是否有語法錯誤。
ksvalidator /var/ftp/pub/ks.cfg

這個kickstart文件,通常分爲三個部分,分別用「%pre %end」、「%packages %end」、「%post %end」來界定。上面這個文件中的%pre %end部分的界定符號省略了,只剩下後面兩個。

第11步

建立一個pxe菜單
vim /tftpboot/pxelinux.cfg/default
default的內容以下:

 default menu.c32
 prompt 0
 timeout 30
 MENU TITLE Togogo.net Linux Training

 LABEL centos7_x64
 MENU LABEL CentOS 7 X64
 KERNEL /netboot/vmlinuz
 APPEND  initrd=/netboot/initrd.img inst.repo=ftp://192.168.1.1/pub ks=ftp://192.168.1.1/pub/ks.cfg

最後這個APPEND寫成一行,中間不要斷行。

第12步

systemctl enable dhcpd
systemctl enable tftp
systemctl enable vsftpd
將以上服務設爲開機自動啓動。

systemctl restart vsftpd
systemctl restart dhcpd
systemctl restart tftp
從新啓動以上服務。


驗證

在VMware中建立一個新的虛擬機,以充當驗證PXE服務器的客戶機。將其網絡適配器的網絡鏈接設爲「橋接模式」。
 
而後啓動這臺虛擬機。因而,咱們就能看到,這臺虛擬機能夠在無人干預的狀況下安裝CentOS Linux的Minimal,即最小化安裝。

這個菜單設置的是等待3秒就開始安裝。沒安裝以前,「CentOS 7 x64」菜單項還在高亮的時候,按下Tab鍵,就會看到以下的字樣:

> vmlinuz initrd=initrd.img inst=ftp://192.168.1.1/pub ks=ftp://192.168.1.1/pub/ks.cfg

不正是我在第11步設置的菜單項嗎?
 

後記

這個過程可能會遇到的困難是將PXE客戶機與PXE服務器放到同一個網段中。若是咱們在家裏上網,物理網卡的IP地址多是192.168.1.X,那就能夠徹底按照上面的步驟進行。 若是物理網卡的IP地址是192.168.0.X,甚至是別的什麼,那就手動修改網卡的IP,把它變成192.168.1.X。由於,VMware的橋接設置,會讓「PXE客戶機」獲取192.168.1.0/24這個網段的IP地址,正好跟「PXE服務器」相同。  

相關文章
相關標籤/搜索