PXE+Kickstart無人值守安裝系統

PXE+Kickstart無人值守安裝系統

一、介紹
二、原理
三、安裝部署PXE+kickstart
四、安裝TFTP
五、安裝DHCP
六、生成kickstart(ks.cfg)文件
七、安裝HTTP
八、虛擬機測試自動安裝

一、介紹

CentOS的安裝方法挺多,最常見的有光盤、Kickstart無人值守安裝、U盤安裝及ISO硬盤安裝等。如果現在讓你安裝100臺服務器,甚至更多臺服務器,你會用什麼辦法安裝呢,用光盤?這樣要損壞多少張光盤呢,價格也不菲,U盤安裝?一臺一臺接,很累好不好,用kickstart無人值守安裝的方法,可以在內網批量安裝新服務器系統,這種方法極大地簡化了用光盤重複安裝的過程,極大地提高了工作效率。

二、原理

1.什麼是PXE

(1)PXE不是一種安裝方式,而是一種引導方式
(2)PXE(Pre-boot Execution Environment)協議可以使計算機通過網絡啓動
(3)採用C/S結構

wKiom1j4KpLx8CBAAACtSxB_1Xs587.png-wh_50

2.PXE的工作過程

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

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

(3)PXE客戶端請求下載啓動文件
  客戶端收到服務器的迴應後,會迴應一個幀,以請求傳送啓動所需文件。這些文件包括:pxelinux.0、pxelinux.cfg/default、initrd.img等文件。

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

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

(6)將ks.cfg文件下載回來後,通過該文件找到OS Server,並安裝該文件的配置請求下載安裝過程需要的軟件包。
   OS Server和客戶端建立連接後,將開始傳輸軟件包,客戶端將開始安裝操作系統。安裝完成後,將提示重新引導計算機。

補充信息,這裏圖文並茂介紹PXE工作流程

http://www.zyops.com/autoinstall-kickstart

三、部署安裝PXE+Kickstart

1.系統環境準備

[root@pxe ~]# uname -a				#這是一臺桌面GUN的Linux,可能你問爲什麼要用桌面呢,後面要用到啦
Linux pxe 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@pxe ~]# uname -m				
x86_64						#64位系統
[root@pxe ~]# cat /etc/redhat-release 		
CentOS release 6.6 (Final)			#版本是6.6
[root@pxe ~]# getenforce 
Disabled					#禁用selinux
[root@pxe ~]# /etc/init.d/iptables stop		#關閉防火牆
[root@pxe ~]# ifconfig eth0 | sed -n '2p' | awk  '{print $2}' | awk -F ":" '{print $2}'
192.168.16.100					#這臺機器的IP地址

注意:虛擬機環境網卡採用NAT模式,不要使用橋接模式,把VMware的NAT模式的DHCP服務也關閉

2.創建用於存放鏡像裏面的內容目錄

[root@pxe ~]# mkdir -p /data/sys

3.掛載鏡像到mnt目錄下,再將系統鏡像裏邊的內容拷貝到共享目錄/data/sys中去

[root@pxe ~]# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@pxe ~]# ll /mnt/
total 712
-r--r--r--. 2 test test     14 Oct 24  2014 CentOS_BuildTag
dr-xr-xr-x. 3 test test   2048 Oct 24  2014 EFI
-r--r--r--. 2 test test    212 Nov 28  2013 EULA
-r--r--r--. 2 test test  18009 Nov 28  2013 GPL
dr-xr-xr-x. 3 test test   2048 Oct 24  2014 p_w_picpaths
dr-xr-xr-x. 2 test test   2048 Oct 24  2014 isolinux
dr-xr-xr-x. 2 test test 686080 Oct 24  2014 Packages
-r--r--r--. 2 test test   1354 Oct 20  2014 RELEASE-NOTES-en-US.html
dr-xr-xr-x. 2 test test   4096 Oct 24  2014 repodata
-r--r--r--. 2 test test   1706 Nov 28  2013 RPM-GPG-KEY-CentOS-6
-r--r--r--. 2 test test   1730 Nov 28  2013 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r--. 2 test test   1730 Nov 28  2013 RPM-GPG-KEY-CentOS-Security-6
-r--r--r--. 2 test test   1734 Nov 28  2013 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r--. 1 test test   3380 Oct 24  2014 TRANS.TBL
[root@pxe ~]# cp -a /mnt/* /data/sys/

四、安裝TFTP

在安裝PXE過程中,客戶端通過TFTP協議從TFTP服務器下載引導文件並執行,因此,需要配置TFTP服務器和PXE的引導配置完成這個過程

1.安裝tftp和xinetd

[root@pxe ~]# yum install tftp-server.x86_64 xinetd.x86_64 -y
[root@pxe ~]# rpm -qa tftp-server xinetd
xinetd-2.3.14-40.el6.x86_64
tftp-server-0.49-8.el6.x86_64

2.配置tftp服務

TFTP服務使用Xinetd服務管理,編輯/etc/xinetd.d/tftp,將文件中disable的參數由yes改爲no
[root@pxe ~]# vim /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot		#這是存放目錄,根據自己喜歡修改
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

3.啓動xinetd,並且設置開機自啓動

[root@pxe ~]# /etc/init.d/xinetd start
Starting xinetd:                                           [  OK  ]
[root@pxe ~]# chkconfig --level 3 xinetd on
[root@pxe ~]# chkconfig --list xinetd
xinetd         	0:off	1:off	2:off	3:on	4:on	5:on	6:off

4.配置支持PXE引導啓動程序

PXE啓動映像文件由syslinux軟件提供,只要安裝了syslinux,就會生成一個pxelinux.0文件,將這個文件複製到TFTP默認路徑即可。 syslinux是一個功能強大的引導加載程序,而且兼容各種介質,更加確切地說:syslinux是一個小型的Linux操作系統,它的目的是簡化Linux的時間,並建立修護或其他特殊用途的啓動盤。

[root@pxe ~]# yum install syslinux.x86_64 -y
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxe ~]# ll /var/lib/tftpboot/
total 28
-rw-r--r--. 1 root root 26759 Apr 19 23:54 pxelinux.0

5.用於網絡啓動的內核文件

將CentOS安裝光盤目錄中的p_w_picpaths/pxeboot/{vmlinuz,initrd.img}啓動文件複製到某個安裝目錄,比如/var/lib/tftpboot/

[root@pxe ~]# cp /data/sys/p_w_picpaths/pxeboot/vmlinuz /var/lib/tftpboot/				#複製內核文件

[root@pxe ~]# cp /data/sys/p_w_picpaths/pxeboot/initrd.img /var/lib/tftpboot/				#複製驅動文件

root@pxe ~]# cp /data/sys/isolinux/boot.msg /var/lib/tftpboot/				#複製boot.msg

6.創建pxelinx.cfg目錄,複製isolinux.cfg文件到/tftpboot目錄並改名default

[root@pxe ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
[root@pxe ~]# cp /data/sys/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

7.編輯配置default文件

[root@pxe ~]# cd /var/lib/tftpboot/pxelinux.cfg/ 
[root@pxe pxelinux.cfg]# chmod 644 default 
[root@pxe pxelinux.cfg]# vim default 
default linux		#默認啓動的是“lobeltext”中標記的內核
#prompt 1		#開啓會顯示命令行'boot: '提示符。prompt值爲0時則不提示,將會直接啓動'default'參數中指定的
timeout 1		#timeout時間是引導時等待用戶手動選擇的時間,設爲1可直接引導,單位爲1/10秒

display boot.msg
# 菜單背景圖片、標題、顏色
menu background splash.jpg
menu title Welcome to CentOS 6.6!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label linux			
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz						#指定要啓動的內核。同樣要注意路徑,默認是/var/lib/tftpboot目錄
  append initrd=initrd.img ks=http://192.168.16.100/ks.cfg	#添加ks文件的地址

五、安裝配置DHCP服務

在PXE安裝過程中,PXE客戶機主要通過DHCP服務獲取地址,PXE引導文件名稱,然後再客戶端機上通過TFTP協議從TFTP服務器下載引導文件並執行,從而啓動系統安裝程序執行後,接着下載並安裝程序啓動安裝。

1.安裝和配置DHCP

[root@pxe ~]# yum install dhcp.x86_64 -y
[root@pxe ~]# vim /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
#
ddns-update-style none;					#不ddns更新
next-server 192.168.16.100;				#告知客戶端tftp服務器的ip地址
filename "pxelinux.0";					#告知客戶端從TFTP根目錄下載pxelinux.0文件
subnet 192.168.16.0 netmask 255.255.255.0 {		#設定子網
  range 192.168.16.10 192.168.16.20;			#設定子網範圍
   option domain-name-servers 114.114.114.114;		#設定DNS
   option routers 192.168.16.2;				#設定默認網關
   default-lease-time 600;				#設置默認的IP租用時間,單位爲秒
   max-lease-time 7200;					#最大的IP租用時間,單位爲秒
   }
log-facility local4;					#記錄DHCP日誌

2.創建日誌文件

[root@pxe ~]# vim /etc/rsyslog.conf 
# Save dhcpd messages also to dhcpd.log
local4.*                                                /var/log/dhcpd.log
[root@pxe ~]# touch /var/log/dhcpd.log
[root@pxe ~]# chmod 600 /var/log/dhcpd.log

3.啓動DHCP服務器

[root@pxe ~]# /etc/init.d/dhcpd start
Starting dhcpd:                                            [  OK  ]

4.設置開機自啓動

[root@pxe ~]# chkconfig dhcpd on
[root@pxe ~]# chkconfig --list | grep dhcp
dhcpd          	0:off	1:off	2:on	3:on	4:on	5:on	6:off

六、生成kickstart文件

通常安裝操作系統過程中,需要常常和服務器進行交互操作,爲了減少這個交互過程可以使用kickstart。使用kickstart,只需先定義好一個kickstart自動應答配置文件ks.cfg,並讓安裝程序知道該配置文件的位置,在安裝過程中安裝程序就可以自動從文件中讀取kickstart配置文件。

1.使用CentOS Linux提供一個圖形化的kickstart配置工具

[root@pxe ~]# yum install system-config-kickstart.noarch

wKiom1j4KuriI1akAAGHTNVYN4Y472.png-wh_50

打開kickstart工具,也在圖形終端打開命令行窗口鍵入命令system-config-kickstart打開

wKioL1j4K2PBal3gAAEU4-qDN7I520.png-wh_50

這裏選擇語言、時區、root密碼,勾選第一個,安裝系統後重啓

wKiom1j4LA-B6LNeAADE_OIhLrw512.png-wh_50

選擇全新安裝,安裝源方式爲HTTP,HTTP地址和目錄

wKiom1j4LGeCkG_tAADwf9btwEA486.png-wh_50

選擇是引導,默認就行啦

wKiom1j4LIbTQDsBAAEZ7E-X8UY383.png-wh_50

分區信息,清除引導,移除分區,添加你需要的分區

wKioL1j4LPXzlYqxAAC5Wgw7-FE264.png-wh_50

添加網絡設備,如果只有一張網卡就eth0啦

wKiom1j4LSzD1SZaAADYMOnUPcs326.png-wh_50

這裏密碼加密,默認就行

wKioL1j4LVHxO8_QAADJW3CKG0Y166.png-wh_50

防火牆配置,我這裏是選擇關閉的

wKiom1j4LYfzOYx4AAChuK7yp0g207.png-wh_50

顯示配置,默認即可

wKioL1j4LfLgXP1cAAE-YDdPvBE377.png-wh_50

選擇安裝的軟件包,根據自己情況選擇哈

wKioL1j4LkGi4G5zAAE-zT9DAbk072.png-wh_50

選擇左上角的File,點擊Save(保存)

wKiom1j4Ls6zBI6lAAFJPxYvH2E406.png-wh_50

保存的路徑/data/sys/ks.cfg,這個路徑很講究喔

查看保存後的ks.cfg文件,本應該是有三部分的,但我沒有選擇腳本選項,所以這裏文件只有兩部分,第一是鍵盤類型,語言,安裝方式等系統的配置,有必選項和可選項,如果缺少某項必選項,安裝時會中斷並提示用戶選擇此項的選項,第二是軟件包安裝

[root@pxe ~]# cat /data/sys/ks.cfg 
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled                                        #防火牆禁用
# Install OS instead of upgrade
install                                                    #表示是安裝系統不是升級
# Use network installation
url --url="http://192.168.16.100/"                         #告訴安裝程序,到http://ip/下面找安裝介質
# Root password
rootpw --iscrypted $1$ZoLiOvI6$jV67RM98I/JKaKpE6vUDz0       #root密碼
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text                                                        #文本安裝方式
firstboot --disable
# System keyboard                                           #鍵盤類型
keyboard us                    
# System language                                           #系統語言
lang en_US
# SELinux configuration                                     #禁用selinux
selinux --disabled
# Installation logging level                                #設置日誌級別
logging --level=info
# Reboot after installation                                 #安裝完系統後重啓
reboot
# System timezone                                           #系統時區 
timezone  Asia/Shanghai
# Network information                                       #網絡信息
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr                                    #系統引導相關信息
# Clear the Master Boot Record              
zerombr
# Partition clearing information                           #清除所有分區
clearpart --all --initlabel 
# Disk partitioning information                            #系統的三個分區
part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=2048
part / --asprimary --fstype="ext4" --grow --size=1

%packages                                                #安裝的軟件包
@base
@compat-libraries
@debugging
@development
git

%end

給予ks.cfg權限

[root@pxe ~]# chmod 777 /data/sys/ks.cfg

七.安裝HTTP服務

1.檢查是否安裝

[root@pxe ~]# /usr/local/nginx/sbin/nginx -v		#這是我編譯安裝好的nginx
nginx version: nginx/1.12.0

2.配置nginx.conf文件

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  192.168.16.100;
        location / {
            root   /data/sys;					#這個目錄是存放ks.cfg
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

3.檢查語法

[root@pxe conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

4.啓動nginx服務

[root@pxe conf]# /usr/local/nginx/sbin/nginx

八、用虛擬機測試自動化安裝

  1. 用虛擬機安裝一臺測試機器,不用選擇光盤,直接點擊開機就行

    wKioL1j4NBazOnnIAABdfPHo-9w579.png-wh_50

    wKioL1j4NEbx7W2SAAANiuayjOg924.png-wh_50


     wKiom1j4NHjj6YngAAArwuBnfic767.png-wh_50

    然後就是你去吃個飯回來,就安裝好啦,去吃飯啦


最後想說的是,這個自動化安裝功能我超級喜歡,就好像windows AD部署利用組策略自動安裝軟件一樣,嘻嘻,感謝51CTO這個平臺,讓自己學習更多知識,看到很多大牛的好文章,才能讓自己進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章