想學學cobber,cobber是基於Kickstart的。所以就看了看kickstart的知識。
1.簡介
1.1 pxe簡介
PXE並不是一種安裝方式,而是一種引導方式。進行PXE安裝的必要條件是要安裝的計算機中包含一個PXE支持的網卡(NIC),即網卡中必須要有PXE Client。PXE協議使計算機可以通過網絡啓動。
協議分爲Client和Server端。PXE Client在網卡的ROM中,當計算機引導時,BIOS把PXE Client調入內存執行,由PXE Client將放置在遠端的文件通過網絡下載到本地運行。
運行PXE協議需要設置DHCP服務器和TFTP服務器。DHCP服務器用來給PXE Client(將要安裝OS的主機)分配一個IP地址,由於是給PXE Client分配IP地址,所以在配置DHCP服務器時需要增加相應的PXE設置。
此外,在PXE Client的ROM中,已經存在了TFTP Client。PXE Client通過TFTP協議到TFTP Server上下載所需的文件。
1.2 pxe的工作過程
- PXE Client 從自己的PXE網卡啓動,向本網絡中的DHCP服務器索取IP;
- DHCP 服務器返回分配給客戶機的IP 以及PXE文件的放置位置(該文件一般是放在一臺TFTP服務器上) ;
- PXE Client 向本網絡中的TFTP服務器索取pxelinux.0 文件;
- PXE Client 取得pxelinux.0 文件後之執行該文件;
- 根據pxelinux.0 的執行結果,通過TFTP服務器加載內核和文件系統 ;
- 進入安裝畫面, 此時可以通過選擇HTTP、FTP、NFS 方式之一進行安裝。(本篇爲HTTP)
1.3 Kickstart
KickStart是一種無人值守化自動安裝方式。KickStart的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種參數,並生成一個ks.cfg的文件;在其後的安裝過程中(不只侷限於生成KickStart安裝文件的機器)當出現要求填寫參數的情況時,安裝程序就會首先去查找KickStart生成的文件,當找到合適的參數時,就採用找到的參數;當沒有找到合適的參數,才需要安裝者手工干預。
這樣,如果KickStart文件涵蓋了安裝過程中出現的所有需要填寫的參數時,安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然後去忙自己的事情。等安裝完畢,安裝程序會根據ks.cfg中設置的重啓選項來重啓系統,並結束安裝。
pxe+kickstart無人值守化自動安裝完整示意圖如下:
2. 實驗環境
實驗環境:VMware Workstation 15
系統平臺:CentOS 7.4(最小安裝)
網絡模式:NAT模式
DHCP/TFTP/HTTP IP:192.168.146.101
防火牆、Selinux均關閉
3. Kickstart無人值守部署
安裝相關軟件包
[root@CentOS7 ~]# yum -y install dhcp xinetd tftp-server syslinux system-config-kickstart httpd
3.1 配置DHCP服務
[root@CentOS7 ~]# vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
#指定引導文件
filename "pxelinux.0";
#指定引導文件服務器
next-server 192.168.146.101;
subnet 192.168.146.0 netmask 255.255.255.0 {
option routers 192.168.146.2;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.146.2;
range dynamic-bootp 192.168.146.140 192.168.146.200;
default-lease-time 60;
max-lease-time 7200;
}
#啓動http服務
[root@CentOS7 ~]# systemctl restart dhcpd
3.2 TFTP服務配置
[root@CentOS7 ~]# vim /etc/xinetd.d/tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
#指定服務目錄
server_args = -s /var/lib/tftpboot
#服務開關(默認爲yes,需改爲no)
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
#啓動tftp服務
[root@CentOS7 ~]# systemctl restart tftp xinetd
3.3 準備引導相關的文件
#創建網絡引導配置文件目錄
[root@CentOS7 ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
#複製系統映像
[root@CentOS7 ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
#複製系統內核
[root@CentOS7 ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
#複製引導文件
[root@CentOS7 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
#複製引導配置文件
[root@CentOS7 ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
#變更配置文件權限
[root@CentOS7 ~]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
#修改配置文件
[root@CentOS7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
#將64行改爲
64 append initrd=initrd.img ks=http://192.168.146.101/ks.cfg
3.4 HTTP服務配置(準備安裝鏡像)
#創建掛載目錄
[root@CentOS7 ~]# mkdir /var/www/html/CentOS7
#掛載系統鏡像
[root@CentOS7 ~]# mount /dev/cdrom /var/www/html/CentOS7
#啓動http服務
[root@CentOS7 ks]# systemctl restart httpd
#注意:需要修改default文件的ks文件路徑
[root@CentOS7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
#將64行改爲
64 append initrd=initrd.img ks=http://192.168.146.101/ks.cfg
3.5 創建ks.cfg應答文件
#創建KS應答文件到/var/www/html目錄下
[root@CentOS7 ~]# vim /var/www/html/ks.cfg
1 #platform=x86, AMD64, or Intel EM64T
2 #version=DEVEL
3 # Install OS instead of upgrade
4 install
5 # Keyboard layouts
6 keyboard 'us'
7 # Root password
8 rootpw --iscrypted $1$lzi1yxOL$JIBTFLwje42.tI1JdYX.m0
9 # Use network installation
10 url --url="http://192.168.146.101/CentOS7"
11 # System language
12 lang zh_CN
13 # System authorization information
14 auth --useshadow --passalgo=sha512
15 # Use text mode install
16 text
17 firstboot --disable
18 # SELinux configuration
19 selinux --disabled
20
21 # Firewall configuration
22 firewall --disabled
23 # Network information
24 network --bootproto=dhcp --device=ens33
25 # Reboot after installation
26 reboot
27 # System timezone
28 timezone Asia/Shanghai
29 # System bootloader configuration
30 bootloader --location=mbr
31 # Clear the Master Boot Record
32 zerombr
33 # Partition clearing information
34 clearpart --all --initlabel
35 # Disk partitioning information
36 part /boot --fstype="xfs" --size=200
37 part swap --fstype="swap" --size=2048
38 part / --fstype="xfs" --grow --size=1
39
40 %packages
41 @base
42
43 %end
4. 測試
CentOS7最小安裝成功。
至此,pxe+kickstart無人值守化自動安裝搭建完畢。