PXE實現系統自動化安裝
PXE簡介
預啟動執行環境(Preboot eXecution Environment,PXE,也被稱為預執行環境)提供了一種使用網路介面(Network Interface)啟動計算機的機制。這種機制讓計算機的啟動可以不依賴本地資料儲存裝置(如硬碟)或本地已安裝的作業系統。
原理圖
圖片是網路上找的,侵刪
流程
第一步:客戶端廣播,尋找DHCP伺服器,DHCP伺服器響應,並提供ip地址和bootstrap檔案(即pxelinux.0)位置
第二步:客戶端有了ip地址之後,向TFTP請求pxelinux.0檔案(這個檔案的位置是DHCP伺服器告訴客戶端的),TFTP響應請求並返回pxelinux.0給客戶端
第三步:客戶端執行pxelinux.0檔案
第四步:客戶端向TFTP請求pxelinux.cfg檔案,TFTP響應並返回pxelinux.cfg給客戶端
第五步:客戶端讀pxelinux.cfg這個檔案
第六步:客戶端向TFTP請求壓縮格式的核心檔案vmlinuz,TFTP響應並返回vmlinuz給客戶端
第七步:客戶端向TFTP請求initrd.img檔案(臨時根檔案系統),TFTP響應並返回initrd.img檔案
第八步:客戶端載入核心,掛載臨時根檔案系統,啟動系統安裝流程
第九步:客戶端請求Kickstart檔案(http,nfs,cdrom等方式都可以,具體看設定)
第十步:客戶端讀取Kickstart檔案自動安裝系統
環境
DHCP伺服器
ip:192.168.253.129
系統:CentOS6
TFTP伺服器
ip:192.168.253.129
系統:CentOS6
HTTPD伺服器
ip:192.168.253.129
DHCP
簡介
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個區域網的網路協議,使用UDP協議工作, 主要有兩個用途:給內部網路或網路服務供應商自動分配IP地址,給使用者或者內部網路管理員作為對所有計算機作中央管理的手段,DHCP有3個埠,其中UDP67和UDP68為正常的DHCP服務埠,分別作為DHCP Server和DHCP Client的服務埠;546號埠用於DHCPv6 Client,而不用於DHCPv4,是為DHCP failover服務,這是需要特別開啟的服務,DHCP failover是用來做“雙機熱備”的。
DHCP原理
- DHCP Client以廣播的方式發出DHCP Discover報文。
- 所有的DHCP Server都能夠接收到DHCP Client傳送的DHCP Discover報文,所有的DHCP Server都會給出響應,向DHCP Client傳送一個DHCP Offer報文。
DHCP Offer報文中“Your(Client) IP Address”欄位就是DHCP Server能夠提供給DHCP Client使用的IP地址,且DHCP Server會將自己的IP地址放在“option”欄位中以便DHCP Client區分不同的DHCP Server。DHCP Server在發出此報文後會存在一個已分配IP地址的紀錄。
DHCP Client只能處理其中的一個DHCP Offer報文,一般的原則是DHCP Client處理最先收到的DHCP Offer報文。 - DHCP Client會發出一個廣播的DHCP Request報文,在選項欄位中會加入選中的DHCP Server的IP地址和需要的IP地址。
- DHCP Server收到DHCP Request報文後,判斷選項欄位中的IP地址是否與自己的地址相同。如果不相同,DHCP Server不做任何處理只清除相應IP地址分配記錄;如果相同,DHCP Server就會向DHCP Client響應一個DHCP ACK報文,並在選項欄位中增加IP地址的使用租期資訊。
- DHCP Client接收到DHCP ACK報文後,檢查DHCP Server分配的IP地址是否能夠使用。如果可以使用,則DHCP Client成功獲得IP地址並根據IP地址使用租期自動啟動續延過程;如果DHCP Client發現分配的IP地址已經被使用,則DHCP Client向DHCPServer發出DHCP Decline報文,通知DHCP Server禁用這個IP地址,然後DHCP Client開始新的地址申請過程。
- DHCP Client在成功獲取IP地址後,隨時可以通過傳送DHCP Release報文釋放自己的IP地址,DHCP Server收到DHCP Release報文後,會回收相應的IP地址並重新分配
安裝
安裝dhcp程式包
yum install -y dhcp
複製DCHP模版檔案
/bin/cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
修改模版檔案/etc/dhcp/dhcpd.conf
[root@localhost ~]# grep -vE "#|^$" /etc/dhcp/dhcpd.conf
option domain-name "ice.com";
option domain-name-servers 192.168.253.2;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.253.0 netmask 255.255.255.0 { #負責的網段
range 192.168.253.200 192.168.253.205; #分配的地址範圍
option routers 192.168.253.2; #告知客戶端閘道器地址
}
next-server 192.168.253.129; #tftp伺服器地址
filename="pxelinux.0"; #向tftp請求的檔案
接下來可以測試一下看是否配置成功了
啟動DHCP
/etc/init.d/dhcpd start
為了不影響實驗,先把vmware的dhcp關了
另外開一臺虛擬機器測試,從下圖可以看到DHCP工作的幾個步驟。
TFTP
簡介
簡單檔案傳輸協議也稱小型檔案傳輸協議(Trivial File Transfer Protocol, TFTP),是一種於1981年在RFC 783中定義的簡化的檔案傳輸協議(FTP)。
小型檔案傳輸協議非常簡單,通過少量儲存器就能輕鬆實現——這在當時是很重要的考慮因素。所以TFTP被用於引導計算機,例如沒有大容量儲存器的路由器。現在它仍然被用於在一個網路上主機之間傳輸小檔案,例如從一臺網路主機或伺服器引導一個遠端X Window System終端或其他的瘦客戶端。TFTP 用 UDP 埠號 69 進行檔案傳輸活動。
流程
- 初始化主機A送一個讀請求(RRQ)或寫請求(WRQ)包給主機B,包含了檔名和傳輸模式。
- B向A發一個ACK包應答,同時也通知了A其餘送往B包應該傳送的埠號。
- 源主機向目的主機送編過號的資料包,除了最後一個都應該包含一個全尺寸的資料塊。目的主機用編號的ACK包應答所有的資料包。
- 最終的資料包必須包含少於最大尺寸的資料塊以表明這是最後一個包。如果被傳輸檔案正好是尺寸塊的整數倍,源主機最後送的資料包就是0位元組的。
安裝
安裝tftp服務和syslinux(包含我們需要的pxelinux.0等檔案)
yum -y install syslinux tftp-server tftp
複製相關檔案到tftp共享目錄下(需要先掛載光碟)
CentOS6與CentOS7目錄結構有一些不一樣
這是CentOS6的情況
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /media/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改配置檔案/var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.9!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ip=192.168.253.200 netmask=255.255.255.0 gateway=192.168.253.2 ks=http://192.168.253.129/ks.cfg #這裡指定ks檔案位置
啟動tftp順便測試一下
chkconfig tftp on
service xinetd restart
說明tftp沒有問題
如果是CentOS7
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg/
修改配置檔案/var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE Menu
LABEL linux
MENU LABEL Install CentOS 7 x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img ip=192.168.253.200 netmask=255.255.255.0 gateway=192.168.253.2 ks=http://192.168.253.129/ks.cfg #這裡的ks檔案根據具體情況自定義
httpd
這裡使用http方式傳送ks檔案所以需要個httpd服務
安裝
yum install httpd -y
編寫ks檔案/var/www/html/ks.cfg
[root@localhost ~]# cat /var/www/html/ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="https://mirrors.aliyun.com/centos/6/os/x86_64/"
# Root password
rootpw --iscrypted $1$.EaLyDeQ$FujxZcce.b3ZpI1MI9JWR0
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Network information
network --bootproto=static --device=eth0 --gateway=192.168.253.2 --ip=192.168.253.181 --nameserver=192.168.253.2 --netmask=255.255.255.0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="ext4" --size=150
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1
%packages
@base
@development
%end
啟動httpd服務
/etc/init.d/httpd start
測試一下
接下來就簡單了,建立一臺虛擬機器,不需要匯入映象直接開機,然後就可以喝茶看報紙等安裝完成了
相關文章
- kickstart半自動安裝centos系統與pxe自動安裝centos系統CentOS
- 通過 PXE 自動化安裝 Ubuntu ServerUbuntuServer
- kickstart+PXE+dhcp+nfs 批量無人值守自動化安裝作業系統NFS作業系統
- 無人值守自動化安裝系統
- RHEL7.3通過PXE啟動安裝作業系統作業系統
- PXE 基於網路自動安裝CentOS 6/7/8CentOS
- 銀河麒麟、UOS系統龍芯mips64、arm64 PXE網路啟動、自動安裝實現,相容臺式、筆記本各種機器筆記
- 透過CRM系統實現工作流程自動化
- 安信實驗室教你如何實現Windows自動安裝!Windows
- CRM系統實現自動化的“三部曲”
- Golang 控制 iOS 裝置實現自動化操作GolangiOS
- Selenium自動化實現web自動化-1Web
- Jenkins 自動化安裝外掛Jenkins
- mydumper自動化安裝指令碼指令碼
- 配置ks.cfg實現自動安裝過程
- 使用NIM Server網路半自動安裝AIX系統ServerAI
- Win10系統可自動解除安裝“拙劣”系統更新補丁Win10
- 轉轉倉儲自動化系統實踐
- Linux安裝SVN實現自動同步到Web目錄LinuxWeb
- iOS超級籤系統用裝置udid自動安裝方式流程iOS
- PXE+Kickstart無人值守安裝安裝Centos7.9CentOS
- 實戰-使用 Cobbler 定製化安裝指定系統
- IT 自動化:如何去實現
- pxe基礎的批次化裝機
- 自動化運維-Python paramiko 實現無客戶端系統巡檢運維Python客戶端
- 帶你用 Python 實現自動化群控裝置Python
- 介面自動化之實現日誌記錄封裝封裝
- Ios+appium自動化多裝置執行實現iOSAPP
- PXE遠端CentOS安裝anaconda報錯CentOS
- win10系統自動安裝軟體怎麼禁止_禁止win10自動安裝軟體的步驟Win10
- polipo/privoxy 實現 Linux 系統全域性/自動代理Linux
- AutoRunner 功能自動化測試專案實訓之crm客戶管理系統試用安裝包下載(二十)
- devops系統自動化部署流程dev
- Ansible自動化部署工具-role模式安裝filebeat實際案例分析模式
- CRM系統透過三方面實現銷售自動化
- 能夠實現營業自動化的CRM系統四大功能
- 財務管理系統如何幫助企業實現財務自動化管理?
- uefi啟動U盤如何安裝系統_uefi啟動u盤安裝系統的方法