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

来源:https://www.cnblogs.com/zhaoya2019/archive/2020/04/23/12761520.html
-Advertisement-
Play Games

DHCP服務 DHCP伺服器主要實現在企業 內部網路 為客戶端 分配IP地址 等網路參數。 在無人值守環境中,當客戶端選擇從網路啟動後,就會通過 發送廣播數據包 的形式 尋找DHCP伺服器 ,從DHCP 獲得IP地址 等參數後才可以通過TFTP共用讀取啟動文件。 (1)安裝DHCP服務操作 (2)修 ...


在這裡插入圖片描述

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自動更新後出現的


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在 WPF 中,如果想要使用代碼控制,讓某個視窗作為當前用戶的輸入的邏輯焦點的視窗,也就是在當前用戶活動的視窗的最上層視窗,預設使用 Activate 方法,通過這個方法在大部分設備都可以做到激活視窗 ...
  • wget簡介 GNU Wget(常簡稱為Wget)是一個在網路上進行下載的簡單而強大的自由軟體,其本身也是GNU計劃的一部分。它的名字是“World Wide Web”和“Get”的結合,同時也隱含了軟體的主要功能。當前它支持通過HTTP、HTTPS,以及FTP這三個最常見的TCP/IP協議協議下載 ...
  • haproxy的配置文件大概可以分兩段;第一段配置上global配置段即全局配置段,主要是針對haproxy的進程和安全相關的;第二段是proxies代理配置段,主要是配置haproxy前端監聽那個地址那個埠以及後端server的名稱、地址、埠,以及server相關屬性等配置;而proxies... ...
  • Linux 系統安裝 Docker 環境說明 安裝與配置 安裝 docker 依賴包 設置 docker 鏡像源,國內的考慮使用阿裡雲鏡像 更新並安裝 docker ce Docker CE 是免費的 Docker 產品的新名稱,Docker CE 包含了完整的 Docker 平臺,非常適合開發人員 ...
  • Linux系統的塊大小(Block Size)怎麼查看呢?下麵總結一些常用的查看塊大小(block size)的方法。 方法1: fdisk -l查看block size [root@KerryDB ~]# fdisk -l /dev/sda1 Disk /dev/sda1: 106 MB, 106... ...
  • 我們知道i.MXRT1170是雙核MCU,主核Cortex-M7的TCM ECC由FlexRAM模塊負責,那麼從核Cortex-M4的TCM有沒有ECC呢?如果有的話,是由哪個模塊負責的呢?本篇給你解答。 ...
  • 今天用虛擬機(VM)安裝好centos7後,發現無法連接網路,百思不得其解: 第一步:找到需要修改的文件位置,查明原因 #1.查看網路是否可以ping通 ~ ping www.baidu.com #2.查看ip和網路配置信息 ~ id addr #3.根據提供的信息找到相關文件 ~ cd /etc/ ...
  • 1)先關閉防火牆和selinux 2)下載nginx源碼包 提示:如果本地有源碼包,可以使用xftp 工具拉到伺服器上。還可以使用複製nginx官網的地址鏈接直接下載本地。這裡就是同從官網拉取了! 3)拆看是否下載成功 4)解壓源碼包 5)安裝nginx依賴包 6)安裝nginx 指定安裝某個目錄, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...