Kickstart無人值守安裝系統(tǒng)CentOS 7
1、概述
1.1 關(guān)于PXE
Preboot Execution Environment翻譯過來就是預(yù)啟動(dòng)執(zhí)行環(huán)境:簡(jiǎn)稱PXE;傳統(tǒng)安裝操作系統(tǒng)的方法是CD/ROM或U盤引導(dǎo),而PXE技術(shù)解決的是從網(wǎng)絡(luò)引導(dǎo)安裝系統(tǒng),當(dāng)然PXE技術(shù)不是什么新技術(shù)了,是Intel和Microsoft在1998年定義的更大PC98規(guī)范的一部分。有關(guān)PXE規(guī)范的詳細(xì)文檔
1.2 關(guān)于pxe引導(dǎo)相關(guān)角色說明
PXE作用:引導(dǎo)裝機(jī)Kickstart作用:將安裝系統(tǒng)的過程中通過ks.cfg文件中的配置信息,實(shí)現(xiàn)自動(dòng)安裝配置達(dá)到無人值守自動(dòng)安裝;TFTP作用:支持PXE 引導(dǎo)的網(wǎng)卡中從tftp服務(wù)器端下載pxelinux.0文件、vmlinuz、initrd.img等內(nèi)核引導(dǎo)文件;DHCP作用:PXE引導(dǎo)過程中獲首先獲取IP地址,并提供pxelinux.0文件位置;HTTP作用:用于下載ks.cfg以及系統(tǒng)鏡像文件
通用的無人值守做法如下:
通過一臺(tái)沒有系統(tǒng)的裸機(jī)網(wǎng)卡支持pxe協(xié)議,開機(jī)后從
dhcp服務(wù)器獲取ip和pxelinux.0文件并從tftp服務(wù)器上加載相關(guān)內(nèi)核引導(dǎo)文件;同時(shí)下載kickstart的cfg配置文件,指定系統(tǒng)鏡像文件位置加載安裝,從而實(shí)現(xiàn)無人值守安裝!

1.3 環(huán)境準(zhǔn)備說明
本次測(cè)試環(huán)境說明:
PXE服務(wù)器:CentOS 7.6基于VMware的虛擬機(jī),IP:10.0.0.61,172.16.1.61- 外網(wǎng)
IP段:10.0.0.0(可上網(wǎng)) 內(nèi)網(wǎng)IP段:172.16.1.0(局域網(wǎng))
配置服務(wù)及安裝軟件包如下:
DHCP #獲取IP地址,并提供pxelinux.0文件位置
TFTP #支持PXE下載內(nèi)核引導(dǎo)文件
HTTP #下載ks.cfg以及系統(tǒng)鏡像文件
Syslinux #提供引導(dǎo)文件
以上所需要的軟件包均通過
yum安裝
firewall和selinux臨時(shí)關(guān)閉與永久關(guān)閉:
##關(guān)閉firewalld
systemctl stop firewalld
##永久關(guān)閉firewalld
systemctl disable firewalld
##檢查結(jié)果
systemctl status firewalld
##臨時(shí)關(guān)閉selinux
setenforce 0
##永久關(guān)閉selinux
sed -i 's#^SELINUX=.*#SELINUX=disabled#g' /etc/sysconfig/selinux
##檢查結(jié)果
grep '^SELINUX=' /etc/sysconfig/selinux
若是生產(chǎn)線,請(qǐng)開放
UDP:67、68、69TCP:80端口。
ISO 鏡像:
CentOS 7.6
2、準(zhǔn)備
2.1 安裝所需要的軟件包
##yum安裝
yum install dhcp tftp tftp-server syslinux httpd -y
2.2 制作安裝源
1、確認(rèn)
CentOS 7.6ISO鏡像文件已連接

2、掛載本地光盤制作安裝源
##創(chuàng)建掛載點(diǎn)
mkdir –p /media/cdrom
##掛載CentOS7光盤
mount /dev/cdrom /media/cdrom
mkdir -p /var/www/html/centos/7/x86_64
##綁定掛載到http默認(rèn)目錄下
mount --bind /media/cdrom /var/www/html/centos/7/x86_64
2.3 配置kickstart的 ks.cfg文件
##創(chuàng)建ks目錄
mkdir /var/www/html/ks
## 查看/var/www/html/ks/目錄下ks.cfg文件內(nèi)容
cat /var/www/html/ks/ks.cfg
#Kickstart Configurator for CentOS 7 by Mine
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
#cdrom
# Install OS instead of upgrade
install
# Use network installation
url --url=http://10.0.0.61/centos/7/x86_64
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
#ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang zh_CN.UTF-8
# Network information
#network --bootproto=static --device=eth0 --gateway=10.0.0.254 --ip=10.0.0.100 --nameserver=223.5.5.5 --netmask=255.255.255.0 --activate
#network --bootproto=static --device=eth1 --ip=172.16.1.100 --netmask=255.255.255.0 --activate
network --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto
network --hostname=oldboy
# Root password
rootpw --iscrypted $1$oldboy$Npg9Pt9k98Mlg0ZeqHAuN1
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
%packages
@^minimal
@core
kexec-tools
vim
wget
httpd
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
selinux --disabled
reboot
3、配置
3.1 HTTPD服務(wù)
啟動(dòng)Httpd服務(wù),并設(shè)置開機(jī)自啟動(dòng)與查看
##啟動(dòng)httpd服務(wù)
systemctl start httpd
##開機(jī)自啟動(dòng)
systemctl enable httpd
##查看有無端口
netstat -lntup|grep httpd
3.2 DHCP服務(wù)
1、配置dhcp服務(wù)
dhcp配置文件在/etc/dhcp/目錄下,默認(rèn)的配置文件沒有,但我們可以在幫助文件中找到模板示例文件加以修改,模板示例路徑為/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example這里呢,為節(jié)省時(shí)間,我們直接寫入即可。
cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.199;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.0.0.61;
filename "/pxelinux.0";
}
EOF
##查看結(jié)果
cat /etc/dhcp/dhcpd.conf
2、啟動(dòng),設(shè)置開機(jī)自啟動(dòng)與查看
##啟動(dòng)dhcp服務(wù)
systemctl start dhcpd
##開機(jī)自啟動(dòng)
systemctl enable dhcpd
##查看有無端口
netstat -lntup|grep dhcpd
3.3 TFTP服務(wù)
安裝好
tftp-server軟件包后 默認(rèn)的數(shù)據(jù)根目錄是/var/lib/tftpboot/無須修改,只需要復(fù)制一些軟件引導(dǎo)文件進(jìn)來即可1、相關(guān)文件準(zhǔn)備
##引導(dǎo)文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
#內(nèi)核文件
cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot
#引導(dǎo)菜單
cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot
#制件引導(dǎo)默認(rèn)文件
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cat >/var/lib/tftpboot/pxelinux.cfg/default <<EOF
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE Menu
LABEL linux
MENU LABEL Install CentOS 7 x86_64
KERNEL vmlinuz
#APPEND initrd=initrd.img inst.repo=http://10.0.0.61/centos/7/x86_64 ks=http://10.0.0.61/ks/ks.cfg net.ifnames=0 biosdevname=0 ksdevice=eth0
#APPEND initrd=initrd.img inst.repo=http://10.0.0.61/centos/7/x86_64 ks=http://10.0.0.61/ks/ks.cfg
APPEND initrd=initrd.img inst.repo=http://10.0.0.61/centos/7/x86_64 ks=http://10.0.0.61/ks/ks.cfg net.ifnames=0 biosdevname=0
EOF
##查看結(jié)果
cat /var/lib/tftpboot/pxelinux.cfg/default
2、啟動(dòng)配置開機(jī)自啟
##開機(jī)自啟動(dòng)
systemctl enable tftp
##啟動(dòng)tftp
systemctl start tftp
3、Tftp測(cè)試
/var/lib/tftpboot/目錄文件結(jié)構(gòu)
##查看結(jié)構(gòu)
tree -L 2 /var/lib/tftpboot/
/var/lib/tftpboot/
├── chain.c32
├── initrd.img
├── mboot.c32
├── memdisk
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz
##測(cè)試tftp
[root@oldboyedu ~]# cd /tmp/
[root@oldboyedu /tmp]# pwd;ls
/tmp
[root@oldboyedu /tmp]# tftp 10.0.0.61
tftp> get vmlinuz
tftp> quit
[root@oldboyedu /tmp]# ls
vmlinuz
4、測(cè)試
客服端配置
1)、選擇自定義配置
在
Vmware軟件中,單擊左上角的文件,在下拉菜單中選擇新建虛擬機(jī)。

在彈出的
新建虛擬機(jī)向?qū)?/code>選項(xiàng)卡里面,選擇自定義(高級(jí))

2)、 選擇虛擬機(jī)硬件兼容性
硬件兼容性一項(xiàng)中,選擇最新的,默認(rèn)即可

3)、安裝客服機(jī)操作系統(tǒng)
我們后面要自己定制化安裝
CentOS系統(tǒng),所以此處選擇稍后安裝操作系統(tǒng)

4)、選擇客服機(jī)操作系統(tǒng)
此處
客服機(jī)操作系統(tǒng)選擇Linux,版本選擇CentOS 64位

5)、命名虛擬機(jī)
虛擬機(jī)名稱命名方法:IP+用途,位置:事先規(guī)劃好的位置即可

6)、處理器配置
我們目的是測(cè)試用的,所以默認(rèn)即可

7)、內(nèi)存配置
內(nèi)存大小,我們給2GB即可

8)、選擇網(wǎng)絡(luò)類型
為了方便學(xué)習(xí),
網(wǎng)絡(luò)類型這項(xiàng),必須選擇使用網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)

9)、選擇I/O控制類型
這一項(xiàng),我們默認(rèn)即可

10)、選擇磁盤類型
這一項(xiàng),我們也默認(rèn)即可

11)、選擇磁盤
磁盤這一項(xiàng),選擇創(chuàng)建新虛擬機(jī)磁盤,不要選擇其他的。

12)、指定磁盤容量
“磁盤容量
默認(rèn)20G即可

13)、指定磁盤文件
保持默認(rèn)即可

14)、掛載CentOS鏡像
點(diǎn)擊
自定義硬件,進(jìn)入硬件選項(xiàng)卡

在
硬件選項(xiàng)卡中,鼠標(biāo)點(diǎn)中CD/DVD(IDE)選項(xiàng),在右側(cè)選中使用ISO映像文件,點(diǎn)擊瀏覽按鈕,在彈出的窗口中找到本地的CentOS系統(tǒng)ISO文件,選擇完畢后,點(diǎn)擊關(guān)閉按鈕。

15)、完成創(chuàng)建虛擬機(jī)
此時(shí),一臺(tái)新虛擬機(jī)的硬件就全部配置完畢了,檢查確認(rèn)無誤后,點(diǎn)擊
完成按鈕

5、檢驗(yàn)
直接開啟虛擬機(jī),等待幾秒即可
DHCP ok

PXE ok

加net.ifnames=0 biosdevname=0網(wǎng)卡名是改成eth0或eth1

最后測(cè)試如下


6、附錄
6.1 ks文件生成的三種方式
- 方法1
每安裝好一臺(tái)Centos機(jī)器,Centos安裝程序都會(huì)創(chuàng)建一個(gè)kickstart配置文件,記錄你的真實(shí)安裝配置。如果你希望實(shí)現(xiàn)和某系統(tǒng)類似的安裝,可以基于該系統(tǒng)的kickstart配置文件來生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg)
- 方法2
Centos提供了一個(gè)圖形化的kickstart配置工具。在任何一個(gè)安裝好的Linux系統(tǒng)上運(yùn)行該工具,就可以很容易地創(chuàng)建你自己的kickstart配置文件。kickstart配置工具命令為redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4,RHEL5)。網(wǎng)上有很多用CentOS桌面版生成ks文件的文章,如果有現(xiàn)成的系統(tǒng)就沒什么可說。但沒有現(xiàn)成的,也沒有必要去用桌面版,命令行也很簡(jiǎn)單。
- 方法3
讀kickstart配置文件的手冊(cè)。用任何一個(gè)文本編輯器都可以創(chuàng)建你自己的kickstart配置文件。
6.2 ks文件配置參數(shù)說明
- 命令段:鍵盤類型,語言,安裝方式等系統(tǒng)的配置,有必選項(xiàng)和可選項(xiàng),如果缺少某項(xiàng)必選項(xiàng),安裝時(shí)會(huì)中斷并提示用戶選擇此項(xiàng)的選項(xiàng)
- 軟件包段:
%packages
@groupname:指定安裝的包組
package_name:指定安裝的包
-package_name:指定不安裝的包
在安裝過程中默認(rèn)安裝的軟件包,安裝軟件時(shí)會(huì)自動(dòng)分析依賴關(guān)系。
- 腳本段(可選)
%pre:安裝系統(tǒng)前執(zhí)行的命令或腳本(由于只依賴于啟動(dòng)鏡像,支持的命令很少)
%post:安裝系統(tǒng)后執(zhí)行的命令或腳本(基本支持所有命令)
詳解如下表所示:
| 關(guān)鍵字 | 含義 |
|---|---|
| install | 告知安裝程序,這是一次全新安裝,而不是升級(jí)upgrade。 |
| url --url=" " | 通過FTP或HTTP從遠(yuǎn)程服務(wù)器上的安裝樹中安裝。例如:url --url="http://10.0.0.7/CentOS-6.7/",url --url ftp://<username>:<password>@<server>/<dir> |
| nfs | 從指定的NFS服務(wù)器安裝,例如:nfs --server=nfsserver.example.com --dir=/tmp/install-tree |
| text | 使用文本模式安裝。 |
| lang | 設(shè)置在安裝過程中使用的語言以及系統(tǒng)的缺省語言,例如:lang en_US.UTF-8 |
| keyboard | 設(shè)置系統(tǒng)鍵盤類型。例如:keyboard us |
| zerombr | 清除mbr引導(dǎo)信息。 |
| bootloader | 系統(tǒng)引導(dǎo)相關(guān)配置。例如bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" |
| --location= | 指定引導(dǎo)記錄被寫入的位置.有效的值如下:mbr(缺省),partition(在包含內(nèi)核的分區(qū)的第一個(gè)扇區(qū)安裝引導(dǎo)裝載程序)或none(不安裝引導(dǎo)裝載程序)。 |
| --driveorder | 指定在BIOS引導(dǎo)順序中居首的驅(qū)動(dòng)器 |
| --append= | 指定內(nèi)核參數(shù).要指定多個(gè)參數(shù),使用空格分隔它們。 |
| network | 為通過網(wǎng)絡(luò)的kickstart安裝以及所安裝的系統(tǒng)配置聯(lián)網(wǎng)信息。例如: network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7; --bootproto=[dhcp/bootp/static]中的一種,缺省值是dhcp。bootp和dhcp被認(rèn)為是相同的。 |
| static | 方法要求在kickstart文件里輸入所有的網(wǎng)絡(luò)信息。例如:network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.254 --nameserver=10.0.0.61,請(qǐng)注意所有配置信息都必須在一行上指定,不能使用反斜線來?yè)Q行。 |
| --ip= | 要安裝的機(jī)器的IP地址 |
| --gateway= | IP地址格式的默認(rèn)網(wǎng)關(guān). |
| --netmask= | 安裝的系統(tǒng)的子網(wǎng)掩碼 |
| --hostname= | 安裝的系統(tǒng)的主機(jī)名 |
| --onboot= | 是否在引導(dǎo)時(shí)啟用該設(shè)備 |
| --noipv6= | 禁用此設(shè)備的IPv6 |
| --nameserver= | 配置dns解析 |
| timezone | 設(shè)置系統(tǒng)時(shí)區(qū)。例如:timezone --utc Asia/Shanghai |
| authconfig | 系統(tǒng)認(rèn)證信息。例如:authconfig --enableshadow --passalgo=sha512設(shè)置密碼加密方式為sha512 啟用shadow文件 |
| rootpw | root密碼 |
| clearpart | 清空分區(qū)。例如:clearpart --all --initlabel, --all 從系統(tǒng)中清除所有分區(qū),--initlable 初始化磁盤標(biāo)簽 |
| part | 磁盤分區(qū)。例如:part /boot --fstype=ext4 --asprimary --size=200,part swap --size=1024,part / --fstype=ext4 --grow --asprimary --size=200 |
| --fstype= | 為分區(qū)設(shè)置文件系統(tǒng)類型.有效的類型為ext2,ext3,swap和vfat |
| --asprimary | 強(qiáng)迫把分區(qū)分配為主分區(qū),否則提示分區(qū)失敗。 |
| --size= | 以MB為單位的分區(qū)最小值.在此處指定一個(gè)整數(shù)值,如500.不要在數(shù)字后面加MB。 |
| --grow | 告訴分區(qū)使用所有可用空間(若有),或使用設(shè)置的最大值。 |
| firstboot | 負(fù)責(zé)協(xié)助配置redhat一些重要的信息。例如:firstboot --disable |
| selinux | 關(guān)閉selinux。例如:selinux --disabled |
| firewall | 關(guān)閉防火墻。例如:firewall --disabled |
| logging | 設(shè)置日志級(jí)別。例如:logging --level=info |
| reboot | 設(shè)定安裝完成后重啟,此選項(xiàng)必須存在,不然kickstart顯示一條消息,并等待用戶按任意鍵后才重新引導(dǎo),也可以選擇halt關(guān)機(jī)。 |
6.3 DHCP配置文件說明
range 10.0.0.100 10.0.0.199; # 可分配的起始IP-結(jié)束IP
option subnet-mask 255.255.255.0; # 設(shè)定netmask
default-lease-time 21600; # 設(shè)置默認(rèn)的IP租用期限
max-lease-time 43200; # 設(shè)置最大的IP租用期限
next-server 10.0.0.61; # 告知客戶端TFTP服務(wù)器的ip
filename "/pxelinux.0"; # 告知客戶端從TFTP根目錄下載pxelinux.0文件
6.4 生成密碼方法
[root@m01 ~]# openssl passwd -1 -salt 'oldboy' '123456'
$1$oldboy$Npg9Pt9k98Mlg0ZeqHAuN1