課外-Kickstart無人值守安裝系統(tǒng)CentOS 7

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/ROMU 盤引導(dǎo),而 PXE 技術(shù)解決的是從網(wǎng)絡(luò)引導(dǎo)安裝系統(tǒng),當(dāng)然 PXE 技術(shù)不是什么新技術(shù)了,是 IntelMicrosoft1998 年定義的更大 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ù)器獲取 ippxelinux.0 文件并從 tftp 服務(wù)器上加載相關(guān)內(nèi)核引導(dǎo)文件;同時(shí)下載 kickstartcfg 配置文件,指定系統(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、69 TCP :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.6 ISO鏡像文件已連接

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ī)

image

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

image

2)、 選擇虛擬機(jī)硬件兼容性

硬件兼容性一項(xiàng)中,選擇最新的,默認(rèn)即可

image

3)、安裝客服機(jī)操作系統(tǒng)

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

image

4)、選擇客服機(jī)操作系統(tǒng)

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

image

5)、命名虛擬機(jī)

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

image

6)、處理器配置

我們目的是測(cè)試用的,所以默認(rèn)即可

image

7)、內(nèi)存配置

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

image

8)、選擇網(wǎng)絡(luò)類型

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

image

9)、選擇I/O控制類型

這一項(xiàng),我們默認(rèn)即可

image

10)、選擇磁盤類型

這一項(xiàng),我們也默認(rèn)即可

image

11)、選擇磁盤

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

image

12)、指定磁盤容量

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

image

13)、指定磁盤文件

保持默認(rèn)即可

image

14)、掛載CentOS鏡像

點(diǎn)擊自定義硬件,進(jìn)入硬件選項(xiàng)卡

image

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

image

15)、完成創(chuàng)建虛擬機(jī)

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

image

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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容