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
- Cobbler實現自動化安裝作業系統作業系統
- 通過 PXE 自動化安裝 Ubuntu ServerUbuntuServer
- kickstart+PXE+dhcp+nfs 批量無人值守自動化安裝作業系統NFS作業系統
- linux下搭建pxe自動化安裝環境薦Linux
- 無人值守自動化安裝系統
- PXE 網路化安裝linux系統—原理+步驟薦Linux
- RHEL7.3通過PXE啟動安裝作業系統作業系統
- PXE+DHCP+TFTP+NFS+Kickstart網路自動安裝配置簡化版FTPNFS
- PXE安裝
- PXE 基於網路自動安裝CentOS 6/7/8CentOS
- DHCP+TFTP+HTTP+Kickstart實現遠端自動安裝Linux系統FTPHTTPLinux
- 透過CRM系統實現工作流程自動化
- pxe+kickstart無人值守安裝linux作業系統Linux作業系統
- ZT:通過PXE遠端安裝Linux系統全程解析Linux
- 銀河麒麟、UOS系統龍芯mips64、arm64 PXE網路啟動、自動安裝實現,相容臺式、筆記本各種機器筆記
- 安信實驗室教你如何實現Windows自動安裝!Windows
- CRM系統實現自動化的“三部曲”
- 通過PXE安裝Linux實況薦Linux
- PXE介紹(PXE+kickstart無人值守安裝)
- 配置PXE Server實現網路啟動Server
- Golang 控制 iOS 裝置實現自動化操作GolangiOS
- Cobbler自動化批量安裝Linux作業系統 - 運維總結Linux作業系統運維
- 自動安裝Windows2000系統 (轉)Windows
- mydumper自動化安裝指令碼指令碼
- Linux 實現自動安裝服務元件以及優化核心引數Linux元件優化
- Selenium自動化實現web自動化-1Web
- 配置ks.cfg實現自動安裝過程
- 轉轉倉儲自動化系統實踐
- 使用NIM Server網路半自動安裝AIX系統ServerAI
- 【松溪】部署Linux系統的網路自動安裝Linux
- Win10系統可自動解除安裝“拙劣”系統更新補丁Win10
- [無人值守安裝作業系統]__RHEL6__FTP+TFTP+DHCP+Kickstart+PXE作業系統FTP
- Jenkins 自動化安裝外掛Jenkins
- IT 自動化:如何去實現
- Linux下批次部署安裝--PXELinux
- 介面自動化之實現日誌記錄封裝封裝
- 實戰-使用 Cobbler 定製化安裝指定系統