搭建UEFI PXE 基於linux相關資料


https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-anaconda-boot-options.html#sect-boot-options-installer

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-anaconda-boot-options.html#sect-boot-options-installer

 

查看apache的版本信息,如果是通過yum,或者是rpm安裝的,可以使用rpm -qa |gerp httpd 來查看;

Grub相關資料:

http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=229387

http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=229387

http://forum.ubuntu.org.cn/viewtopic.php?t=290405

http://www.xiyang-liu.com/2014/11/16/auto-install-linux-by-pxelinux/

 

配置PXE環境自動安裝Linux

前言

一般情況下,新服務器上架。都需要系統管理員手工安裝系統,配置IP地址,然后遠程登陸服務器進行軟件安裝、配置之類的管理。這種方式,在服務器數量還不多的情況下,是正常的。試想,如果一次上架上百台服務器,再依次安裝操作系統,將是一種災難。很難在規定的時間內將服務器順利上架並配置完畢。

這就需要在大型機房中,以DHCP+DNS模式管理服務器IP地址和主機名。服務器上架前,以其MAC地址為依據,在DHCP中配置主機保留並分配主機名。DHCP結合TFTP提供的PXE服務,提供PXE引導Linux內核和啟動鏡像,通過自動應答文件來實現操作系統的自動安裝和配置。就Linux來說,安裝后啟動saltstack客戶端salt-minion服務即可實現新服務器的自動受控。其余的安裝服務便可以通過saltstack來完成。自始至終,將不用通過ssh形式登陸新服務器,且可以實現軟件包的自動化安裝和配置管理。

理論描述

自動啟動安裝過程

服務器從第一次加電到連接到salt-master主機,受其集中管理,將經過以下一系列過程:

  1. 系統管理員在DHCP服務器中將其MAC地址綁定到特定IP地址和主機名,並指定PXE啟動文件。
  2. 服務器加電啟動,通過PXE獲取IP地址並加載PXEClient,以TFTP的形式獲取Linux內核和初始化啟動映像。
  3. 服務器加載自動應答腳本,通過網絡獲取軟件包,來自動安裝Linux系統。安裝並開機啟動salt-minion服務。
  4. 服務器安裝完成並重新啟動后,自動獲取IP地址,連接salt-master請求受控。
  5. salt-master控制新服務器后,以管理員配置模板自動安裝軟件包配置服務,管理新主機。

以上過程我們需要架設的服務有DNS、DHCP、TFTP、HTTP/FTP服務。其中,DHCP和DNS提供地址和主機名分配,TFTP提供PXE啟動映像,HTTP/FTP作為Linux軟件倉庫提供安裝過程中需要的軟件包。

DHCP Option 60

DHCP Option 60 Vendor class identifier為廠商類標識符。這個選項作用於客戶端可選地識別客戶端廠商類型和配置。這個信息是N個8位編碼,由DHCP服務端解析。廠商可能會為客戶端選擇定義特殊的廠商類標識符信息,以便表達特殊的配置或者其他關於客戶端的信息。比如:這個標識符可能編碼了客戶端的硬件配置。客戶端發送過來的服務器不能解析的類規范信息必須被忽略(盡管可能會有報告)。服務器響應廠商規范信息到客戶端應該僅僅通過Option 43來完成。

此信息需要在DHCP服務器上定義,DHCP服務器通過其判斷客戶端是不是PXEClient。並通過其Arch代碼來判斷其平台,以此為依據提供不同的PXE引導程序給客戶端。

PXE和gPXE

PXE(preboot execute environment,預啟動執行環境)是由Intel公司開發的最新技術,工作於Client/Server的網絡模式,支持工作站通過網絡從遠端服務器下載映像,並由此支持通過網絡啟動操作系統。在啟動過程中,BIOS把PXEClient調入內存中執行,然后由PXEClient向DHCP服務器請求分配IP地址,再用TFTP或MTFTP協議下載一個啟動軟件包到本機內存中執行,由這個啟動軟件包完成終端基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。

gPXE是一個開源的網絡啟動器。它提供了一個直接的PXE替代方案,並且提供DNS、HTTP、iSCSI等多種額外功能。另外,由於gPXE存在商業收購風險。其開發者又啟動了一個名為iPXE的開源項目。作為gPXE的一個分支。iPXE支持HTTP、ISCSI、FCoE、Wi-Fi、InfiniBand等多種啟動方式。且支持通過腳本來控制啟動過程。

BIOS和UEFI

BIOS(Basic Input/Output System的縮寫、中文:基本輸入輸出系統),在IBM PC兼容機上,是一種業界標准的固件接口。BIOS這個字眼是在1975第一次由CP/M操作系統中出現。BIOS是個人電腦啟動時加載的第一個軟件。

BIOS用於計算機開機時執行系統各部分的的自檢,並啟動引導程序或裝載在內存的操作系統。此外,BIOS還向操作系統提供一些系統參數。系統硬件的變化是由BIOS隱藏,程序使用BIOS服務而不是直接訪問硬件。現代操作系統會忽略BIOS提供的抽象層並直接訪問硬件組件。

UEFI,全稱“統一的可擴展固件接口”(Unified Extensible Firmware Interface),是一種詳細描述類型接口的標准。這種接口用於操作系統自動從預啟動操作環境,加載到一種操作系統上。

可擴展固件接口(Extensible Firmware Interface,EFI)是 Intel 為 PC 固件的體系結構、接口和服務提出的建議標准。其主要目的是為了提供一組在 OS 加載之前(啟動前)在所有平台上一致的、正確指定的啟動服務,被看作是有近20多年歷史的 BIOS 的繼任者。

另外,由於UEFI不支持32位,所以UEFI部分只討論x64平台。由於沒有實驗環境,不支持安騰架構。

操作步驟

預安裝配置環境

以下操作以CentOS為平台,配置過程中涉及到的HTTP/FTP,DNS,DHCP等基礎服務,這里不再討論他們的安裝配置方法。只要能滿足如下功能即可:

  • HTTP/FTP服務:提供軟件倉庫,包括內核、啟動映像、cfg等相關文件的下載
  • DNS服務:提供xiyang-liu.com、salt-master.xiyang-liu.com等內部主機名的解析
  • DHCP服務器:為客戶及分配IP地址。

在開始接下來的配置之前,確保客戶機能夠正常使用以上三類服務,且DHCP服務器可以正常使用HTTP/FTP服務。如果在所有的配置中都使用IP地址,而不是主機名,則可以忽略DNS服務要求。

DHCP初始配置文件內容如下:

authoritative; ddns-update-style none; ignore client-updates; one-lease-per-client true; shared-network main { subnet 10.17.25.0 netmask 255.255.255.0 { option routers 10.17.25.254; option subnet-mask 255.255.255.0; option domain-name "xiyang-liu.com"; pool { range 10.17.25.200 10.17.25.210; host nagios-test { hardware ethernet 00:0d:56:66:82:c3; fixed-address 10.17.25.200; } } } } shared-network xxzx { subnet 10.17.15.0 netmask 255.255.255.0 { option routers 10.17.15.254; option subnet-mask 255.255.255.0; option domain-name "xiyang-liu.com"; option domain-name-servers 10.17.26.88, 8.8.8.8; default-lease-time 86400; max-lease-time 172800; pool { range 10.17.15.1 10.17.15.20; } } }

 

配置TFTP服務

這里選擇在DHCP服務器上配置和安裝TFTP服務,以提供PXE引導程序的下載。

通過以下命令安裝TFTP服務

yum install tftp-server xinetd -y

 

修改TFTP服務配置如下所示:

[root@dhcp ~]# sed '/^#/d' /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol  = udp wait = yes user = root server= /usr/sbin/in.tftpd server_args = -v -s /var/lib/tftpboot  #啟用調試輸出 disable   = no  #啟用服務 per_source = 11 cps  = 100 2 flags = IPv4 }

 

啟動TFTP服務,並修改其防火牆設置,使其有如下所示的輸出:

[root@dhcp ~]# chkconfig xinetd on [root@dhcp ~]# grep 69 /etc/sysconfig/iptables -A INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT

 

驗證TFTP服務

安裝完成TFTP服務器后,先對其正常工作與否進行驗證,否則后面除了問題不好排錯。

運行TFTP服務后,在/var/lib/tftpboot/目錄中創建測試文件

cp /root/install.log /var/lib/tftpboot/

 

使用Windows 7/8的TFTP命令,來下載服務器端的install.log文件,以確保TFTP服務可用。如出現未找到TFTP命令,請在Windows控制面板—程序—啟用或禁用Windows功能中,勾選TFTP客戶端,點擊確定。來為Windows 7安裝TFTP客戶端。

 

禁用Windows防火牆,或者在控制面板—高級安全Windows防火牆界面—入站規則中,啟用專用網絡和公用網絡的“普通文件傳輸協議應用”。或者直接添加C:windowssystem32tftp.exe的例外。以允許TFTP文件傳入。

以上設置完成后,執行如下命令並有如下所示結果,則說明TFTP服務可正常使用。

C:Usersxiyang>tftp 10.17.25.17 get /install.log install.log 傳輸成功: 1  9090 字節,9090 字節/秒

 

安裝PXELINUX

這里我們使用syslinux的一個組件pxelinux.0作為BIOS平台的引導程序。同時syslinux還提供gpxelinux.0來實現gPXE功能。通過它可以使用快速的HTTP協議,而非較慢的TFTP協議來下載Linux鏡像,以加速安裝。不過有些硬件對gPXE支持不好。例如,IBM X3650 M4。

yum install syslinux syslinux-tftpboot -y

 

以下是安裝完成的syslinux版本信息

[root@dhcp~]# rpm -q syslinux syslinux-tftpboot syslinux-4.04-3.el6.i686 syslinux-tftpboot-4.04-3.el6.noarch

 

安裝完成后,可以看到/var/lib/tftpboot目錄下(部分用到)的文件列表如下所示:

[root@dhcp ~]# ll /var/lib/tftpboot/ total 1432 -rw-r--r--. 1 root root 89376 Oct 16 02:09 gpxelinux.0 -rw-r--r--. 1 root root 26268 Oct 16 02:09 memdisk -rw-r--r--. 1 root root 26759 Oct 16 02:09 pxelinux.0 -rw-r--r--. 1 root root 163728 Oct 16 02:09 vesamenu.c32

 

以上文件中,pxelinux.0即為PXE啟動引導程序,gpxelinux為gPXE引導程序。memdisk用來引導ISO文件,vasamenu.c32用來在繪制PXE菜單。

配置PXELINUX

pxelinux.0默認使用pxelinux.cfg文件夾作為其配置文件夾。其配置文件的格式與isolinux相同。pxelinux通過以下步驟查找其配置文件:

首先,若其PXE協議棧提供了固件的UUID,則查找其UUID為文件名的配置文件。如果BIOS沒有提供可用的UUID,則使用ffffffff-ffff-ffff-ffff-ffffffffffff。UUID為標准的小寫十六進制字母格式。例如,b8945908-d6a6-41a9-611d-74a6ab80b83d。

其次,尋找其短划線分割的小寫十六進制MAC地址為文件名的配置文件。例如,如果其MAC地址為88:99:AA:BB:CC:DD,則尋找文件名為01-88-99-aa-bb-cc-dd的配置文件。

再次,查找以大寫十六進制格式的IP地址為文件名的配置文件。例如192.0.2.91的大寫十六進制IP為C000025B。可用gethostip命令來獲取一個IP地址的不同格式,如下所示:

[root@dhcp ~]# gethostip -x 10.17.25.209 0A0111D1

 

最后,如果配置文件依舊沒找到,則會刪除IP地址的一個末位十六進制數字,再次重試。最終會查找一個文件名為小寫default的配置文件。

例如,如果啟動文件路徑為/var/lib/tftpboot/pxelinux.0(/var/lib/tftpboot/為TFTP根目錄),UUID為b8945908-d6a6-41a9-611d-74a6ab80b83d,MAC地址為88:99:AA:BB:CC:DD,IP地址為192.0.2.91,則pxelinux會依次嘗試如下文件:

/pxelinux.cfg/b8945908-d6a6-41a9-611d-74a6ab80b83d /pxelinux.cfg/01-88-99-aa-bb-cc-dd /pxelinux.cfg/C000025B /pxelinux.cfg/C000025 /pxelinux.cfg/C00002 /pxelinux.cfg/C0000 /pxelinux.cfg/C000 /pxelinux.cfg/C00 /pxelinux.cfg/C0 /pxelinux.cfg/C /pxelinux.cfg/default

 

接下來僅討論其默認配置文件default。default配置文件的格式與isolinux一樣。可以照搬isolinux的配置文件

創建pxelinux.0使用的配置文件夾pxelinux.cfg,並下載其依賴的其他配置文件。

mkdir -p /var/lib/tftpboot/pxelinux.cfg/{5,6,7}/{i386,x86_64} rmdir /var/lib/tftpboot/pxelinux.cfg/7/i386 cd /var/lib/tftpboot/pxelinux.cfg #下載Linux引導鏡像 #CentOS 7只支持64位系統,無i386版本。 wget http://fakeftp.xiyang-liu.com/linux/centos/5/os/i386/images/pxeboot/{vmlinuz,initrd.img} -P 5/i386/ wget http://fakeftp.xiyang-liu.com/linux/centos/5/os/x86_64/images/pxeboot/{vmlinuz,initrd.img} -P 5/x86_64/ wget http://fakeftp.xiyang-liu.com/linux/centos/6/os/i386/images/pxeboot/{vmlinuz,initrd.img} -P 6/i386/ wget http://fakeftp.xiyang-liu.com/linux/centos/6/os/x86_64/images/pxeboot/{vmlinuz,initrd.img} -P 6/x86_64/ wget http://fakeftp.xiyang-liu.com/linux/centos/7/os/x86_64/images/pxeboot/{vmlinuz,initrd.img} -P 7/x86_64/ #下載公用的菜單依賴文件 wget http://fakeftp.xiyang-liu.com/linux/centos/6/os/x86_64/isolinux/{splash.jpg,memtest,boot.msg}

 

下載並重命名pxelinux配置文件

wget http://fakeftp.xiyang-liu.com/linux/centos/6/os/x86_64/isolinux/isolinux.cfg -P /var/lib/tftpboot/pxelinux.cfg mv /var/lib/tftpboot/pxelinux.cfg/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

 

編輯default文件,使其如下所示:

default pxelinux.cfg/vesamenu.c32 #prompt 1 timeout 60 display pxelinux.cfg/boot.msg menu background pxelinux.cfg/splash.jpg menu title Welcome to CentOS 6! 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 #以上為菜單配置部分,僅需修改相關文件的路徑即可 #所有相對路徑都是相對於pxelinux.0的位置 #通過PXELinux以KS形式自動安裝64位CentOS 6 label auto64centos6 #標簽 menu label *PXE:CentOS 6 x86_64 100GB+LVM New AutoInstall #菜單描述 menu default #設置為默認項目 kernel pxelinux.cfg/6/x86_64/vmlinuz #指定內核文件 append ks=http://10.17.26.68/linux/ks/CentOS-6-x86_64-100GLVM-New-AutoInstall-ks.cfg ksdevice=link initrd=pxelinux.cfg/6/x86_64/initrd.img #指定初始化鏡像路徑和ks.cfg文件 #通過GPXELinux以KS形式自動安裝64位CentOS 6 label gpxe-auto64centos6 menu label GPXE:CentOS 6 x86_64 100GB+LVM New AutoInstall kernel http://10.17.26.68/linux/centos/6/os/x86_64/images/pxeboot/vmlinuz append ks=http://10.17.26.68/linux/ks/CentOS-6-x86_64-100GLVM-New-AutoInstall-ks.cfg  ksdevice=link initrd=http://10.17.26.68/linux/centos/6/os/x86_64/images/pxeboot/initrd.img #通過GPXE加載一個Windows PE鏡像文件 label gpxe-lmtpe menu label GPXE:Load a LMT PE image linux memdisk initrd http://10.17.26.68/windows/tools/LMT.ISO append raw iso #通過對上面標簽版本號、ks文件、位數等內容的修改  #可生成CentOS 6 32bitCentOS 5 32bitCentOS 5 64bitCentOS 7 64bit的配置 #為防止DNS解析出現問題,這里直接使用HTTP/FTP服務器的IP地址。 #從本地磁盤啟動 label local menu label Boot from local drive localboot 0xffff #內存測試 label memtest86 menu label Memory test kernel pxelinux.cfg/memtest append -

 

安裝BOOTX64.EFI

UEFI模式下,無法用pxelinux進行引導,因其不包含相關硬件抽象層的驅動。以CentOS考慮, UEFI引導程序可以從其x86_64的安裝鏡像里獲取。

cd /var/lib/tftpboot/ wget http://10.17.26.68/linux/centos/6/os/x86_64/EFI/BOOT/{BOOTX64.efi,BOOTX64.conf,splash.xpm.gz}

 

配置BOOTX64.EFI

bootx64.efi使用默認配置文件efidefault,其格式與grub配置文件格式類似。修改其配置文件如下:

[root@dhcp ~]# cd /var/lib/tftpboot/ [root@dhcp ~]# mv BOOTX64.conf efidefault [root@dhcp ~]# cat efidefault #debug --graphics default=0 splashimage=(nd)/splash.xpm.gz timeout 10 hiddenmenu title Auto Install 64bit CentOS System root (nd) kernel pxelinux.cfg/6/x86_64/vmlinuz ks=http://10.17.26.68/linux/ks/CentOS-6-x86_64-UEFI-100GLVM-New-AutoInstall-ks.cfg initrd pxelinux.cfg/6/x86_64/initrd.img title rescue root (nd) kernel pxelinux.cfg/6/x86_64/vmlinuz rescue askmethod initrd pxelinux.cfg/6/x86_64/initrd.img

 

至此,所有需要准備的引導程序和及其配置文件都已經准備完畢,此時/var/lib/tftpboot目錄的結構如下所示:

[root@dhcp ~]# tree /var/lib/tftpboot/ /var/lib/tftpboot/ ├── BOOTX64.efi ├── efidefault ├── gpxelinux.0 ├── memdisk ├── pxelinux.0 ├── pxelinux.cfg   ├── 5     ├── i386       ├── initrd.img       └── vmlinuz     └── x86_64       ├── initrd.img       └── vmlinuz   ├── 6     ├── i386       ├── initrd.img       └── vmlinuz     └── x86_64       ├── initrd.img       └── vmlinuz   ├── 7     └── x86_64       ├── initrd.img       └── vmlinuz   ├── boot.msg   ├── default   ├── memtest   ├── splash.jpg   └── vesamenu.c32 └── splash.xpm.gz 9 directories, 21 files

 

配置DHCP啟用PXE

准備好PXE所需要的各個文件后,只需要讓DHCP服務器支持PXE,就可以在客戶端獲取到IP地址后,進入PXE引導過程。DHCP服務器通過bootp選項來啟用PXE支持,且通過Option 60擴展來根據客戶端的架構自動選擇使用BIOS引導程序還是UEFI引導程序。

首先,全局啟用bootp功能,並設置Option 60相關配置。此處配置為紅帽官方配置,具體什么意思,我也不知道。

option space PXE; option PXE.mtftp-ip  code 1 = ip-address; option PXE.mtftp-cport code 2 = unsigned integer 16; option PXE.mtftp-sport code 3 = unsigned integer 16; option PXE.mtftp-tmout code 4 = unsigned integer 8; option PXE.mtftp-delay code 5 = unsigned integer 8; option arch code 93 = unsigned integer 16; # RFC4578 allow booting; allow bootp;

 

在地址池中,創建一個pxeclients的類,匹配Option 60選項中包含PXEClient字符的主機。為他們指定下一步請求pxelinux.0程序的TFTP服務器的地址和文件名。此處根據不同的架構通過if語句設置不同的啟動引導程序。也可以在host預留中,直接通過filename選項指定引導程序

class "pxeclients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 10.17.25.17; if option arch = 00:07 { filename "/BOOTX64.efi"; } else { filename "/pxelinux.0"; } } host gpxelinux { option host-name "gpxelinux.xiyang-liu.com"; hardware ethernet 00:50:56:24:0B:30; fixed-address 10.17.15.8; filename "/gpxelinux.0" }

 

詳細安裝配置方法,可參考REDHAT官方文檔: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ap-install-server.html https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-installation-server-setup.html

整合完成后的DHCP配置文件如下所示:

#PXE定義命名空間 option space PXE; option PXE.mtftp-ip  code 1 = ip-address; option PXE.mtftp-cport code 2 = unsigned integer 16; option PXE.mtftp-sport code 3 = unsigned integer 16; option PXE.mtftp-tmout code 4 = unsigned integer 8; option PXE.mtftp-delay code 5 = unsigned integer 8; option arch code 93 = unsigned integer 16; # RFC4578 #啟用PXE支持 allow booting; allow bootp; authoritative; ddns-update-style none; ignore client-updates; one-lease-per-client true; shared-network main { subnet 10.17.25.0 netmask 255.255.255.0 { option routers 10.17.25.254; option subnet-mask 255.255.255.0; option domain-name "xiyang-liu.com"; #在此網絡關閉PXE支持 deny bootp; pool { range 10.17.25.200 10.17.25.210; host nagios-test { hardware ethernet 00:0d:56:66:82:c3; fixed-address 10.17.25.200; } } } } shared-network xxzx { subnet 10.17.15.0 netmask 255.255.255.0 { option routers 10.17.15.254; option subnet-mask 255.255.255.0; option domain-name "xiyang-liu.com"; option domain-name-servers 10.17.26.88, 8.8.8.8; default-lease-time 86400; max-lease-time 172800; pool { range 10.17.15.1 10.17.15.20; class "pxeclients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 10.17.25.17; if option arch = 00:07 { filename "/BOOTX64.efi"; } else { filename "/pxelinux.0"; } } host gpxelinux { option host-name "gpxelinux.xiyang-liu.com"; hardware ethernet 00:50:56:24:0B:30; fixed-address 10.17.15.8; filename "/gpxelinux.0" } } } }

 

編寫KS.CFG文件

至此,BIOS和UEFI兩種架構的PXE引導都已經配置完成。如不需要自動安裝操作系統,則可以直接刪除配置文件中的ks部分,即可測試引導。

然而,正如前言中所述,我們最終目的是實現完全自動化的安裝。以此為前提,CentOS自動安裝用的ks.cfg文件必不可少。我們設定CentOS的安裝策略如下:

  • 網絡全新安裝CentOS 6最新版本;
  • 英語安裝,美國鍵盤,上海時區
  • LVM分區,500M boot分區、推薦大小的swap, 100G根分區;
  • UEFI安裝時,設置200MB引導分區;
  • 啟用防火牆,SElinux,本地賬戶授權;
  • 啟用本地軟件倉庫,重置root密碼為3e3ae9d0a;
  • 安裝並啟用saltstack客戶端;

則設置內容如下的ks啟動應答文件即可:

#platform=CentOS 6 X86_64 # 啟用防火牆,並允許SSH服務 firewall --enabled --ssh # 安裝,而非更新 install # 通過網絡安裝 url --url="http://10.17.26.68/linux/centos/6/os/x86_64/" # 設置root密碼為centos rootpw --iscrypted $1$SCDJzPts$c4VuKhKKUcXfg9aAt0tgu1 # 使用本地授權模式 auth --useshadow --passalgo=sha512 # 使用文本安裝 text # 使用美國鍵盤 keyboard us # 語言設置為英語 lang en_US # 啟用SElinux selinux --enforcing # 跳過X window 配置 skipx #安裝過程日志級別為info logging --level=info # 安裝完成后重啟 reboot # 設置時區為亞洲上海,使用UTC時間 timezone --isUtc Asia/Shanghai # 啟用DHCP網絡 network --onboot yes --bootproto dhcp --noipv6 #------------BIOS模式------------ # 安裝bootloader到MBR bootloader --location=mbr # 清除MBR zerombr #------------BIOS模式------------ #------------UEFI模式------------ #安裝bootloader到efi啟動分區 bootloader --location=partition #------------UEFI模式------------ # 清楚所有分區,並初始化 clearpart --all --initlabel #------------BIOS模式------------ # 分區,並啟用LVM part /boot --fstype=ext4 --size=500 part pv.008002 --grow --size=1 volgroup VolGroup --pesize=4096 pv.008002 logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --size=102400 logvol swap --fstype=swap --name=lv_swap --vgname=VolGroup --recommended #------------BIOS模式------------ #------------UEFI模式------------ part /boot/efi --fstype=efi --size=200 --asprimary part /boot --fstype=ext4 --size=500 part pv.008002 --grow --size=1 volgroup VolGroup --pesize=4096 pv.008002 logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --size=102400 logvol swap --name=lv_swap --vgname=VolGroup --recommended #------------UEFI模式------------ #啟用網絡epel軟件庫 repo --name="CentOS-epel" --baseurl=http://10.17.26.68/linux/fedora/epel/6/x86_64 #要安裝的軟件,忽略更新 %packages --ignoremissing @core @base salt-minion #安裝后執行的腳本,記錄日志到/root/ks-post.log %post --log=/root/ks-post.log mkdir /etc/yum.repos.d/bak/ mv -f /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/bak/ wget http://10.17.26.68/linux/fakeftp.xiyang-liu.com-centos.repo -P /etc/yum.repos.d/ wget http://10.17.26.68/linux/fedora/epel/RPM-GPG-KEY-EPEL-6 -P /etc/pki/rpm-gpg/ wget http://10.17.26.68/linux/fakeftp.xiyang-liu.com-epel.release.6.repo -P /etc/yum.repos.d/ sed -i -e's/^#master: salt/master: salt-master.xiyang-liu.com/g' /etc/salt/minion chkconfig salt-minion on rootpasswd=`echo centos2014 | md5sum | md5sum | cut -c 8-16` echo $rootpasswd | passwd --stdin root echo $rootpasswd >/root/.rootpasswd %end

 

上述配置文件中,根據不同架構的服務器,選擇BIOS模式或者UEFI模式配置,創建不同的配置文件。另外,不同的發行版的配置文件也不盡相同。例如,CentOS 5 的文件系統為ext3,CentOS 7 則默認使用JFS。最好根據各自發行版的system-config-kickstart工具創建配置文件后,再稍作修改。

以下是我創建的配置文件列表:

  • CentOS-5-i386-100GLVM-New-AutoInstall-ks.cfg
  • CentOS-5-x86_64-100GLVM-New-AutoInstall-ks.cfg
  • CentOS-6-i386-100GLVM-New-AutoInstall-ks.cfg
  • CentOS-6-i386-ASKPART-New-NetInstall-ks.cfg
  • CentOS-6-x86_64-100GLVM-New-AutoInstall-ks.cfg
  • CentOS-6-x86_64-ASKPART-New-NetInstall-ks.cfg
  • CentOS-6-x86_64-UEFI-100GLVM-New-AutoInstall-ks.cfg
  • CentOS-7-x86_64-100GLVM-New-AutoInstall-ks.cfg
  • CentOS-7-x86_64-UEFI-100GLVM-New-AutoInstall-ks.cfg

詳細的ks.cfg選項,參見RedHat官方文檔 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ch-kickstart2.html https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-kickstart-installations.html

測試PXE啟動

推薦使用VMware Workstation來測試上述配置的正確性。對於UEFI部分配置,用記事本打開WMware的主機配置文件,在文件末尾添加如下參數即可啟用UEFI支持

firmware = "efi"

 

結語

本文檔講述了如何使用PXE自動安裝CentOS。包含PXE和gPXE兩種規范實現的引導程序的配置方法。對BIOS和UEFI兩種引導模式,分別進行了獨立詳盡的分析。

參考鏈接

http://www.syslinux.org/wiki/index.php/PXELINUX https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ap-install-server.html https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-installation-server-setup.html https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ch-kickstart2.html https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-kickstart-installations.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM