PXE——無人值守自動安裝Linux操作系統(踩坑記錄)


在這里插入圖片描述

DHCP服務

DHCP服務器主要實現在企業內部網絡為客戶端分配IP地址等網絡參數。

在無人值守環境中,當客戶端選擇從網絡啟動后,就會通過發送廣播數據包的形式尋找DHCP服務器,從DHCP獲得IP地址等參數后才可以通過TFTP共享讀取啟動文件。

(1)安裝DHCP服務操作 yum install -y dhcp
(2)修改配置文件以實現為客戶端分配網絡參數

[root@python ~]# vim /etc/dhcp/dhcp.conf
#dhcpd.conf
#
# Sample configuration file for ISC dhcpd
log-facility local7;

# A slightly different configuration for an internal subnet.
subnet 192.168.213.0 netmask 255.255.255.0 {
  range 192.168.213.3 192.168.213.254;
  option domain-name-servers 192.168.213.163;
  option subnet-mask 255.255.255.0;
  option routers 192.168.213.2;
  default-lease-time 600;
  max-lease-time 7200;
  next-server 192.168.213.163;
  filename "pxelinux.0";
}
[root@python ~]# systemctl start dhcpd
[root@python ~]# systemctl enable dhcpd
[root@python ~]# netstat -tunpl|grep 67
udp        0      0 0.0.0.0:67              0.0.0.0:*                           5440/dhcpd
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1506/dnsmasq

TFTP服務

TFTP服務為客戶端提供一種簡單的文件共享,他不具備向FTP那樣豐富的功能,不過由於簡單的設計,TFTP非常適用於傳輸小且簡單的PXE啟動文件。

#安裝TFTP
[root@python ~]# yum install -y tftp-server
#修改配置文件
[root@python ~]# cat /etc/xinetd.d/tftp
service tftp
{
        socket_type     = dgram
        protocol        = udp
        wait            = yes
        user            = root
        server          = /usr/sbin/in.tftpd
        server_args     = -s /var/lib/tftpboot
        disable         = no	#關閉禁用狀態
        per_source      = 11
        cps             = 100 2
        flags           = IPv4
}

安裝tftp的動態管理工具
tfpt是被xinetd動態管理的服務,啟動服務,只需要啟動xinetd即可

[root@python ~]# yum install xinetd
#將客戶端所需要的啟動引導文件復制到TFTP服務器
[root@python ~]# yum install -y syslinux	#通過該軟件包獲取引導文件
[root@python ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@python ~]# mount -o loop -t iso9660 /iso/CentOS-7-x86_64-DVD-1908.iso /var/ftp/centos7u7
[root@python ~]# cp /var/ftp/centos7u7/isolinux/vmlinuz /var/lib/tftpboot/centos7u7/
[root@python ~]# cp /var/ftp/centos7u7/isolinux/vesamenu.c32 /var/lib/tftpboot
[root@python ~]# cp /var/ftp/centos7u7/isolinux/initrd.img /var/lib/tftpboot/centos7u7/
[root@python ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@python ~]# cp /var/ftp/centos7u7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@python ~]# cd /var/lib/tftpboot/pxelinux.cfg/
[root@python pxelinux.cfg]# chmod 644 default
[root@python ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
timeout 60
display boot.msg
menu background splash.jpg
menu title CentOS X of Zhao

label centos7 64 <Auto Installation>
  menu label Install CentOS Linux ^7 x86_64 <Auto>
  kernel centos7u7/vmlinuz
  append initrd=centos7u7/initrd.img inst.stage2=ftp://192.168.213.163/centos7u7 inst.repo=ftp://192.168.213.163/centos7u7 inst.ks=ftp://192.168.213.163/centos-7-ks.cfg

label local
  menu default
  menu label Boot from ^local drive
  localboot 0xffff

menu end
#准備圖片
[root@python ~]# cp splash.jpg /var/lib/tftpboot/splash.jpg
[root@python ~]# systemctl start xinetd
[root@python ~]# systemctl enable xinetd
[root@python ~]# ss -nutlp|grep 69
udp    UNCONN     0      0         *:69                    *:*                   users:(("xinetd",pid=14264,fd=5))

FTP服務

FTP(file Transfer Protocol)文件傳輸協議,vsftp就是一種利用FTP協議進行數據共享的軟件,vsftp主要特色就是提供一種安全的數據共享服務

使用vsftp作為Centos系統文件的共享服務平台,當客戶端從網絡從網絡啟動正式進入到安裝界面后,還需要讀取Centos光盤中的系統文件,以完成最后的安裝,這些文件就通過vsftp共享給網絡用戶。

[root@python ~]# yum install -y vsftpd
[root@python ~]# systemctl start vsftpd
[root@python ~]# systemctl enable vsftpd

自動化安裝實例

初始化系統環境

[root@python ~]# systemctl stop firewalld
[root@python ~]# systemctl disable firewalld
[root@python ~]# sed -i.bak 's/=enforcing/=disabled/' /etc/sysconfig/selinux
[root@python ~]# sed -i.bak 's/=enforcing/=disabled/' /etc/selinux/config
[root@python ~]# setenforce 0
[root@python ~]# cd /var/ftp/

創建安裝目錄結構

[root@python ftp]# mkdir centos6u8
[root@python ftp]# mkdir centos7u7
[root@python ftp]# cd /var/lib/tftpboot/
[root@python tftpboot]# mkdir centos6u8
[root@python tftpboot]# mkdir centos7u7

配置啟動DHCP

配置啟動TFTP

創建自動應答文件

[root@python ~]# yum install system-config-kickstart
[root@python ~]# system-config-kickstart
#檢查有無語法錯誤
[root@python ~]# ksvalidator ks.cfg
[root@python ~]# mv ks.cfg /var/ftp/centos-7-ks.cfg

自動安裝虛擬機測試

踩坑

(1)引導裝載程序選項
在這里插入圖片描述

# System bootloader configuration
bootloader --location=mbr	#在主引導記錄(MBR)中安裝引導裝載程序
# Partition clearing information
clearpart --all

若不安裝引導裝載程序(如下),開機會黑屏,卡在booting from local disk

# System bootloader configuration
bootloader --location=none

內核參數添加 net.ifnames=0 biosdevname=0,會修改網卡名稱為eth0

# System bootloader configuration
bootloader --append="net.ifnames=0 biosdevname=0" --location=mbr

(2)安裝方法
在這里插入圖片描述FTP目錄也可在配置文件centos-7-ks.cfg中修改

(3)記得掛載鏡像
mount -o loop -t iso9660 /iso/CentOS-7-x86_64-DVD-1908.iso /var/ftp/centos7u7

若不掛載,會報錯 can't find installer maininage path in .treeinfo

Warning: can't find installer maininage path in .treeinfo
Warning: Downloading 'ftp://192.168.213.163/centos7u7/Live0S/squashfs.img' failed!
Warning anaconda: failed to fetch stage2 from ftp://192.168.213.163/centos7u7

(4)導出ks.cfg文件后,要修改名稱,在最后添加如下內容

%packages
@^minimal
@core
%end

(5)裝機圖片有尺寸(640像素*480像素)要求,不符合要求的可能圖片會顯示失敗
(6)不正確的鏡像可能會使操作系統安裝失敗

測試CentOS-6.10-x86_64-minimal.iso無法全自動安裝
在這里插入圖片描述
(7)報錯 failed to fetch kickstat from ftp
可能是selinux沒關或ftp未設置匿名模式
(8)VMware Workstation 與 Device/Credential Guard 不兼容
以管理員身份運行Windows Powershell (管理員)(Windows鍵+X),運行命令bcdedit /set hypervisorlaunchtype off,重啟電腦

此問題應該與windows的系統版本有關,是在windows 10自動更新后出現的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM