無人值守自動安裝linux系統


PXE基本原理概述


什麼是PXE?

PXEpre-boot executionenvironment預啓動執行環境

intel公司開發的技術

工作於C/s的網絡模式

Client通過網絡從server下載映像,並通過網絡啓動操作系統

應用場景

       liveOS

       OS安裝

PXE基本原理

  1. ClientPXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC 地址),如果合法則返回ClientIP 地址,同時將啓動文件pxelinux.0 的位置信息一併傳送給Client

  2. ClientPXE Server上的TFTP發送獲取pxelinux.0請求消息,TFTP 接收到消息之後再向Client發送pxelinux.0大小信息,試探Client 是否滿意,當TFTP 收到Client 發回的同意大小信息之後,正式向Client 發送pxelinux.0

  3. Client 執行接收到的pxelinux.0 文件

  4. Client TFTP Server 發送針對本機的配置信息文件(在TFTP  服務的pxelinux.cfg目錄下),FTP 將配置文件發回Client ,繼而Client 根據配置文件執行後續操作。

  5. Client TFTP 發送Linux 內核請求信息,TFTP 接收到消息之後將內核文件發送給Client。

  6. Client TFTP 發送根文件請求信息,TFTP接收到消息之後返回Linux 根文件系統。

  7. Client 啓動Linux 內核。

  8. Client下載安裝源文件,讀取自動化安裝腳本。wKiom1m_cuOj2QXUAAAxdsOKPSg638.png

構建自動化安裝系統的pxe服務



準備工作

關閉防火牆和seLinux

[root@centos7  ~]# iptables -F

[root@centos7  ~]# setenforce 0

配置DHCP服務器

[root@centos7  ~]# yum -y install dhcp

[root@centos7  ~]# 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文件名稱

}

[root@centos7  ~]# systemctl restart dhcpd

創建kiskstart文件

kickstart文件可以三種生成方式:

       手動書寫

       通過system-config-kickstart圖形工具

       anaconda安裝程序自動生成

[root@centos7 ~]# yum  install -y system-config-kickstart

[root@centos7  ~]# system-config-kickstart 啓動kickstart圖形工具

 

啓動後按照自定義生成文件與安裝系統界面相同這裏不再闡述。

注意:centos7.3如果使用光盤鏡像做的yum源會出現下面包無法選擇的情況

wKioL1m_cv_i-oaqAAD6aBAJsKU787.png

需要修改yum倉庫名稱爲development纔可以選擇安裝包。


[root@centos7  ~]# cat /etc/yum.repos.d/base.repo

[development]     #這個地方修改爲development

name=zachary

baseurl=file:///mnt/cdrom

gpgcheck=0


wKiom1m_c0Xx8juDAAGS-XdXG7c743.png

根據圖形嚮導生成一個ks.cfg的文件。

安裝syslinux軟件包

[root@centos7 ~]# yum -y install syslinux

 

配置FTP服務器

此步驟可以使用其他類型服務器,比如nfs或者http

#安裝ftp服務器

[root@centos7  ~]# yum -y install vsftpd

#配置安裝系統所需的軟件倉庫

[root@centos7  ~]# mkdir -pv /var/ftp/pub/centos/{6,7}

[root@centos7  ~]# mount /dev/sr0 /var/ftp/pub/centos/7

[root@centos7  ~]# mount /dev/sr1 /var/ftp/pub/centos/6

[root@centos7  ~]# mkdir –v /var/ftp/pub/ks

[root@centos7  ~]# mv ks6.cfg ks7.cfg /var/ftp/pub/ks/ks.cfg

[root@centos7  ks]# chmod +r /var/ftp/pub/ks/*  #注意權限

 

注意:在配置完成ftp中的軟件倉庫後,一定要驗證該倉庫可用(瀏覽器查看一下)

TFTP服務器配置

[root@centos7 ~]# yum -y  install tftp-server

[root@centos7 ~]# cp  /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/

[root@centos7 ~]# mkdir –v  /var/lib/tftpboot/{pxelinux.cfg,centos7.3,centos6.9}

[root@centos7 ~]# cp -v /var/ftp/pub/centos/7/isolinux/{vmlinuz,initrd.img}  /var/lib/tftpboot/centos7.3/

[root@centos7 ~]# cp -v /var/ftp/pub/centos/6/isolinux/{vmlinuz,initrd.img}  /var/lib/tftpboot/centos6.9/

[root@centos7  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 服務器,tftpxinetd服務來管理這種非獨立服務。

 

設置相關服務啓動

[root@centos7  ~]# systemctl enable dhcpd.service

[root@centos7  ~]# systemctl start dhcpd.service

[root@centos7  ~]# systemctl enable tftp.socket

[root@centos7  ~]# systemctl start tftp.socket

[root@centos7  ~]# systemctl enable vsftpd.service

[root@centos7  ~]# systemctl start vsftpd.service

 

測試



wKioL1m_c2uAGaxfAAAVt_ejZcI229.png


wKiom1m_c5ySdR0sAAASw0f4Qis017.png


wKiom1m_c5zjIoXQAAAUGZrY8tg472.png



 

排錯思路


每個服務器在測試過程中的排錯都是根據其原來和返回的錯誤信息來進行錯誤的排查。PXE也不例外。

1客戶端要使用pxe安裝操作系統,首先要有一塊支持pxea安裝的網卡。

2 網卡獲取ip地址 。網卡要正確獲取ip地址和tftp服務器地址(next-sever)就需要檢查dhcp配置選項。

3 正確獲取ip地址後,tftp服務無法使用的常見情況有下面幾種

       dhcp配置文件中next-server地址與地址不符。

       防火牆和selinux不允許訪問tftp,這時可以對其做相應配置。簡單方法是直接關閉。

       tftp配置出現錯誤,可以通過這個目錄樹結構檢查

[root@centos7  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一定要與安裝鏡像中的一致。

       


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章