首頁 > 軟體

Kickstart 全自動安裝部署RHEL 7.0

2020-06-16 17:52:48

一、簡介

1.1 什麼是PXE

PXE(Pre-boot Execution Environment,預啟動執行環境)是由Intel公司開發的最新技術,工作於Client/Server的網路模式,支援工作站通過網路從遠端伺服器下載映像,並由此支援通過網路啟動作業系統,在啟動過程中,終端要求伺服器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協定下載一個啟動軟體包到本機記憶體中執行,由這個啟動軟體包完成終端基本軟體設定,從而引導預先安裝在伺服器中的終端作業系統。

嚴格來說,PXE 並不是一種安裝方式,而是一種引導方式。進行 PXE 安裝的必要條件是在要安裝的計算機中必須包含一個 PXE 支援的網絡卡(NIC),即網絡卡中必須要有 PXE Client。PXE 協定可以使計算機通過網路啟動。此協定分為 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,那麼它就可以通過 TFTP 協定到 TFTP Server 上下載所需的檔案了。

PXE的工作過程:

1. PXE Client 從自己的PXE網絡卡啟動,向本網路中的DHCP伺服器索取IP;

2. DHCP 伺服器返回分配給客戶機的IP 以及PXE檔案的放置位置(該檔案一般是放在一台TFTP伺服器上) ;

3. PXE Client 向本網路中的TFTP伺服器索取pxelinux.0 檔案;

4. PXE Client 取得pxelinux.0 檔案後之執行該檔案;

5. 根據pxelinux.0 的執行結果,通過TFTP伺服器載入核心和檔案系統 ;

6. 進入安裝畫面, 此時可以通過選擇HTTP、FTP、NFS 方式之一進行安裝;

詳細工作流程,請參考下面這幅圖:

1.2 什麼是Kickstart

Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案。如果在安裝過程中(不只侷限於生成Kickstart安裝檔案的機器)出現要填寫引數的情況,安裝程式首先會去查詢Kickstart生成的檔案,如果找到合適的引數,就採用所找到的引數;如果沒有找到合適的引數,便需要安裝者手工干預了。所以,如果Kickstart檔案涵蓋了安裝過程中可能出現的所有需要填寫的引數,那麼安裝者完全可以只告訴安裝程式從何處取ks.cfg檔案,然後就去忙自己的事情。等安裝完畢,安裝程式會根據ks.cfg中的設定重新啟動系統,並結束安裝。

PXE+Kickstart 無人值守安裝作業系統完整過程如下:

-----------------------------------分割線--------------------------------------------------

系統環境

實驗環境:VMware Workstation 11

系統平台:RHEL7

網路模式:LAN區段

DHCP / TFTP IP:192.168.153.130

HTTP / FTP / NFS IP:192.168.153.130

防火牆已關閉/iptables: Firewall is not running.

SELINUX=disabled

-----------------------------------分割線--------------------------------------------------

前期準備

所需要用到的服務:DHCP、TFTP、VSFTP

設定yum倉庫,掛載光碟映象

#vim /etc/yum.repos.d/rhel7.repo

[rhel7]

name=rhel7

basurel=file:///mnt

enabled=1

gpgcheck=0

將光碟掛載到/mnt中

#mount /dev/cdrom /mnt

-----------------------------------分割線--------------------------------------------------

設定DHCP

安裝DHCP服務

# yum -y install dhcp

修改/etc/dhcp/dhcpd.conf 組態檔,內容如下:

subnet 192.168.153.0 netmask 255.255.255.0 {          #所屬網段及掩碼; 

range 192.168.153.100 192.168.153.120;                    #IP地址池範圍; 

option domain-name "linuxidc.seagate.com";

option routers 192.168.153.130;                                  #路由器IP,可以寫閘道器IP; 

option broadcast-address 192.168.153.255;

next-server 192.168.153.130;                              #TFTP Server 的IP地址;

filename "pxelinux.0";                                        #pxelinux 啟動檔案位置;

default-lease-time 600;

max-lease-time 7200;

}

啟動DHCP服務

#systemctl enable dhcpd.service

#systemctl start dhcpd.service

-----------------------------------分割線--------------------------------------------------

設定TFTP

安裝TFTP

# yum install tftp-server –y    //此步驟會安裝兩個包,一個是tftp-server另一個是xinetd。

修改/etc/xinetd.d/tftp組態檔,內容如下:

service tftp

{

      socket_type            = dgram

      protocol                = udp

      wait                    = yes

      user                    = root

      server                  = /usr/sbin/in.tftpd

      server_args            = -s /var/lib/tftpboot

      disable                = no      #把這行改成no即可;

      per_source              = 11

      cps                    = 100 2

      flags                  = IPv4

}

啟動xinetd服務

#systemctl enable xinetd.service

#systemctl start xinetd.service

-----------------------------------分割線--------------------------------------------------

設定vsftp

安裝vsftp

#yum -y install vsftpd

啟動vsftpd服務

#systemctl start vsftpd.service

#systemctl enable vsftpd.service

建立iso資料夾目錄,用來存放光碟軟體包

#mkdir /var/ftp/iso

拷貝光碟中所有檔案到iso資料夾中

#cp -rf /mnt/* /var/ftp/iso/

-----------------------------------分割線--------------------------------------------------

設定PXE啟動所需要的檔案

#yum -y install syslinux

說明:syslinux是一個功能強大的引導載入程式,而且相容各種媒介。更加確切地說:SYSLINUX是一個小型的Linux作業系統,它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啟動盤。

拷貝啟動檔案到/var/lib/tftpboot裡

#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

#mkdir /var/lib/tftpboot/pxelinux.cfg

#cd /mnt/isolinux/

#cp -rf initrd.img vmlinuz vesamenu.c32 boot.msg /var/lib/tftpboot/

#cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

檢查

[root@localhost tftpboot]# pwd
/var/lib/tftpboot
[root@localhost tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vesamenu.c32  vmlinuz boot.msg

[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# ls
default

-----------------------------------分割線--------------------------------------------------

生成ks.cfg 檔案

ks.cfg是kickstart安裝組態檔,系統就是按照ks.cfg來安裝的。我們將在後面設定他

安裝Kickstart

#yum -y install system-config-kickstart

在桌面環境下設定Kickstart

啟動X Windows 環境

#startx

設定Kickstart

#system-config-kickstart

後面幾項不用管,直接儲存

儲存在/root/下,字尾不要動

root目錄下有個anaconda-ks.cfg檔案,我們進去把安裝軟體指令碼拷貝到咱們剛才建立的那個ks.cfg中

#vim /root/anaconda-ks.cfg

........

%packages

@base

@core

@desktop-debugging

@dial-up

@fonts

@gnome-desktop

@guest-agents

@guest-desktop-agents

@input-methods

@internet-browser

@kde-desktop

@multimedia

@print-client

@x11

%end

把anaconda-ks.cfg檔案最下方的指令碼貼上到咱們的ks.cfg中

#vim /root/ks.cfg

把上面一串@的所有內容都貼上進去,包括兩個%哪行。

把ks檔案拷貝到/var/ftp/裡面

#cp /root/ks.cfg /var/ftp/

編輯/var/lib/tftpboot/pxelinux.cfg/default檔案

新增一個引導選項,最後一行指向ftp應答檔案的網路路徑

#vim /var/lib/tftpboot/pxelinux.cfg/default

spacer.gif

wKiom1XlULnRuv0WAACt6ljDh2I570.jpg

cp /var/www/html/cdrom/isolinux/*.msg /var/lib/tftpboot/

-----------------------------------分割線--------------------------------------------------

檢查

檢查SELinux是否關閉

#setenforce 0    //關閉SELinux

檢查防火牆,開放dhcp,ftp,tftp服務,或者關閉防火牆

#firewall-cmd --permanent --add-service=dhcp

#firewall-cmd --permanent --add-service=ftp

#firewall-cmd --permanent --add-port=69/udp

#firewall-cmd --reload

返回結果都是“success”

註:這裡也可以通過systemctl stop firewall來關閉防火牆

檢查所有服務是否正常啟動

#systemctl is-active dhcpd

#systemctl is-active vsftpd

返回結果都是“active”

#netstat -tulnp | grep :69

udp        0      0 0.0.0.0:69              0.0.0.0:*                         

3912/xinetd

spacer.gif

-----------------------------------分割線--------------------------------------------------

default檔案

[root@localhost ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
timeout 600

display boot.msg

# Clear the screen when exiting the menu, instead of leaving the menu displayed.
# For vesamenu, this means the graphical background is still displayed without
# the menu itself for as long as the screen remains in graphics mode.
menu clear
menu background splash.png
menu title Red Hat Enterprise Linux 7.0
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13

# Border Area
menu color border * #00000000 #00000000 none

# Selected item
menu color sel 0 #ffffffff #00000000 none

# Title bar
menu color title 0 #ff7ba3d0 #00000000 none

# Press [Tab] message
menu color tabmsg 0 #ff3a6496 #00000000 none

# Unselected menu item
menu color unsel 0 #84b8ffff #00000000 none

# Selected hotkey
menu color hotsel 0 #84b8ffff #00000000 none

# Unselected hotkey
menu color hotkey 0 #ffffffff #00000000 none

# Help text
menu color help 0 #ffffffff #00000000 none

# A scrollbar of some type? Not sure.
menu color scrollbar 0 #ffffffff #ff355594 none

# Timeout msg
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 none

# Command prompt text
menu color cmdmark 0 #84b8ffff #00000000 none
menu color cmdline 0 #ffffffff #00000000 none

# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.

menu tabmsg Press Tab for full configuration options on menu items.

menu separator # insert an empty line
menu separator # insert an empty line

label rhel                                                    //標紅的部分是咱們新增的部分
  menu label ^Install RHEL7.0
  menu default
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=ftp://192.168.153.130/iso inst.ks=ftp://192.168.153.130/ks.cfg quiet

label linux
  menu label ^Install Red Hat Enterprise Linux 7.0
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.0x20Server.x86_64 quiet

label check
  menu label Test this ^media & install Red Hat Enterprise Linux 7.0
  menu default
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.0x20Server.x86_64 rd.live.check quiet

menu separator # insert an empty line

# utilities submenu
menu begin ^Troubleshooting
  menu title Troubleshooting

label vesa
  menu indent count 5
  menu label Install Red Hat Enterprise Linux 7.0 in ^basic graphics mode
  text help
Try this option out if you're having trouble installing
Red Hat Enterprise Linux 7.0.
  endtext
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.0x20Server.x86_64 xdriver=vesa nomodeset quiet

label rescue
  menu indent count 5
  menu label ^Rescue a Red Hat Enterprise Linux system
  text help
If the system will not boot, this lets you access files
and edit config files to try to get it booting again.
  endtext
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.0x20Server.x86_64 rescue quiet

label memtest
  menu label Run a ^memory test
  text help
If your system is having issues, a problem with your
system's memory may be the cause. Use this utility to
see if the memory is working correctly.
  endtext
  kernel memtest

menu separator # insert an empty line

label local
  menu label Boot from ^local drive
  localboot 0xffff

menu separator # insert an empty line
menu separator # insert an empty line

label returntomain
  menu label Return to ^main menu
  menu exit

menu end

-----------------------------------分割線--------------------------------------------------

ks.cfg檔案

[root@localhost ~]# cat /var/ftp/ks.cfg

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'# Reboot after installation
reboot
# Root password
rootpw --iscrypted $1$J36yI8p5$UCVRjlL947gD1e5zZR9uR/
# System timezone
timezone Africa/Abidjan
# Use network installation
url --url="ftp://192.168.153.130/iso"
# System language
lang en_US
# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=eth0
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled

# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --asprimary --fstype="ext4" --size=10240

%packages                        //這裡及以後的內容是從/root/anaconda-ks.cfg複製過來的
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@kde-desktop
@multimedia
@print-client
@x11

%end

-----------------------------------分割線--------------------------------------------------

安裝測試

最後測試結果在附件中,壓縮包中是測試視訊,大小為1M多。還有兩個檔案,分別是default檔案和ks檔案,大家可以自行下載並實驗。

最後實驗測試效果視訊 與 default和ks檔案下載

百度雲網路硬碟下載http://pan.baidu.com/s/1sjzJF5b

------------------------------------------分割線------------------------------------------

免費下載地址在 http://linux.linuxidc.com/

使用者名稱與密碼都是www.linuxidc.com

具體下載目錄在 /2015年資料/9月/20日/Kickstart 全自動安裝部署RHEL 7.0/

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割線------------------------------------------

Linux 基礎教學:Linux Kickstart 自動安裝  http://www.linuxidc.com/Linux/2015-05/117877.htm

使用PXE+DHCP+Apache+Kickstart無人值守安裝CentOS5.8 x86_64 http://www.linuxidc.com/Linux/2012-12/76913p4.htm

Linux PXE無人值守安裝出現 PXE-E32:TFTP OPen timeout的解決辦法 http://www.linuxidc.com/Linux/2014-03/98986.htm

使用PXE結合kickstart 自動安裝Linux系統 http://www.linuxidc.com/Linux/2014-03/98014.htm

RHCE認證之無人值守安裝Linux系統(FTP+TFTP+DHCP+Kickstart+PXE) http://www.linuxidc.com/Linux/2013-10/91013.htm

PXE網路裝機(有人值守與無人值守安裝) http://www.linuxidc.com/Linux/2013-07/87456.htm


IT145.com E-mail:sddin#qq.com