聯想 YOGA 智慧投影 T500 Play 明日首銷:2699 元,開機無廣告
一 PXE 原理和概念
PXE 是由 Intel 公司開發的網路引導技術,工作在 Client/Server 模式,允許客戶機通過網路從遠端伺服器下載引導映象,並載入安裝檔案或者整個作業系統。
PXE 嚴格來說並不是一種安裝方式,而是一種引導的方式。進行 PXE 安裝的必要條件是要安裝的計算機中包含一個 PXE 支援的網絡卡(NIC),即網絡卡中必須要有 PXE Client。PXE (Pre-boot Execution Environment)協議使計算機可以通過網路啟動。協議分為 client 和 server 端,PXE client 在網絡卡的 ROM 中,當計算機引導時,BIOS 把 PXE client 調入記憶體執行,由 PXE client 將放置在遠端的檔案通過網路下載到本地執行。執行 PXE 協議需要設定 DHCP 伺服器 和 TFTP 伺服器。DHCP 伺服器用來給 PXE client(將要安裝系統的主機)分配一個 IP 地址,由於是給 PXE client 分配 IP 地址,所以在配置 DHCP 伺服器時需要增加相應的 PXE 設定。此外,在 PXE client 的 ROM 中,已經存在了 TFTP Client。PXE Client 通過 TFTP 協議到 TFTP Server 上下載所需的檔案。
優點:
規模化:同時裝配多臺伺服器; Ø
自動化:安裝系統、配置各種服務; Ø
遠端實現:不需要光碟、U 盤等安裝介質。
前提條件:
客戶機的網絡卡支援 PXE 協議(整合 BOOTROM 晶片),且主機板支援網路引導。 Ø
網路中有一臺 DHCP 伺服器以便為客戶機自動分配地址、指定引導檔案位置。 Ø
伺服器通過 TFTP(Trivial File Transfer Protocol,簡單檔案傳輸協議)提供引導映象檔案的下載。其中,第一個條件實際上是硬體要求,目前絕大多數伺服器和大多數 PC 都能夠提供此支援,只需在 BIOS 設定中允許從 Network 或 LAN 啟動即可。
二 PXE伺服器和客戶機的工作過程
1.PXE客戶機發出DHCP請求,向DHCP伺服器申請IP地址,
2.DHCP伺服器響應PXE客戶機的請求,自動從IP地址池中分配一個IP地址給PXE客戶機,並且告知PXE客戶機:TFTP伺服器的IP地址和PXE載入程式檔案pxelinux.0,預設在TFTP共享目錄/var/lib/tftpboot/下
3.PXE客戶機向TFTP伺服器發起獲取pxelinux.0載入程式檔案的請求。
4.TFTP伺服器響應PXE客戶機的請求,將其共享的pxelinux.0檔案傳輸給PXE客戶機。
5.PXE客戶機通過網路來啟動到系統安裝主介面。
6.PXE客戶機向檔案共享伺服器(ftp、http、nfs等)發起獲取centos或windows系統安裝檔案的請求。
7.檔案共享服務響應PXE客戶機的請求,將共享的系統安裝檔案傳輸給PXE客戶機。
8.PXE客戶機進入到安裝提示嚮導介面,使用者需要手動來完成系統安裝的操作
三 搭建 PXE 遠端安裝伺服器
所需安裝包
vsftpd //用來放置安裝映象,通過ftp訪問映象安裝
dhcp.x86_64 12:4.2.5-7pd-3.0.2-27.el7.x86_64.r9.el7.centos //用來給客戶機分配ip
syslinux-4.05-15.el7.x86_64.rpm //用來提供pxe的載入程式
tftp-server.x86_64 0:5.2-22.el7.rpm //用來提供引導映象檔案的下載
xinetd.x86_64 2:2.3.15-14.el7 //用來託管tftp
system-config-kickstart.noarch 0:2.9.7-1.el7.rpm //用來無人值守安裝
環境準備:
一臺主機:配置雙網絡卡 一個作用是dhcp,選用ip為192.168.159.100
一臺作為pxe伺服器,
保證防火牆和增強屬於關閉狀態
新增新的網絡卡,並選VMnet1,僅主機模式
檢視VMnet1的網段,並修改新增網絡卡(命名ens37,)ip地址192.168.159.100
網絡卡新增成功
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37
[root@localhost network-scripts]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
[root@localhost network-scripts]# systemctl restart network
1、安裝並啟用 DHCP 服務
yum -y install dhcp
cp -rfp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
配置檔案裡做如下設定:
vim /etc/dhcp/dhcpd.conf
ddns-update-style none; // 禁止動態更新
subnet 192.168.159.0 netmask 255.255.255.0 { //配置網段
range 192.168.159.50192.168.159.60; //配置地址池
option routers 192.168.159.2; //配置閘道器
option domain-name-servers 114.114.114.114;
next-server 192.168.159.100; //指定tftp伺服器的地址(*)
filename "pxelinux.0"; //指定pxe載入程式的檔名(*)
}
注:可先安裝pxelinux.0
開啟DHCP
systemctl start dhcpd
systemctl enable dhcpd
2、安裝並啟用 TFTP 服務
TFTP:(Trivial File Transfer Protocol)是一個小而易於實現的檔案傳送協議。TFTP是基於UDP資料報,需要有自己的差錯改正措施。TFTP只支援檔案傳輸,不支援互動,沒有龐大的命令集。也沒有目錄列表功能,以及不能對使用者進行身份鑑別。但它的程式碼所佔記憶體較小,不需要硬碟就可以固化TFTP程式碼,很適合較小的計算機和特殊用途的裝置。
TFTP和FTP一個主要的區別就是它沒有互動式,且不進行身份驗證。
TFTP一般用於傳輸小檔案
安裝程式
yum install -y */tftp
yum install -y */xinetd
vim /etc/xinetd.d/tftp
tftp被xinet所託管,xinetd預設沒有安裝,配置檔案xinetd即extended internet daemon,xinetd是新一代的網路守護程序服務程式,又叫超級Internet伺服器。經常用來管理多種輕量級Internet服務。xinetd提供類似於inetd+tcp_wrapper的功能,但是更加強大和安全
service tftp
{
socket_type = dgram
protocol = udp
wait = no//wait no表示客戶機可以多臺一起連線,yes表示客戶機只能一臺一臺連線,表示是否開啟多執行緒一起工作,否則需要等待
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot //指定TFTP根目錄(引導檔案的儲存路徑) -c允許上傳
disable = no //disable no表示開啟TFTP服務
per_source = 11 //通過限制一個主機的最大連線數,從而防止某個主機獨佔某個服務,這裡每個IP地址的連線數是11個
cps = 100 2 //表示伺服器最多啟動100個連線,如果達到這個數目將停止啟動新服務2秒。在此期間不接受任何請求
flags = IPv4
}
由於 PXE 網路安裝的 Linux 核心、驅動檔案可以從 CentOS 7 系統光盤獲得, 分別為 vmlinuz 和 initrd.img,位於光碟目錄 images/pxeboot 下。找到這兩個檔案並將其複製到 tftp 服務的根目錄下
vmlinuz是可引導的、壓縮的核心。“vm”代表“Virtual Memory”。Linux 支援虛擬記憶體,不像老的作業系統比如DOS有640KB記憶體的限制。Linux能夠使用硬碟空間作為虛擬記憶體,因此得名“vm”。vmlinuz是可執行的Linux核心,它位於/boot/vmlinuz,它一般是一個軟連結。
initrd是“initial ramdisk”的簡寫(系統初始化檔案)。
initrd一般被用來臨時的引導硬體到實際核心vmlinuz能夠接管並繼續引導的狀態。initrd.img主要是用於載入ext4等檔案系統及scsi裝置的驅動。比如,使用的是scsi硬碟,而核心vmlinuz中並沒有這個scsi硬體的驅 動,那麼在裝入scsi模組之前,核心不能載入根檔案系統,但scsi模組儲存在根檔案系統的/lib/modules下。為了解決這個問題,可以引導一個能夠讀實際核心的initrd核心並用initrd修正scsi引導問題。
#準備 tftp 需要共享出去的檔案
mount /dev/cdrom /mnt
cd /mnt/images/pxeboot/
#核心檔案 核心初始化映象檔案 /var/lib/tftpboot/ 站點
cp initrd.img vmlinuz /var/lib/tftpboot/
systemctl start xinetd
systemctl enable xinetd
systemctl start tftp
systemctl enable tftp
3、準備 PXE 載入程式pxelinux.0
pxelinux.0是個二進位制檔案,主要作用相當於一個系統安裝步驟的指引,引導客戶端如何安裝系統
yum provides */pxelinux.0
//查詢這個檔案是由哪個軟體包安裝的,當不是一個路徑和一個軟體包時用*/
yum -y install syslinux
rpm -ql syslinux | grep pxelinux#查詢pxe載入程式的位置
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #拷貝到tftp的根目錄下,系統引導檔案
注,只有安裝了 system-config-kickstart 軟體包,才會有/usr/share/syslinux/目錄及目錄中的檔案
4、配置啟動選單檔案
啟動選單用來指導客戶機的引導過程,包括如何呼叫核心,如何載入驅動。預設的啟動選單檔案為 default,應放置在 tftp 根目錄的 pxelinux.cfg 子目錄下,典型的啟動選單配置可參考以下操作自動或手動建立。至於為什麼要是/var/lib/tftpboot/pxelinux.cfg/default檔案,因為是由pxelinux.0這個檔案決定好的
mkdir /var/lib/tftpboot/pxelinux.cfg
//預設pxelinux.cfg是沒有的需要手動建立,注意它是一個目錄而非檔案,雖然是以.cfg結尾
以下為純手工配置default選單檔案
vim /var/lib/tftpboot/pxelinux.cfg/default
default auto //指定預設入口名稱 ,對應下面的label auto
prompt 1//設定是否等待使用者選擇,1 表示等待使用者控制,0表示不等待使用者控制,安裝時會出現boot:如果按回車表示選擇auto模式
label auto //預設的圖形安裝
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.159.100/centos7 //method必須指定網路路徑
label linux text //文字安裝模式,出現boot:時輸入linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.159.100/centos7
label linux rescue //救援模式,出現boot:時輸入linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.159.100/centos7
5、安裝ftp服務,準備 CentOS 7 安裝源
yum -y install vsftpd
mount /dev/cdrom /mnt
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7 #將映象複製其中時間比較長,需等待
systemctl start vsftpd
6、客戶機驗證
直接回車,進入下一步
進入手動控制
PXE驗證完成
四 實現Kickstart無人值守安裝
1.準備安裝應答檔案
(1)安裝system-config-kickstart工具
yum install -y system-config-kickstart
(2)開啟"Kickstart配置程式”視窗
通過桌面選單"應用程式"-->"系統工具"-->"Kickstart”開啟或執行"system-config-kickstart”命令開啟
(3)配置kickstart選項
配置Kickstart(圖形化)
預設語言設為 中文(簡體)
時區設為 Asia/Shanghai
設定root密碼
高階配置中勾選 安裝後重啟
安裝方法選擇 FTP
FTP伺服器 ftp://TFTPIP
FTP目錄 centos7
引導裝載程式選項:安裝新引導裝載程式
主引導記錄:清除主引導記錄
分割槽:刪除所有現存分割槽
磁碟標籤:初始化磁碟標籤
新增分割槽:正常分割槽(需求)
新增網路裝置 ens33
網路型別設為 DHCP
驗證:無需操作
防火牆:禁用
(4)安裝後腳本的執行
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
echo“[local]
name=local
baseurl=ftp://192.168.100.100/centos7
enabled=1
gpgcheck=0” > /etc/yum.repos.d/local.repo
配置好以後儲存為ks.cfg檔案,儲存的路徑為/var/ftp下
注意:軟體包安裝預設是禁用的,如果需要啟用必須修改yum源配置檔案,將[]裡的內容改成development,立即生效
ks.cfg應答檔案解讀
# Install OS instead of upgrade
install //全新安裝
# Keyboard layouts
keyboard 'us' //英文鍵盤
# Root password
rootpw --iscrypted $1$9Rn8W7vF$npbKh8CeIbTxjwHUlcW4n0 //root密碼
# Use network installation
url --url="ftp://192.168.100.100/centos7" //網路安裝路徑
# System language
lang en_US //系統語言,zh_CN表示中文
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text //字元模式安裝,graphical表示圖形化安裝
firstboot --disable
# SELinux configuration
selinux --disabled //禁用selinux
# Firewall configuration
firewall --disabled //禁用防火牆
# Network information
network --bootproto=dhcp --device=ens33 //網絡卡配置
# Reboot after installation
reboot //安裝完重啟
# System timezone
timezone Asia/Shanghai // 時區:上海
# System bootloader configuration
bootloader --location=mbr //mbr引導
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel //清除所有分割槽資訊和初始化分割槽標籤
# Disk partitioning information
part / --fstype="xfs" --grow --size=1 //分割槽配置
part swap --fstype="swap" --size=2048
part /boot --fstype="xfs" --size=300
就是圖形化介面選擇像的對應引數
圖形化最小安裝
%packages
@base //安裝基礎軟體包
@^gnome-desktop-environment //安裝桌面環境
%end
如要求最小化安裝,可複製下面內容新增到最後
vim ks.cfg
%packages
@^minimal
%end
如果需要自己配置軟體包,需要編輯ks.cfg檔案
vim ks.cfg
新增至最後
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@development
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony
%end
可以到伺服器家目錄下檔案anaconda-ks.cfg中拷貝
新增 ks 引導引數至引導選單檔案
vi /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 0 ##值為“0”時表示自動執行ks.cfg檔案(無人值守)、為“1”時表示手動配置(有人值守
label auto
kernel vmlinuz
appendinitrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.159.100/ks.cfg
客戶端驗證無人值守安裝
客戶端調整引導方式為網路啟動
重啟後開始自動安裝
安裝成功,登入root成功