PXE簡介
PXE,全名Pre-boot Execution Environment,預啟動執行環境;
通過網絡接口啟動計算機,不依賴本地存儲設備(如硬盤)或本地已安裝的操作系統;
由Intel和Systemsoft公司於1999年9月20日公布的技術;
Client/Server的工作模式;
PXE客戶端會調用網際協議(IP)、用戶數據報協議(UDP)、動態主機設定協議(DHCP)、小型文件傳輸協議(TFTP)等網絡協議;
PXE客戶端(client)這個術語是指機器在PXE啟動過程中的角色。一個PXE客戶端可以是一台服務器、筆記本電腦或者其他裝有PXE啟動代碼的機器(我們電腦的網卡)。
PXE的工作流程:

實驗環境:
虛擬機:VMware® Workstation 15 Pro
均使用NAT連接 網段為192.168.1.0/24

!! 使用支持PXE的網卡
!!關閉軟件自帶的DHCP服務
PXE 服務器 ---- Centos 7.4
IP地址:192.168.1.1/24
網關: 192.168.1.254
版本如下

!!由於涉及到主機間不同基於不同協議的通信,所以為了避免不必要的麻煩,我們選擇關閉防火牆以及selinux。如下
[root@localhost ~]# systemctl stop firewalld //關閉防火牆 [root@localhost ~]# setenforce 0 //臨時關閉Selinux,重啟失效
一、部署DHCP
安裝以下:
[root@localhost ~]#yum install dhcp -y

1、復制模板

2、編輯配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
//從47行開始編輯 subnet 192.168.1.0 netmask 255.255.255.0 { //修改網段和掩碼 range 192.168.1.210 192.168.1.215; //分配地址池 option domain-name-servers 192.168.1.1; //指定dns服務器 # option domain-name "internal.example.org"; //注釋此行 option routers 192.168.1.254; //指定網關 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"; //指定去下載一個pxelinux.0文件 }
3、重啟DHCP並開啟自啟動
[root@localhost ~]# systemctl restart dhcpd [root@localhost ~]# systemctl enable dhcpd Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
二、部署TFTP
安裝以下:
[root@localhost ~]# yum install tftp-server xinetd -y

1、編輯配置文件
[root@localhost ~]# vim /etc/xinetd.d/tftp

2、重啟TFTP並開啟自啟動
[root@localhost ~]# systemctl restart tftp [root@localhost ~]# systemctl enable tftp Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket. [root@localhost ~]# systemctl restart xinetd [root@localhost ~]# systemctl enable xinetd
三、安裝Syslinux
安裝如下:
[root@localhost ~]# yum install syslinux -y

四、部署Kickstart
1、配置ks.cfg文件
//ks.cfg的模板在/root下的anaconda-ks.cfg文件
a、創建ks.cfg存放目錄
[root@localhost ~]# mkdir /pxe
b、復制模板
[root@localhost ~]# cp /root/anaconda-ks.cfg /pxe/ks.cfg
c、編輯ks.cfg
[root@localhost ~]# vim /pxe/ks.cfg

關鍵字 含義 install 告知安裝程序,這是一次全新安裝,而不是升級upgrade。 url --url=" " 通過FTP或HTTP從遠程服務器上的安裝樹中安裝。 url --url="http://10.0.0.7/CentOS-6.7/" url --url ftp://<username>:<password>@<server>/<dir> nfs 從指定的NFS服務器安裝。 nfs --server=nfsserver.example.com --dir=/tmp/install-tree text 使用文本模式安裝。 lang 設置在安裝過程中使用的語言以及系統的缺省語言。lang en_US.UTF-8 keyboard 設置系統鍵盤類型。keyboard us zerombr 清除mbr引導信息。 bootloader 系統引導相關配置。 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" --location=,指定引導記錄被寫入的位置.有效的值如下:mbr(缺省),partition(在包含內核的分區的第一個扇區安裝引導裝載程序)或none(不安裝引導裝載程序)。 --driveorder,指定在BIOS引導順序中居首的驅動器。 --append=,指定內核參數.要指定多個參數,使用空格分隔它們。 network 為通過網絡的kickstart安裝以及所安裝的系統配置聯網信息。 network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6 --bootproto=[dhcp/bootp/static]中的一種,缺省值是dhcp。bootp和dhcp被認為是相同的。 static方法要求在kickstart文件里輸入所有的網絡信息。 network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2 請注意所有配置信息都必須在一行上指定,不能使用反斜線來換行。 --ip=,要安裝的機器的IP地址. --gateway=,IP地址格式的默認網關. --netmask=,安裝的系統的子網掩碼. --hostname=,安裝的系統的主機名. --onboot=,是否在引導時啟用該設備. --noipv6=,禁用此設備的IPv6. --nameserver=,配置dns解析. timezone 設置系統時區。timezone --utc Asia/Shanghai authconfig 系統認證信息。authconfig --enableshadow --passalgo=sha512 設置密碼加密方式為sha512 啟用shadow文件。 rootpw root密碼 clearpart 清空分區。clearpart --all --initlabel --all 從系統中清除所有分區,--initlable 初始化磁盤標簽 part 磁盤分區。 part /boot --fstype=ext4 --asprimary --size=200 part swap --size=1024 part / --fstype=ext4 --grow --asprimary --size=200 --fstype=,為分區設置文件系統類型.有效的類型為ext2,ext3,swap和vfat。 --asprimary,強迫把分區分配為主分區,否則提示分區失敗。 --size=,以MB為單位的分區最小值.在此處指定一個整數值,如500.不要在數字后面加MB。 --grow,告訴分區使用所有可用空間(若有),或使用設置的最大值。 firstboot 負責協助配置redhat一些重要的信息。 firstboot --disable selinux 關閉selinux。selinux --disabled firewall 關閉防火牆。firewall --disabled logging 設置日志級別。logging --level=info reboot 設定安裝完成后重啟,此選項必須存在,不然kickstart顯示一條消息,並等待用戶按任意鍵后才重新引導,也可以選擇halt關機。
d、給予ks.cfg可讀權限
[root@localhost ~]# chmod +r /pxe/ks.cfg [root@localhost ~]# ll /pxe/ks.cfg //列出ks.cfg的詳細屬性 -rw-r--r--. 1 root root 1309 Aug 23 20:56 /pxe/ks.cfg
2、復制內核文件

內核文件、虛擬根文件以及菜單文件,我們都是通過tftp服務來提供的,由於系統及版本的不同,對於一個比較復制機群來說,我們需要准備不同系統,不同版本的內核文件,initrd.img文件。菜單文件只需要一份即可。/var/lib/tftpboot/目錄規划如下:
a、創建鏡像下載目錄
[root@localhost ~]# mkdir /pxe/cdrom
b、復制內核文件
//從掛載的光驅里面復制內核文件: //我掛載的是mnt
[root@localhost ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/ [root@localhost ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/ [root@localhost ~]# cp /mnt/isolinux/boot.msg /var/lib/tftpboot/ [root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@localhost ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
//復制syslinux的pxelinux.0
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
c、編輯應答文件
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default


d、復制光驅里的文件到下載目錄
[root@localhost ~]# cp -rf /mnt/* /pxe/cdrom/ //東西很多,要復制2~3分鍾左右
五、部署NFS
1、安裝NFS如下
[root@localhost ~]# yum install nfs-utils -y

2、編輯NFS配置文件
[root@localhost ~]# vim /etc/exports

3、重啟NFS並加入自啟動
[root@localhost ~]# systemctl restart nfs [root@localhost ~]# systemctl enable nfs Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
!!再次提醒,注意防火牆,會影響效果
!!要么允許要么關閉!
!!由於涉及到主機間不同基於不同協議的通信,所以為了避免不必要的麻煩,我們選擇關閉防火牆以及selinux。如下
[root@localhost ~]# systemctl stop firewalld //關閉防火牆 [root@localhost ~]# setenforce 0 //臨時關閉Selinux,重啟失效
六、安裝虛擬機















開始安裝!


安裝完成

七、我的踩坑記錄
問題1:

運行內存給的不過,Centos7.3以上的版本貌似要2G及以上才可以
解決方法:關機將運行內存調至2G即可
問題2:

無法連接到nfs服務器,nfs服務器格式錯誤
/var/lib/tftproot/pxelinux.cfg/default 有問題
錯誤原因
參數格式錯誤:ks=nfs:192.168.1.1/var/www/html/ks.cfg
正確格式:ks=nfs:192.168.1.1:/var/www/html/ks.cfg
一個不小心參數少打個冒號
解決方法:修改為正確格式即可
本篇文章由博客園博主[伊諾丶]原創,轉載請注明出處https://www.cnblogs.com/hinaux/p/Article_2.html。
否則將追究法律責任!!
