首頁 > 軟體

PXE+Kickstart無人值守安裝作業系統完整過程詳細講解

2020-06-16 16:54:00

使用PXE + KickStart可以通過非互動模式完成無人值守安裝作業系統。PXE Client從DHCP伺服器獲取到PXE Server的位置後,會到PXE Server上按照“MAC->具體IP->IP的C段(前24位元)->IP的B段(前16位元)->IP的A段(前8位元)->default”的順序匹配PXE組態檔,然後再從PXE組態檔中獲取vmlinuz、initrd.img、ks.cfg、系統映象等檔案所在的伺服器和位置資訊。

1.1.1 什麼是PXE?
?PXE,全名Pre-boot Execution Environment,預啟動執行環境;
?通過網路介面啟動計算機,不依賴本地儲存裝置(如硬碟)或本地已安裝的作業系統;
?由Intel和Systemsoft公司於1999年9月20日公布的技術;
?Client/Server的工作模式;
?PXE用戶端會呼叫網際協定(IP)、使用者資料包協定(UDP)、動態主機設定協定(DHCP)、小型檔案傳輸協定(TFTP)等網路協定;
?PXE用戶端(client)這個術語是指機器在PXE啟動過程中的角色。一個PXE用戶端可以是一台伺服器、筆記型電腦或者其他裝有PXE啟動程式碼的機器(我們電腦的網絡卡)

1.2 PXE工作過程

1.3批次裝機軟體
RedHat系主要有兩種Kickstart和Cobbler。
Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案。如果在自動安裝過程中出現要填寫引數的情況,安裝程式首先會去查詢ks.cfg檔案,如果找到合適的引數,就採用所找到的引數;如果沒有找到合適的引數,便會彈出對話方塊讓安裝者手工填寫。所以,如果ks.cfg檔案涵蓋了安裝過程中所有需要填寫的引數,那麼安裝者完全可以只告訴安裝程式從何處下載ks.cfg檔案,然後就去忙自己的事情。等安裝完畢,安裝程式會根據ks.cfg中的設定重新啟動/關閉系統,並結束安裝。
Cobbler集中和簡化了通過網路安裝作業系統需要使用到的DHCP、TFTP和DNS服務的設定。Cobbler不僅有一個命令列介面,還提供了一個Web介面,大大降低了使用者的入門水平。Cobbler內建了一個輕量級設定管理系統,但它也支援和其它設定管理系統整合,如Puppet,暫時不支援SaltStack。
** 簡單的說,Cobbler是對kickstart的封裝,簡化安裝步驟、使用流程,降低使用者的門檻。

範例1-1環境準備:

[root@CentOS7 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel Fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

[root@centos7 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@centos7 ~]# getenforce
Disabled
[root@centos7 ~]# systemctl status firewalld.service

● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
[root@centos7 ~]# ifconfig eth0|awk -F "[ :]+" 'NR==2 {print $3}'
10.0.0.200

1.4 DHCP-server

簡介:
DHCP(Dynamic Host Configuration Protocol,動態主機設定協定)是一個區域網的網路協定,使用UDP協定工作, 主要有兩個用途:給內部網路或網路服務供應商自動分配IP地址,給使用者或者內部網路管理員作為對所有計算機作中央管理的手段,在RFC 2131中有詳細的描述。DHCP有3個埠,其中UDP67和UDP68為正常的DHCP伺服器端口,分別作為DHCP Server和DHCP Client的伺服器端口;546號埠用於DHCPv6 Client,而不用於DHCPv4,是為DHCP failover服務,這是需要特別開啟的服務,DHCP failover是用來做“雙機熱備”的。

安裝dhcp服務:

yum -y install dhcp

cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.100 172.16.1.199;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 172.16.1.200;
filename "/pxelinux.0";
}
EOF

註:
range 172.16.1.100 172.16.1.199; # 可分配的起始IP-結束IP
option subnet-mask 255.255.255.0; # 設定netmask
default-lease-time 21600; # 設定預設的IP租用期限
max-lease-time 43200; # 設定最大的IP租用期限
next-server 172.16.1.200; # 告知用戶端TFTP伺服器的ip
filename "/pxelinux.0"; # 告知用戶端從TFTP根目錄下載pxelinux.0檔案

啟動:
systemctl start dhcpd
systemctl status dhcpd
確認dhcp啟動是否成功
netstat -lntup|grep 67

2.0 建立空白虛擬機器不需要掛載光碟

2.1.0確認KICKSTART伺服器是否為連線狀態

2.1.1TFTP伺服器
①簡介:
TFTP(Trivial File Transfer Protocol,簡單檔案傳輸協定)是TCP/IP協定族中的一個用來在客戶機與伺服器之間進行簡單檔案傳輸的協定,提供不複雜、開銷不大的檔案傳輸服務。埠號為69。

安裝:tftp
yum -y install tftp-server
啟動:
systemctl start tftp.socket
檢查:
netstat -lntup

3.0 PXE引導設定(bootstrap)

syslinux是一個功能強大的引導載入程式,而且相容各種媒介。SYSLINUX是一個小型的Linux作業系統,它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啟動盤。如果沒有找到pxelinux.0這個檔案,可以安裝一下。

安裝:
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

mkdir -p /var/www/html/CentOS7
mount /dev/cdrom /var/www/html/CentOS7
cp -a /var/www/html/CentOS7/isolinux/* /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/CentOS7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

4.0.1安裝HTTP

yum -y install httpd
systemctl start httpd.service

4.0.2利用瀏覽器存取:

在這個檔案vim /var/lib/tftpboot/pxelinux.cfg/default
64注釋,在65新增行:append initrd=initrd.img inst.repo=http://172.16.1.201/CentOS7/

上傳軟體包檢查:

root@centos7 ~]# ls
anaconda-ks.cfg ks_config_for_CentOS7.tar.gz
[root@centos7 ~]# tar xfP ks_config_for_CentOS7.tar.gz
[root@centos7 ~]# ls
anaconda-ks.cfg ks_config_for_CentOS7.tar.gz
[root@centos7 ~]# vim /var/www/html/ks_config/CentOS7-ks.cfg
[root@centos7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

5.0 ks.cfg詳解

ks.cfg檔案組成大致分為3段

命令段
鍵盤型別,語言,安裝方式等系統的設定,有必選項和可選項,如果缺少某項必選項,安裝時會中斷並提示使用者選擇此項的選項

軟體包段

%packagesbr/>@groupname:指定安裝的包組
package_name:指定安裝的包
-package_name:指定不安裝的包

指令碼段(可選)
%pre:安裝系統前執行的命令或指令碼(由於只依賴於啟動映象,支援的命令很少)
%post:安裝系統後執行的命令或指令碼(基本支援所有命令)

關鍵字 含義
install 告知安裝程式,這是一次全新安裝,而不是升級upgrade。
url --url=" " 通過FTP或HTTP從遠端伺服器上的安裝樹中安裝。
url --url="http://10.0.0.7/CentOS-6.7/"
url --url ftp://<username>:<password>@<server>/<dir>
nfs 從指定的NFS伺服器安裝。
nfs --server=nfsserver.example.com --dir=/tmp/install-tree
text 使用文字模式安裝。
lang 設定在安裝過程中使用的語言以及系統的預設語言。lang en_US.UTF-8
keyboard 設定系統鍵盤型別。keyboard us
zerombr 清除mbr引導資訊。
bootloader 系統引導相關設定。
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
--location=,指定引導記錄被寫入的位置.有效的值如下:mbr(預設),partition(在包含核心的分割區的第一個磁區安裝引導裝載程式)或none(不安裝引導裝載程式)。
--driveorder,指定在BIOS引導順序中居首的驅動器。
--append=,指定核心引數.要指定多個引數,使用空格分隔它們。
network 為通過網路的kickstart安裝以及所安裝的系統設定聯網資訊。
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
--bootproto=[dhcp/bootp/static]中的一種,預設值是dhcp。bootp和dhcp被認為是相同的。
static方法要求在kickstart檔案裡輸入所有的網路資訊。
network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2
請注意所有設定資訊都必須在一行上指定,不能使用反斜線來換行。
--ip=,要安裝的機器的IP地址.
--gateway=,IP地址格式的預設閘道器.
--netmask=,安裝的系統的子網掩碼.
--hostname=,安裝的系統的主機名.
--onboot=,是否在引導時啟用該裝置.
--noipv6=,禁用此裝置的IPv6.
--nameserver=,設定dns解析.
timezone 設定系統時區。timezone --utc Asia/Shanghai
authconfig 系統認證資訊。authconfig --enableshadow --passalgo=sha512
設定密碼加密方式為sha512 啟用shadow檔案。
rootpw root密碼
clearpart 清空分割區。clearpart --all --initlabel
--all 從系統中清除所有分割區,--initlable 初始化磁碟標籤
part 磁碟分割區。
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
--fstype=,為分割區設定檔案系統型別.有效的型別為ext2,ext3,swap和vfat。
--asprimary,強迫把分割區分配為主分割區,否則提示分割區失敗。
--size=,以MB為單位的分割區最小值.在此處指定一個整數值,如500.不要在數位後面加MB。
--grow,告訴分割區使用所有可用空間(若有),或使用設定的最大值。
firstboot 負責協助設定redhat一些重要的資訊。
firstboot --disable
selinux 關閉selinux。selinux --disabled
firewall 關閉防火牆???firewall --disabled
logging 設定紀錄檔級別。logging --level=info
reboot 設定安裝完成後重新啟動,此選項必須存在,不然kickstart顯示一條訊息,並等待使用者按任意鍵後才重新引導,也可以選擇halt關機。

報錯排查故障如下:

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-03/151348.htm


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