KICKSTART無人值守安裝系統


KICKSTART無人值守安裝系統

  1. 背景及原理

    在工作中常常需要重復的在多台機器上安裝相同的操作系統,對於這些機械式的重復

工作可以采取利用kickstart無人值守安裝操作系統來完成。

PXE,全名Pre-boot Execution Environment,預啟動執行環境。通過網絡接口啟動計算機,不依賴本地存儲設備(如硬盤)或本地已安裝的操作系統,是由Intel公司和Systemsoft公司於1999年9月20日公布的技術,采用Client/Server的工作模式,PXE客戶端會調用網際協議(IP)、用戶數據報協議(UDP)、動態主機設定協議(DHCP)、小型文件傳輸協議(TFTP)等網絡協議。PXE客戶端(client)這個術語是指機器在PXE啟動過程中的角色。一個PXE客戶端可以是一台服務器、筆記本電腦或者其他裝有PXE啟動代碼的機器(我們電腦的網卡)。

  1. PXE的工作過程

2.1 PXE Client向DHCP發送請求

PXE Client從自己的PXE網卡啟動,通過PXE BootROM(自啟動芯片)會以UDP(簡單用戶數據報協議)發送一個廣播請求,向本網絡中的DHCP服務器索取IP。

2.2 DHCP服務器提供信息

DHCP服務器收到客戶端的請求,驗證是否來至合法的PXE Client的請求,驗證通過它將給客戶端一個"提供"響應,這個"提供"響應中包含了為客戶端分配的IP地址、pxelinux啟動程序(TFTP)位置,以及配置文件所在位置。

2.3 PXE客戶端請求下載啟動文件

客戶端收到服務器的"回應"后,會回應一個幀,以請求傳送啟動所需文件。這些啟動文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

2.4 Boot Server響應客戶端請求並傳送文件

當服務器收到客戶端的請求后,他們之間之后將有更多的信息在客戶端與服務器之間作應答, 用以決定啟動參數。BootROM由TFTP通訊協議從Boot Server下載啟動安裝程序所必須的文件(pxelinux.0、pxelinux.cfg/default)。default文件下載完成后,會根據該文件中定義的引導順序,啟動Linux安裝程序的引導內核。

2.5 請求下載自動應答文件

客戶端通過pxelinux.cfg/default文件成功的引導Linux安裝內核后,安裝程序首先必須確定你通過什么安裝介質來安裝linux,如果是通過網絡安裝(NFS, FTP, HTTP),則會在這個時候初始化網絡,並定位安裝源位置。接着會讀取default文件中指定的自動應答文件ks.cfg所在位置,根據該位置請求下載該文件。

2.6 客戶端安裝操作系統

將ks.cfg文件下載回來后,通過該文件找到OS Server,並按照該文件的配置請求下載安裝過程需要的軟件包。

OS Server和客戶端建立連接后,將開始傳輸軟件包,客戶端將開始安裝操作系統。安裝完成后,將提示重新引導計算機。

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的封裝,簡化安裝步驟、使用流程,降低使用者的門檻。

4、環境模擬

4.1 虛擬機准備一台安裝好系統並進行基礎優化的Linux 6.9版本系統作為服務器端,命名為server,一台沒有安裝任何系統的VMware空機器,命名為test。其中server具有eth0和eth1兩塊網卡,eth0為NAT模式,eth1為lan區段。開機后進行網卡的配置,eth0的ip可以設置為dhcp模式自動從虛擬機獲取也可以設置為靜態iP地址,配置該機器能夠上外網;eth1的ip設置為192.168.1.254(屬於192.168.1.0網段)

4.2 配置好server的兩個網卡的ip並能連通外網后,執行命令開啟轉發功能

vim /etc/sysctl.conf —> net.ipv4.ip_forward = 1

sysctl –p        #加載內核參數

iptables –F        #清空iptables

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE        #配置iptables轉發規則

5、配置dhcp服務

yum install dhcp –y            #安裝dhcp服務

vim /etc/dhcp/dhcpd.conf    #編輯dhcp服務的配置文件

添加以下內容

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.100 192.168.1.254;

option domain-name-servers 223.5.5.5;

option routers 192.168.1.3;

next-server 192.168.1.3;

filename "/pxelinux.0";

default-lease-time 600;

max-lease-time 7200;

}

/etc/init.d/dhcpd restart        #啟動dhcp服務

6、配置tftp服務

yum install tftp-server –y        #安裝tftp服務

vim /etc/xinetd.d/tftp        #編輯tftp服務的配置文件

修改disable內容為disable             = no

/etc/init.d/xinetd start        #啟動tftp服務

7、配置http服務

yum install httpd –y            #安裝http服務

sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf(可選步驟)

/etc/init.d/httpd start        #啟動http服務

cd /var/www/html/    

ls

mkdir centos                #新建本地站點目錄

ls /dev/cdrom                

mount /dev/cdrom centos/    #掛載本地鏡像源到網站目錄

df –h                        #檢查是否掛載

此時可以通過瀏覽器輸入http://10.0.0.130/centos訪問到鏡像的本地站點目錄,里面包含鏡像文件安裝系統所需要的各種文件

 

8、准備PXE開機引導文件

yum -y install syslinux        #安裝sysLinux軟件

cd /var/lib/tftpboot/            #進入tftp根目錄

cp /usr/share/syslinux/pxelinux.0 .        #拷貝啟動菜單程序文件

cp /var/www/html/centos/isolinux/* .        #拷貝isolinux所有文件至tftpboot

ls /var/lib/tftpboot/            #查看

mkdir pxelinux.cfg            #新建一個pxelinux.cfg目錄,存放客戶端的配置文件

cd pxelinux.cfg                #進入到pxelinux.cfg目錄

cp /var/www/html/centos/isolinux/isolinux.cfg default        #拷貝pxe配置文件isolinux.cfg並重命名為default

vim default            #配置文件default解析,可對一些字段進行自定義,並指定自動應答文件的url地址

9、將test機器開機,進行無人值守自動安裝

等待片刻,就會安裝完成,進行登錄

10、自動應答文件ks.cfg

10.1 可以通過查看當前目錄下anaconda-ks.cfg文件進行參考

# Kickstart file automatically generated by anaconda.

 

#version=DEVEL    #版本=開發

Install    #安裝系統途徑光盤

cdrom        #安裝的介質

lang en_US.UTF-8        #系統的語言

keyboard us    #系統鍵盤布局

network --onboot no --device eth0 --bootproto dhcp --noipv6        #網絡的配置

rootpw --iscrypted    #root密碼$6$tnRJPwWVl1GByCWK$1Z5h3JGSuWaYLfcc.02ASJr1bc.T/NXLy28KdSGRaSPEYB2R1TeL6pyYnPZhvQ63vTICKeUMo9WCyIqMqTiyl0

firewall --service=ssh    #啟用防火牆,添加ssh例外

authconfig --enableshadow --passalgo=sha512        #系統賬號的認證加密方式為sha-512

selinux --enforcing        #selinux的狀態

timezone Asia/Shanghai        #時區

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

#系統啟動引導

# The following is the partition information you requested

# Note that any partitions you deleted are not expressed

# here so unless you clear all partitions first, this is

# not guaranteed to work

#clearpart --none

#磁盤分區信息

#part swap --asprimary --size=2048

#part / --fstype=ext4 --grow --size=200

 

 

repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100    

repo以及本地安裝包,centos網絡安裝包

 

%packages    #包名

@base

@compat-libraries

@core

@debugging

@development

@server-policy

@workstation-policy

python-dmidecode

sgpio

device-mapper-persistent-data

systemtap-client

10.2 新建並自定義ks.cfg自動應答

# Kickstart file automatically generated by anaconda.

 

#version=DEVEL

install

url --url=http://10.0.0.131/centos/        #url源

lang en_US.UTF-8

keyboard us

network --onboot yes --device eth0 --bootproto dhcp --noipv6

rootpw    --iscrypted $6$np50FkEgfj1OXA85$afrVDyovBiEYURUVjrlB58T8rCn4eVGAievcTdJL6P6840rAowEobX7HplSm5uhDWZcbs3XBAgvRM0jaDI0xq1

firewall --service=ssh

authconfig --enableshadow --passalgo=sha512

selinux --enforcing

timezone Asia/Shanghai

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

# The following is the partition information you requested

# Note that any partitions you deleted are not expressed

# here so unless you clear all partitions first, this is

# not guaranteed to work

zerombr        #清除mbr引導信息

clearpart --all –initlabel        #清空分區

part /boot --fstype=ext4 --asprimary --size=200

part swap --asprimary --size=2048

part / --fstype=ext4 --grow --asprimary --size=200

 

reboot        #安裝完重啟

 

repo --name="CentOS" --baseurl=http://10.0.0.131/centos/ --cost=100        #url源

 

%packages

@base

@compat-libraries

@core

@debugging

@server-policy

@workstation-policy

python-dmidecode

sgpio

device-mapper-persistent-data

%end

10.3 開機自動進行基礎優化的youhua.ks.cfg自動應答文件

# Kickstart file automatically generated by anaconda.

 

#version=DEVEL

install

url --url=http://10.0.0.130/centos/

lang en_US.UTF-8

keyboard us

network --onboot yes --device eth0 --bootproto dhcp --noipv6

rootpw    --iscrypted $6$np50FkEgfj1OXA85$afrVDyovBiEYURUVjrlB58T8rCn4eVGAievcTdJL6P6840rAowEobX7HplSm5uhDWZcbs3XBAgvRM0jaDI0xq1

firewall --disabled    #關閉防火牆

authconfig --enableshadow --passalgo=sha512

selinux --disabled    #關閉selinux

timezone Asia/Shanghai

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

# The following is the partition information you requested

# Note that any partitions you deleted are not expressed

# here so unless you clear all partitions first, this is

# not guaranteed to work

zerombr

clearpart --all --initlabel

part /boot --fstype=ext4 --asprimary --size=200

part swap --asprimary --size=2048

part / --fstype=ext4 --grow --asprimary --size=200

 

reboot

 

%packages

@base

@compat-libraries

@core

@debugging

@server-policy

@workstation-policy

python-dmidecode

sgpio

device-mapper-persistent-data

net-tools    #安裝常用軟件包

vim

lrzsz

wget

tree

screen

lsof

tcpdump

%end

 

%post        #優化開機啟動項,優化ssh,優化yum源,修改主機名

echo 'begin youhua' >>/tmp/install.log

chkconfig|awk '{print $1}'|grep -Ev 'crond|rsyslog|sshd|sysstat|network'|awk '{print "chkconfig " $0 " off"}'|bash

sed -i 's@#UseDNS yes@UseDNS no@g' /etc/ssh/sshd_config

sed -i '/^GSSAPIAuthentication yes/d' /etc/ssh/sshd_config

>/etc/issue

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

sed -i 's#^HOSTNAME=.*$#HOSTNAME=oldboy#g' /etc/sysconfig/network

%end

10.4 自動應答文件的目錄

自動應答文件的目錄與鏡像文件的目錄不相同,可以直接放在/var/www/html/下,也可以在此目錄下新建一個單獨存放自動應答文件的目錄,不同的目錄在相應的default中要相互對應

11、添加gpt分區

如果硬盤的容量超過了2T,需要采用gpt分區表,可以在自動應答文件中安裝系統前加上gpt格式分區表的命令,加在優化字段前面%pre %end

%pre

parted /dev/sda mklabel gpt

%end

12、MAC地址綁定安裝系統

根據實際需要,不同的機器需要安裝不同系統的包組,不同的優化等等,可以通過采取綁定mac地址的方式,從而使用不同的應答文件

首先需要得到網卡的MAC地址,然后再創建一個內容與/var/lib/tftpboot/pxelinux.cfg/default文件內容相同的文件,文件名命名格式為"01-mac地址",其中mac地址字母需要改為小寫,分隔符將:修改為-

做法如下cp default 01-`echo 00:0C:29:48:EE:6B|tr 'A-Z' 'a-z'|tr ':' '-'`

再修改該文件中的url地址為相應的自動應答文件ks.cfg地址即可

mac地址分配固定ip

vim /etc/dhcp/dhcpd.conf

host lb01{

hardware ethernet 00:50:56:27:CF:7B;

fixed-address 192.168.128.5;

}

 

參考來源:http://www.zyops.com/autoinstall-kickstart/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM