CentOS 7 PXE+Kickstart+TFTP+VSFTP+BIOS+UEFI

來源:互聯網
上載者:User

標籤:ima   mat   master   作用   address   自動安裝   log   記憶體   host   

前言

一般情況下,新伺服器上架。都需要系統管理員手工安裝系統,配置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的縮寫、中文:基本輸出入系統 (BIOS)),在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平台。由於沒有實驗環境,不支援安騰架構。

 

安裝所需全部服務

yum install tftp tftp-server dhcp xinetd syslinux

 

dhcpd設定檔

 

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 client-system-arch code 93 = unsigned integer 16;

allow booting;
allow bootp;

default-lease-time 6000;
max-lease-time 72000;

subnet 10.1.1.0 netmask 255.255.255.0 {
  range 10.1.1.50 10.1.1.70;
  option routers 10.1.1.11;
  class "pxeclients" {
    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    next-server 10.1.1.11;
    if option client-system-arch = 00:07 or option client-system-arch = 00:09 {
      filename "BOOTX64.efi";
    } else {
     filename "pxelinux.0";
    }
  }
}

 

tftp設定檔

  sed -i ‘/disable/s/yes/no/‘ /etc/xinetd.d/tftp

 

{    socket_type        = dgram    protocol        = udp    wait            = yes    user            = root    server            = /usr/sbin/in.tftpd    server_args        = -s /var/lib/tftpboot    disable            = no    per_source        = 11    cps            = 100 2    flags            = IPv4}

 

 

在 tftpboot 中建立需要的目錄

  • mkdir /var/lib/tftpboot/pxelinux.cfg/  
    • BIOS引導所使用的 default  菜單檔案目錄
    •  1 UI pxelinux.cfg/vesamenu.c32 2 prompt 1 3 timeout 60 4  5 display pxelinux.cfg/boot.msg 6 menu background pxelinux.cfg/splash.jpg 7 menu title Welcome to PXE+kickstart auto install systems 8 menu color border 0 #ffffffff #00000000 9 menu color sel 7 #ffffffff #ff00000010 menu color title 0 #ffffffff #0000000011 menu color tabmsg 0 #ffffffff #0000000012 menu color unsel 0 #ffffffff #0000000013 menu color hotsel 0 #ff000000 #ffffffff14 menu color hotkey 7 #ffffffff #ff00000015 menu color scrollbar 0 #ffffffff #0000000016 17 18 label linux19   menu label ^Install CentOS7.4 Minimal20   menu default21   kernel cores/CentOS/7.4/vmlinuz22   append initrd=cores/CentOS/7.4/initrd.img ip=dhcp inst.repo=ftp://10.1.1.11/CentOS/7.4 inst.ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-7.x-min.cfg23 24 label linux25   menu label ^Install CentOS6.9 Minimal26   kernel cores/CentOS/6.9/vmlinuz27   append initrd=CentOS6/initrd.img ip=dhcp repo=ftp://10.1.1.11/CentOS/6.9 ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-6.x-min.cfg28 29 label linux30   menu label ^Install Windows1031   kernel memdisk raw iso32   append initrd=ftp://10.1.1.11/Windows/10/W10X32_CN_PE.iso33 34 label local35   menu label Boot from ^local drive36   localboot 0xffff
      default 內容
  • mkdir -p /var/lib/tftpboot/cores/{CentOS,Ubuntu,Windows}
    • 各的系統的核心檔案目錄
    • cd /var/lib/tftpboot/cores/
    • mkdir CentOS/{6.9,7.4}
    • mkdir Ubuntu/{16,17}
    • mkdir Windows/{7,10}

 

這裡只例舉無人職守CentOS 7 Minimaul

掛載鏡像檔案

mount /dev/cdrom /mnt

複製核心檔案

cp -rf /mnt/isolinux/{initrd.img,vmlinuz}  /var/lib/tftpboot/cores/CentOS/7.4

 

BIOS

複製需要的檔案到/var/lib/tftpboot/目錄下

cp /usr/share/syslinux/{pxelinux.0,vesamenu.c32,memdisk,gpxelinux.0} /var/lib/tftpboot/

  • pxelinux.0  即為PXE啟動引導程式,
  • gpxelinux  為gPXE引導程式
    • 通過它可以使用快速的HTTP協議,而非較慢的TFTP協議來下載Linux鏡像,以加速安裝。不過有些硬體對gPXE支援不好。例如,IBM X3650 M4。
  • memdisk  用來引導ISO檔案
  • vasamenu.c32  用來在繪製PXE菜單
 UEFI

複製Centos6 中的 BOOTX64.efi 、BOOTX64.conf 、splash.xpm.gz , conf 檔案改名為efidefault也就是UEFI的引導菜單

(Centos7 中用是grub2的方式)

  • BOOTX64.efi
  • efidefault
    • default=0splashimage=(nd)/splash.xpm.gztimeout 10hiddenmenutitle CentOS 7.4 UEFI         root (nd)        kernel /cores/CentOS/7.4/vmlinuz ip=dhcp ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-7.x-min_UEFI.cfg repo=ftp://10.1.1.11/CentOS/7.4        initrd /cores/CentOS/7.4/initrd.imgtitle CentOS 6.9 UEFI        root (nd)        kernel /cores/CentOS/6.9/vmlinuz ip=dhcp ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-6.x-min_UEFI.cfg repo=ftp://10.1.1.11/CentOS/6.9        initrd /cores/CentOS/6.9/initrd.imgtitle Install system with basic video driver        kernel /images/pxeboot/vmlinuz nomodeset askmethod        initrd /images/pxeboot/initrd.imgtitle rescue        kernel /images/pxeboot/vmlinuz rescue askmethod        initrd /images/pxeboot/initrd.img
      efidefault 內容
  • splash.xpm.gz

 

 

 

vsftp

建立需要的系統目錄

  • mkdir -p /var/ftp/{CentOS,Ubuntu,Windows,cfgs}
  • cd /var/ftp
  • mkdir CentOS/{6.9,7.4}
  • mkdir Ubuntu/{16,17}
  • mkdir Windows/{7,10}

複製完整的鏡像檔案

cp -rf /mnt/* /var/tfp/CentOS/7.4

二級目錄結構

tree /var/ftp.├── CentOS│   ├── 6.9│   └── 7.4├── kickstart.cfgs├── Ubuntu│   ├── 16│   └── 17└── Windows    ├── 10    └── 7
  Kickstart
 1 install 2 url --url=ftp://10.1.1.104/CentOS/7.4 3 text 4 lang en_US.UTF-8 5 keyboard us 6 zerombr 7 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder=sda 8 network  --bootproto=dhcp --device=enp0s3 --onboot=yes --noipv6 --hostname=CentOS7 9 timezone --utc Asia/Shanghai10 authconfig --enableshadow --passalgo=sha51211 rootpw  --iscrypted $6$Ivywr2J3hw9DVOyM$YSNpObpKiJ7iRvOL9wpJf/mEY29cAuMG3drIvcXc56pQkyQIR68RuwfonNVSkt2CZMcgLwITASS/tlX98SfTZ012 clearpart --all --initlabel13 part /boot --fstype xfs --size 1024 14 part swap --size 1024    15 part / --fstype xfs --size 819216 part /home --fstype xfs --size 1 --grow17 services --enabled="chronyd"18 firstboot --disable19 selinux --disabled20 firewall --disabled21 logging --level=info22 reboot23 24 %packages            25 @^minimal26 @core27 chrony28 kexec-tools29 30 %end
BIOS MBR分區 ks 檔案
 1 install 2 url --url=ftp://10.1.1.11/CentOS/7.4 3 text 4 keyboard us 5 lang en_US.UTF-8 6 bootloader --location=mbr             7 zerombr 8 clearpart --all --initlabel 9 part /boot/efi --fstype efi --size 200 --asprimary --ondisk sda10 part /boot --fstype xfs --size 500 --ondisk sda11 part swap --size 1024 --ondisk sda12 part / --fstype xfs --size 8192 --ondisk sda13 part /home --fstype xfs --size 1 --grow --ondisk sda14 network  --bootproto=dhcp --device=enp0s3 --onboot=yes --noipv6 --hostname=CentOS715 timezone --utc Asia/Shanghai16 authconfig --enableshadow --passalgo=sha51217 rootpw  --iscrypted $6$Ivywr2J3hw9DVOyM$YSNpObpKiJ7iRvOL9wpJf/mEY29cAuMG3drIvcXc56pQkyQIR68RuwfonNVSkt2CZMcgLwITASS/tlX98SfTZ018 logging --level=info19 20 %pre21 parted -s /dev/sda mklabel gpt22 %end23 24 %packages            25 @^minimal26 @core27 chrony28 kexec-tools29 %end30 31 reboot
UEFI GTP分區 ks 檔案

因詳細的kickstart設定檔參數過多,這裡不一一表明。

 

 

tftp結構目錄

tree /var/lib/tftpboot

.
├── BOOTX64.efi
├── cores
│   ├── CentOS
│   │   ├── 6.9
│   │   │   ├── initrd.img
│   │   │   └── vmlinuz
│   │   └── 7.4
│   │   ├── initrd.img
│   │   └── vmlinuz
│   ├── Ubuntu
│   │   ├── 16
│   │   └── 17
│   └── Windows
│   ├── 10
│   └── 7
├── efidefault
├── gpxelinux.0
├── memdisk
├── pxelinux.0
├── pxelinux.cfg
│   ├── boot.msg
│   ├── default
│   ├── splash.jpg
│   └── vesamenu.c32
└── splash.xpm.gz

 

 

 

啟動服務

  • systemctl start dhcpd
  • systemctl start tftp
  • systemctl start xinetd
  • systemctl start vsftpd

 加入開機自啟動

  • systemctl enable dhcpd
  • systemctl enable tftp
  • systemctl enable xinetd
  • systemctl enable vsftpd

 

經過測試CentOS7 PXE無人職守安裝並無問題,BIOS 和 UEFI 均可。

 

CentOS 7 PXE+Kickstart+TFTP+VSFTP+BIOS+UEFI

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.