無人值守自動安裝linux系統
PXE基本原理概述
什麽是PXE?
PXE:pre-boot executionenvironment預啟動執行環境
由intel公司開發的技術
工作於C/s的網絡模式
Client通過網絡從server下載映像,並通過網絡啟動操作系統
應用場景
liveOS
OS安裝
PXE基本原理
1 Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC 地址),如果合法則返回Client的IP 地址,同時將啟動文件pxelinux.0 的位置信息一並傳送給Client
2 Client向PXE Server上的TFTP發送獲取
3 Client 執行接收到的pxelinux.0 文件
4 Client 向TFTP Server 發送針對本機的配置信息文件(在TFTP 服務的pxelinux.cfg目錄下),TFTP 將配置文件發回Client ,繼而Client 根據配置文件執行後續操作。
5 Client 向TFTP 發送Linux 內核請求信息,TFTP 接收到消息之後將內核文件發送給Client
6 Client 向TFTP 發送根文件請求信息,TFTP接收到消息之後返回Linux 根文
件系統
7 Client 啟動Linux 內核
8 Client下載安裝源文件,讀取自動化安裝腳本
構建自動化安裝系統的pxe服務
準備工作
關閉防火墻和seLinux
[[email protected] ~]# iptables -F [[email protected] ~]# setenforce 0 |
配置DHCP服務器
[[email protected] ~]# yum -y install dhcp [[email protected] ~]# cat /etc/dhcp/dhcpd.conf subnet 192.168.10.0 netmask 255.255.255.0{ range 192.168.10.100 192.168.10.200; next-server 192.168.10.1; #TFTP服務器地址 filename "pxelinux.0"; #Bootstrap文件名稱 } [[email protected] ~]# systemctl restart dhcpd |
創建kiskstart文件
kickstart文件可以三種生成方式:
手動書寫
通過system-config-kickstart圖形工具
anaconda安裝程序自動生成
[roo[email protected] ~]# yum install -y system-config-kickstart [[email protected] ~]# system-config-kickstart 啟動kickstart圖形工具 |
啟動後按照自定義生成文件與安裝系統界面相同這裏不再闡述。
註意:centos7.3如果使用光盤鏡像做的yum源會出現下面包無法選擇的情況
需要修改yum倉庫名稱為development才可以選擇安裝包。
[[email protected] ~]# cat /etc/yum.repos.d/base.repo [development] #這個地方修改為development name=zachary baseurl=file:///mnt/cdrom gpgcheck=0 |
根據圖形向導生成一個ks.cfg的文件。
安裝syslinux軟件包
[[email protected] ~]# yum -y install syslinux |
配置FTP服務器
此步驟可以使用其他類型服務器,比如nfs或者http
#安裝ftp服務器 [[email protected] ~]# yum -y install vsftpd #配置安裝系統所需的軟件倉庫 [[email protected] ~]# mkdir -pv /var/ftp/pub/centos/{6,7} [[email protected] ~]# mount /dev/sr0 /var/ftp/pub/centos/7 [[email protected] ~]# mount /dev/sr1 /var/ftp/pub/centos/6 [[email protected] ~]# mkdir –v /var/ftp/pub/ks [[email protected] ~]# mv ks6.cfg ks7.cfg /var/ftp/pub/ks/ks.cfg [[email protected] ks]# chmod +r /var/ftp/pub/ks/* #註意權限 |
註意:在配置完成ftp中的軟件倉庫後,一定要驗證該倉庫可用(瀏覽器查看一下)
TFTP服務器配置
[[email protected] ~]# yum -y install tftp-server [[email protected] ~]# cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/ [[email protected] ~]# mkdir –v /var/lib/tftpboot/{pxelinux.cfg,centos7.3,centos6.9} [[email protected] ~]# cp -v /var/ftp/pub/centos/7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7.3/ [[email protected] ~]# cp -v /var/ftp/pub/centos/6/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos6.9/ [[email protected] pxelinux.cfg]# cat default default menu.c32 timeout 300 menu title ########## PXE Boot Menu ########## label centos6.9 menu label ^Kickstart Inatall CentOS 6.9 menu default kernel centos6.9/vmlinuz append ks=ftp://192.168.10.3/pub/ks/ks6.cfg initrd=centos6.9/initrd.img label centos7.3 menu label ^Kickstart Inatall CentOS 7.3 menu default kernel centos7.3/vmlinuz append ks=ftp://192.168.10.3/pub/ks/ks7.cfg initrd=centos7.3/initrd.img |
註意:如果使用centos6來搭建pxe 服務器,tftp由xinetd服務來管理這種非獨立服務。
設置相關服務啟動
[[email protected] ~]# systemctl enable dhcpd.service [[email protected] ~]# systemctl start dhcpd.service [[email protected] ~]# systemctl enable tftp.socket [[email protected] ~]# systemctl start tftp.socket [[email protected] ~]# systemctl enable vsftpd.service [[email protected] ~]# systemctl start vsftpd.service |
測試
排錯思路
每個服務器在測試過程中的排錯都是根據其原來和返回的錯誤信息來進行錯誤的排查。PXE也不例外。
1客戶端要使用pxe安裝操作系統,首先要有一塊支持pxea安裝的網卡。
2 網卡獲取ip地址 。網卡要正確獲取ip地址和tftp服務器地址(next-sever)就需要檢查dhcp配置選項。
3 正確獲取ip地址後,tftp服務無法使用的常見情況有下面幾種
dhcp配置文件中next-server地址與地址不符。
防火墻和selinux不允許訪問tftp,這時可以對其做相應配置。簡單方法是直接關閉。
tftp配置出現錯誤,可以通過這個目錄樹結構檢查
[[email protected] tftpboot]# tree . ├── centos6.9 │?? ├── initrd.img │?? └── vmlinuz ├── centos7.3 │?? ├── initrd.img │?? └── vmlinuz ├── menu.c32 ├── pxelinux.0 └── pxelinux.cfg ├── default |
4 出現菜單文件後,基本上就與tftp沒什麽太大關系了。這時如果出現錯誤就是內核選項的參數問題,或者鏡像倉庫問題。以及ks文件的問題。如果在搭建過程中搭建軟件倉庫的那個步驟做過詳細檢查的話,一般這裏不會出現大的錯誤。
問題一般出現在權限問題,路徑問題。
5 特別提醒:在tftp服務器中的內核文件和ramfs一定要與安裝鏡像中的一致。
本文出自 “Keep simple keep stupid” 博客,請務必保留此出處http://yangzhiheng.blog.51cto.com/11586378/1966365
無人值守自動安裝linux系統