真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

kickstart安裝系統(tǒng)原理詳解

前言

作為中小公司的運(yùn)維,經(jīng)常會(huì)遇到一些機(jī)械式的重復(fù)工作,例如:有時(shí)公司同時(shí)上線幾十甚至上百臺(tái)服務(wù)器,而且需要我們?cè)诙虝r(shí)間內(nèi)完成系統(tǒng)安裝。

公司主營(yíng)業(yè)務(wù):網(wǎng)站建設(shè)、網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)公司推出宜賓免費(fèi)做網(wǎng)站回饋大家。

常規(guī)的辦法有什么?

  • 光盤安裝系統(tǒng)===>一個(gè)服務(wù)器DVD內(nèi)置光驅(qū)百千塊,百臺(tái)服務(wù)器都配光驅(qū)就浪費(fèi)了,因?yàn)橐慌_(tái)服務(wù)器也就開(kāi)始裝系統(tǒng)能用的上,以后用的機(jī)會(huì)屈指可數(shù)。用USB外置光驅(qū),插來(lái)插去也醉了。

  • U盤安裝系統(tǒng)===>還是同樣的問(wèn)題,要一臺(tái)一臺(tái)服務(wù)器插U盤。

  • 網(wǎng)絡(luò)安裝系統(tǒng)(ftp,http,nfs) ===>這個(gè)方法不錯(cuò),只要服務(wù)器能聯(lián)網(wǎng)就可以裝系統(tǒng)了,但還是需要一臺(tái)臺(tái)服務(wù)器去敲鍵盤點(diǎn)鼠標(biāo)。時(shí)刻想偷懶的我們,有沒(méi)有更好的方法!

高逼格的方法:

  1. 1.       Kickstart

  2. 2.       Cobbler

第1章 PXE介紹

1.1什么是PXE

  • PXE,全名Pre-boot Execution Environmrnt,預(yù)啟動(dòng)執(zhí)行環(huán)境;

  • 通過(guò)網(wǎng)絡(luò)接口啟動(dòng)計(jì)算機(jī),不依賴本地存儲(chǔ)設(shè)備(如硬盤)或本地已安裝的操作系統(tǒng);

  • 由intel和Systemsoft公司于1999年9月20日公布的技術(shù);

  • Client/Server的工作模式;

  • PXE客戶端會(huì)調(diào)用網(wǎng)際協(xié)議(IP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)、動(dòng)態(tài)主機(jī)設(shè)定協(xié)議(DHCP)、小型文件傳輸協(xié)議(TFTP)等網(wǎng)絡(luò)協(xié)議;

  • PXE客戶端(client)這個(gè)術(shù)語(yǔ)是指機(jī)器在PXE啟動(dòng)過(guò)程中的角色。一個(gè)PXE客戶端可以是一臺(tái)服務(wù)器、筆記本電腦或者其他裝有PXE啟動(dòng)代碼的機(jī)器(我們電腦的網(wǎng)卡)

  • PXE工作示意圖

1.3PXE工作原理詳解

  1. PXE Client向DHCP發(fā)送請(qǐng)求

PXE Client從自己的PXE網(wǎng)卡啟動(dòng),通過(guò)PXE BootROM(自啟動(dòng)芯片)會(huì)以UDP(簡(jiǎn)單用戶數(shù)據(jù)報(bào)文協(xié)議)發(fā)送一個(gè)廣播請(qǐng)求,向本網(wǎng)絡(luò)中的DHCP服務(wù)器索取IP

  1. DHCP服務(wù)器提供信息

DHCP服務(wù)器收到客戶端的請(qǐng)求,驗(yàn)證是否來(lái)自合法的PXEClient的請(qǐng)求,驗(yàn)證通過(guò)它將給客戶端一個(gè)“提供”響應(yīng),這個(gè)“提供”響應(yīng)中包含了為客戶端分配的IP地址、pxelinux啟動(dòng)程序(TFTP)位置,以及配置文件所在位置。

  1. PXE客戶端請(qǐng)求下載啟動(dòng)文件

客戶端收到服務(wù)器的“回應(yīng)”后,會(huì)回應(yīng)一個(gè)幀,以請(qǐng)求傳送啟動(dòng)所需文件。這些啟動(dòng)文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

  1. Boot Server響應(yīng)客戶端請(qǐng)求并傳送文件

當(dāng)服務(wù)器收到客戶端的請(qǐng)求后,他們之間之后將有更多的信息在客戶端與服務(wù)器之間作應(yīng)答,用以決定啟動(dòng)參數(shù)。BootROM由TFTP通訊協(xié)議從Boot Server下載啟動(dòng)安裝程序鎖必須的文件(pxelinux.0、pxelinux.cfg/default)。default文件下載完成后,會(huì)根據(jù)該文件中定義的引導(dǎo)順序,啟動(dòng)Linux安裝程序的引導(dǎo)內(nèi)核。

  1. 請(qǐng)求下載自動(dòng)應(yīng)答文件

客戶端通過(guò)pxelinux.cfg/default文件成功的引導(dǎo)Linux安裝內(nèi)核后,安裝程序首先必須確定你通過(guò)什么安裝介質(zhì)來(lái)安裝Linux,如果是通過(guò)網(wǎng)絡(luò)安裝(NFS、FTP、HTTP),則會(huì)在這個(gè)時(shí)候初始化網(wǎng)絡(luò),并定位安裝源位置。接著會(huì)讀取default文件中指定的自動(dòng)應(yīng)答文件ks.cfg所在位置,根據(jù)該位置請(qǐng)求下載該文件。

注意:

這里有個(gè)問(wèn)題,在第2步和第5步初始化2次網(wǎng)絡(luò)了,這是由于PXE獲取的是安裝用的內(nèi)核以及安裝程序等,而安裝程序要獲取的是安裝系統(tǒng)所需的二進(jìn)制包以及配置文件。因此PXE模塊和安裝程序是相對(duì)獨(dú)立的,PXE的網(wǎng)絡(luò)配置并不能傳遞給安裝程序,從而進(jìn)行兩次獲取IP地址過(guò)程,但I(xiàn)P地址在DHCP的租期內(nèi)是一樣的。

  1. 客戶端安裝操作系統(tǒng)

將ks.cfg文件下載回來(lái)后,通過(guò)該文件找到OSServer,并按照該文件的配置請(qǐng)求下載安裝過(guò)程需要的軟件包。OS Server和客戶端建立連接后,將開(kāi)始傳輸軟件包,客戶端將開(kāi)始安裝操作系統(tǒng)。安裝完成后,將提示重新引導(dǎo)計(jì)算機(jī)。

第2章 kickstart配置及手動(dòng)網(wǎng)絡(luò)安裝

2.1批量裝機(jī)軟件介紹

Redhat系主要有兩種Kickstart和Cobbler。

Kickstart是一種無(wú)人值守的安裝方式。它的工作原理是在安裝過(guò)程中記錄人工干預(yù)填寫的各種參數(shù),并生成一個(gè)名為ks.cfg的文件。如果在自動(dòng)安裝過(guò)程中出現(xiàn)要填寫參數(shù)的情況,安裝程序首先會(huì)去查找ks.cfg文件,如果找到合適的參數(shù),就采用所找到的參數(shù);如果沒(méi)有找到合適的參數(shù),便會(huì)彈出對(duì)話框讓安裝者手工填寫。所以,如果ks.cfg文件涵蓋了安裝過(guò)程中所有需要填寫的參數(shù),那么安裝者完全可以只告訴安裝程序從何處下載ks.cfg文件,然后就去忙自己的事情。等安裝完畢,安裝程序會(huì)根據(jù)ks.cfg中的設(shè)置重啟/關(guān)閉系統(tǒng),并結(jié)束安裝。

Cobbler集中和簡(jiǎn)化了通過(guò)網(wǎng)絡(luò)安裝操作系統(tǒng)需要使用到的DHCP、TFTP和DNS服務(wù)的配置。Cobbler不僅有一個(gè)命令行界面,還提供了一個(gè)Web界面,大大降低了使用者的入門水平。Cobbler內(nèi)置了一個(gè)輕量級(jí)配置管理系統(tǒng),但它也支持和其它配置管理系統(tǒng)集成,如Puppet,暫時(shí)不支持SaltStack。

** 簡(jiǎn)單的說(shuō),Cobbler是對(duì)kickstart的封裝,簡(jiǎn)化安裝步驟、使用流程,降低使用者的門檻。**

2.2環(huán)境準(zhǔn)備

  • 網(wǎng)卡必須有PXE功能

  • DHCP    動(dòng)態(tài)分配IP地址

  • TFTP     負(fù)責(zé)系統(tǒng)啟動(dòng)文件傳輸

  • HTTP   提供CentOS系統(tǒng)文件下載服務(wù)

[root@m01 ~]# cat /etc/redhat-release

CentOS release 6.8 (Final)                             #CentOS 6.8

[root@m01 ~]# uname -r

2.6.32-642.el6.x86_64

[root@m01 ~]# /etc/init.d/iptables status              #防火墻需要關(guān)閉

iptables: Firewall is not running.

[root@m01 ~]# getenforce                               #selinux需要關(guān)閉

Disabled

[root@m01 ~]# ll -d /tmp/                              #/tmp目錄權(quán)限為1777

drwxrwxrwt. 3 root root 4096 Jun 12 08:42 /tmp/

注意:

虛擬機(jī)網(wǎng)卡采用NAT模式,不要使用橋接模式,因?yàn)樯院笪覀儠?huì)搭建DHCP服務(wù)器,在同一局域網(wǎng)多個(gè)DHCP服務(wù)器會(huì)有沖突

VMware的NAT模式的dhcp服務(wù)也關(guān)閉,避免干擾

kickstart安裝系統(tǒng)原理詳解

2.3安裝DHCP服務(wù)

2.3.1DHCP服務(wù)介紹

DHCP(Dynamic Host Configuration Protocol,動(dòng)態(tài)主機(jī)配置協(xié)議)通常被應(yīng)用在大型的局域網(wǎng)絡(luò)環(huán)境中,主要作用是集中的管理,分配IP地址,使網(wǎng)絡(luò)環(huán)境中的主機(jī)動(dòng)態(tài)的活的IP地址、網(wǎng)關(guān)地址、DNS服務(wù)器地址等信息,并能夠提升地址的使用率。端口為67

kickstart安裝系統(tǒng)原理詳解

2.3.2DHCP服務(wù)安裝配置

通過(guò)yum安裝dhcp軟件

yum -y install dhcp

查看配置文件位置

[root@m01 ~]# rpm -ql dhcp |grep dhcpd.conf

/etc/dhcp/dhcpd.conf

配置文件內(nèi)容修改為

[root@m01 ~]# cat /etc/dhcp/dhcpd.conf

subnet172.16.1.0 netmask 255.255.255.0 {

        range 172.16.1.100 172.16.1.200;

        option subnet-mask 255.255.255.0;

        default-lease-time 21600;

        max-lease-time 43200;

        next-server 172.16.1.61;

        filename "/pxelinux.0";

}

配置文件內(nèi)容說(shuō)明:

subnet 172.16.1.0 netmask 255.255.255.0 #指定DHCP服務(wù)器所在的網(wǎng)段和子網(wǎng)掩碼

range 172.16.1.100172.16.1.200;         #指定DHCP服務(wù)端可分配的起始IP-結(jié)束IP(IP池范圍)  

option subnet-mask255.255.255.0;        #指定netmask子網(wǎng)掩碼

default-lease-time 21600;                #設(shè)置默認(rèn)的IP租用期限

max-lease-time 43200;                    #設(shè)置最大的IP租用期限

next-server 172.16.1.61;                 #告訴客戶端TFTP服務(wù)器的IP(我們部署在一臺(tái)寫本機(jī)IP即可)

filename"/pxelinux.0";                 #告訴客戶端從TFTP根目錄下載pxelinux.0文件

啟動(dòng)dhcpd服務(wù)

/etc/init.d/dhcpd start

查看dhcpd服務(wù)端口

[root@m01 ~]# netstat -luntp |grep dhcp

udp        0     0 0.0.0.0:67                 0.0.0.0:*                              3410/dhcpd 

注意:

本來(lái)軟件裝完后都要加入開(kāi)機(jī)自啟動(dòng),但這個(gè)Kickstart系統(tǒng)就不能開(kāi)機(jī)自啟動(dòng),而且用完后服務(wù)都要關(guān)閉,防止未來(lái)重啟服務(wù)器自動(dòng)重裝系統(tǒng)了。

如果機(jī)器數(shù)量過(guò)多的話,注意dhcp服務(wù)器的地址池,不要因?yàn)楹谋MIP而導(dǎo)致dhcpd服務(wù)器沒(méi)有IP地址release的情況。

一臺(tái)服務(wù)器每次會(huì)自動(dòng)分配兩個(gè)IP地址,所以一般設(shè)定地址池時(shí)IP數(shù)量要大于機(jī)器數(shù)量?jī)杀兜臉幼?,避免地址池耗盡而無(wú)法正常安裝系統(tǒng)

2.4安裝TFTP服務(wù)

2.4.1TFTP簡(jiǎn)介

TFTP(Trivial File Transfer Protocol,簡(jiǎn)單文件傳輸協(xié)議)是TCP/IP協(xié)議簇中的一個(gè)用來(lái)在客戶機(jī)與服務(wù)器之間進(jìn)行簡(jiǎn)單文件傳輸?shù)膮f(xié)議,提供不復(fù)雜、開(kāi)銷不大的文件傳輸服務(wù)。端口號(hào)為69。

2.4.2TFTP安裝配置

通過(guò)yum安裝tftp服務(wù)

yum -y install tftp-server

啟用tftp服務(wù)(修改)

[root@m01 ~]# vim /etc/xinetd.d/tftp

# default: off

# description: The tftp server serves files usingthe trivial file transfer \

#   protocol.  The tftp protocol is often used to bootdiskless \

#   workstations,download configuration files to network-aware printers, \

#   and to startthe installation process for some operating systems.

service tftp

{

    socket_type     = dgram

    protocol        = udp

    wait            = yes

    user            = root

    server          = /usr/sbin/in.tftpd

    server_args     = -s/var/lib/tftpboot      #指定tftp根目錄,保持默認(rèn)不用修改

    disable         = no                         #將原本的yes改為no表示xinetd啟動(dòng)tftp守護(hù)進(jìn)程

    per_source      = 11

    cps         = 100 2

    flags           = IPv4

}

啟動(dòng)xinetd并查看端口

[root@m01 ~]# /etc/init.d/xinetd start

Starting xinetd:                                          [  OK  ]

[root@m01 ~]# netstat -luntp |grep xinet

udp       0      0 0.0.0.0:69                  0.0.0.0:*                               3493/xinetd 

2.5HTTP服務(wù)安裝--apache

通過(guò)yum安裝apache軟件

yum -y install httpd

啟動(dòng)apache

[root@m01 ~]# /etc/init.d/httpd start

Starting httpd: httpd: Could not reliablydetermine the server's fully qualified domain name, using 172.16.1.61 forServerName

                                                          [  OK  ]

取消警告方法

sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf

掛載iso鏡像文件到虛擬機(jī)(生產(chǎn)環(huán)境可以用上傳鏡像文件的方式)

mount: you must specify the filesystem type

#解決方法為將虛擬機(jī)下列狀態(tài)點(diǎn)上連接

kickstart安裝系統(tǒng)原理詳解

創(chuàng)建掛載目錄

mkdir -p /var/www/html/CentOS6.8

掛載iso鏡像到目錄

mount /dev/cdrom /var/www/html/CentOS6.8

#掛載完后會(huì)提示這個(gè)設(shè)備是只讀的

#mount: block device /dev/sr0 is write-protected,mounting read-only

查看掛載信息

[root@m01 ~]# df -h

Filesystem     Size  Used Avail Use% Mounted on

/dev/sda3      6.9G  1.5G  5.1G 23% /

tmpfs          238M     0  238M  0% /dev/shm

/dev/sda1      190M   34M  147M 19% /boot

/dev/sr0       3.7G  3.7G     0 100% /var/www/html/CentOS6.8

測(cè)試是否能夠正常瀏覽器訪問(wèn)

kickstart安裝系統(tǒng)原理詳解

或者采用curl命令測(cè)試

[root@m01 ~]# curl -I 172.16.1.61/CentOS6.8/

HTTP/1.1 200 OK

Date: Mon, 12 Jun 2017 02:24:14 GMT

Server: Apache/2.2.15 (CentOS)

Connection: close

Content-Type: text/html;charset=UTF-8

2.6配置PXE的啟動(dòng)程序

2.6.1PXE引導(dǎo)配置(bootstrap)

syslinux是一個(gè)功能強(qiáng)大的引導(dǎo)加載程序,而且兼容各種介質(zhì)。SYSLINUX是一個(gè)小型的Linux操作系統(tǒng),它的目的是簡(jiǎn)化首次安裝Linux的時(shí)間,并建立修護(hù)或其它特殊用途的啟動(dòng)盤。如果沒(méi)有找到pxelinux.0這個(gè)文件,可以安裝一下。

配置syslinux

通過(guò)yum安裝syslinux

yum -y install syslinux

復(fù)制啟動(dòng)文件到tftp根目錄下

cp /usr/share/syslinux/pxelinux.0/var/lib/tftpboot/

#查看目錄下是否有該文件

[root@m01 ~]# ls /var/lib/tftpboot/

pxelinux.0

復(fù)制相關(guān)啟動(dòng)文件到tftp根目錄下

cp -a /var/www/html/CentOS6.8/isolinux/*/var/lib/tftpboot/

#查看Linux相關(guān)啟動(dòng)文件是否正常復(fù)制過(guò)去

[root@m01 ~]# ls /var/lib/tftpboot/

boot.cat grub.conf   isolinux.bin  memtest    splash.jpg  vesamenu.c32

boot.msg initrd.img  isolinux.cfg  pxelinux.0 TRANS.TBL   vmlinuz

創(chuàng)建一個(gè)pxelinux.cfg目錄存放配置文件

mkdir -p /var/lib/tftpboot/pxelinux.cfg

#注意這個(gè)是存放配置文件的目錄,并不是一個(gè)文件,里面可以存放很多配置文件

cd /var/lib/tftpboot/pxelinux.cfg

cp /var/www/html/CentOS6.8/isolinux/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default

#復(fù)制鏡像中的isolinux.cfg配置文件到該目錄下并改名為default

[root@m01 pxelinux.cfg]# ll

total 4

-r--r--r-- 1 root root 923 Jun 12 10:31 default

2.6.2PXE配置文件default詳解

下圖是我們安裝CentOS系統(tǒng)的啟動(dòng)菜單目錄

[root@m01 ~]# cat/var/lib/tftpboot/pxelinux.cfg/default

default vesamenu.c32    #默認(rèn)加載一個(gè)菜單

#prompt 1               #開(kāi)啟會(huì)顯示命令行'boot:'提示符。prompt值為0時(shí)則不顯示,將會(huì)直接啟動(dòng)default參數(shù)中指定的內(nèi)容。

timeout 600             #timeout時(shí)間是引導(dǎo)時(shí)等待用戶手動(dòng)選擇的時(shí)間,設(shè)為1可直接引導(dǎo),單位為1/10秒

 

display boot.msg       

#啟動(dòng)菜單背景圖片、標(biāo)題、顏色

menu background splash.jpg

menu title Welcome to CentOS 6.8!

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指定在boot:提示符下輸入的關(guān)鍵字,比如boot:linux[ENTER],這個(gè)會(huì)啟動(dòng)label linux下標(biāo)記的kernel和initrd.img文件。

label linux                 #一個(gè)標(biāo)簽就是前面圖片的一行選項(xiàng)

  menu label^Install or upgrade an existing system

  menudefault

  kernelvmlinuz            #指定要啟動(dòng)的內(nèi)核。同樣要注意路徑,默認(rèn)是/tftpboot目錄。

  appendinitrd=initrd.img  #指定追加給內(nèi)核的參數(shù),initrd.img是一個(gè)最小的Linux系統(tǒng)

label vesa

  menu labelInstall system with ^basic video driver

  kernelvmlinuz

  appendinitrd=initrd.img nomodeset

label rescue

  menu label^Rescue installed system

  kernelvmlinuz

  appendinitrd=initrd.img rescue

label local

  menu labelBoot from ^local drive

  localboot0xffff

label memtest86

  menu label^Memory test

  kernelmemtest

  append -

2.7手動(dòng)網(wǎng)絡(luò)安裝CentOS6.8

2.7.1新建一臺(tái)虛擬機(jī)

創(chuàng)建一臺(tái)新的虛擬機(jī)==>CentOS64位==>指定100G磁盤==>LAN區(qū)段與kickstart服務(wù)器一樣==>拍攝快照方便反復(fù)使用==>打開(kāi)電源

擴(kuò)展:DELL R710服務(wù)器開(kāi)機(jī)后,根據(jù)提示按F12,進(jìn)行PXE啟動(dòng)。物理服務(wù)器有4個(gè)網(wǎng)卡,所以還會(huì)讓選擇從哪個(gè)網(wǎng)卡啟動(dòng)。

       打開(kāi)電源后,分配IP地址和下載啟動(dòng)文件

2.7.2選擇安裝系統(tǒng)

進(jìn)入到啟動(dòng)菜單,選擇第一個(gè)全新安裝系統(tǒng)

2.7.3選擇語(yǔ)言和鍵盤

語(yǔ)言選擇英語(yǔ)==>鍵盤選擇us

2.7.4選擇安裝方式與網(wǎng)卡禁用IPv6

這里我們選擇網(wǎng)絡(luò)安裝==>URL安裝==>eth2安裝

注:使用NFS的寫法nfs:10.0.0.1:/data/sys/kickstart/ks.cfg

選擇完eth2后禁用IPv6

2.7.5輸入HTTP的地址下載鏡像

輸入前文瀏覽器訪問(wèn)到頁(yè)面的URL,只是將外網(wǎng)IP改為內(nèi)網(wǎng)IP

之后的安裝步驟與光盤安裝系統(tǒng)一模一樣(詳情可以查看企業(yè)級(jí)標(biāo)準(zhǔn)安裝CentOS6.8系統(tǒng)

第3章 創(chuàng)建ks.cfg自動(dòng)應(yīng)答文件

3.1ks.cfg自動(dòng)應(yīng)答文件說(shuō)明

我們以之前安裝配置好kickstart并且進(jìn)行手動(dòng)網(wǎng)絡(luò)安裝的基礎(chǔ)之上,進(jìn)行下列操作

通常,我們?cè)诎惭b操作系統(tǒng)的過(guò)程中,需要大量的服務(wù)器交互操作,為了減少這個(gè)交互過(guò)程,kickstart就誕生了。使用這種kickstart,只需實(shí)現(xiàn)定義好一個(gè)kickstart自動(dòng)應(yīng)答配置文件ks.cfg(通常存放在安裝服務(wù)器上),并讓安裝程序知道該配置文件的位置,在安裝過(guò)程中安裝程序就可以自己從該文件中讀取安裝配置,這樣就避免了在安裝過(guò)程中多次的人機(jī)交互,從而實(shí)現(xiàn)無(wú)人值守的自動(dòng)化安裝。

生成kickstart自動(dòng)應(yīng)答文件的三種方法:

  • 方法1:每安裝好一臺(tái)Centos機(jī)器,Centos安裝程序都會(huì)創(chuàng)建一個(gè)kickstart配置文件,記錄你的真實(shí)安裝配置。如果你希望實(shí)現(xiàn)和某系統(tǒng)類似的安裝,可以基于該系統(tǒng)的kickstart配置文件來(lái)生成你自己的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)就沒(méi)什么可說(shuō)。但沒(méi)有現(xiàn)成的,也沒(méi)有必要去用桌面版,命令行也很簡(jiǎn)單。

  • 方法3:閱讀kickstart配置文件的手冊(cè)。用任何一個(gè)文本編輯器都可以創(chuàng)建你自己的kickstart配置文件。

  • 查看anaconda-ks.cfg文件

這個(gè)文件是創(chuàng)建完系統(tǒng)之后,自動(dòng)生成的一個(gè)記錄文件,默認(rèn)在/root目錄下

[root@m01 ~]# cat anaconda-ks.cfg

# Kickstart file automatically generated byanaconda.

 

#version=DEVEL

install

cdrom

lang en_US.UTF-8

keyboard us

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

rootpw --iscrypted $6$Nj4ZBqCyoqEjruZ3$WDEW1bpKzDvffzYUv70FSZi60W6AAyzHXCQErNgw2tQE9OCVAB547mqm160aVb5pYG6v5mrUnbsbqNepJMDpX/

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 yourequested

# Note that any partitions you deleted are notexpressed

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

# not guaranteed to work

#clearpart --none

 

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

#part swap --asprimary --size=768

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

 

 

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

 

%packages

@base

@compat-libraries

@core

@debugging

@development

@server-policy

@workstation-policy

python-dmidecode

sgpio

device-mapper-persistent-data

systemtap-client

%end

3.3ks.cfg自動(dòng)應(yīng)答文件詳解

官網(wǎng)文檔 

CentOS5 : http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-options.html 
CentOS6 : https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html 
官網(wǎng)自帶中文版,選一下語(yǔ)言即可 


ks.cfg文件組成大致分為3段

  • 命令段 

鍵盤類型,語(yǔ)言,安裝方式等系統(tǒng)的配置,有必選項(xiàng)和可選項(xiàng),如果缺少某項(xiàng)必選項(xiàng),安裝時(shí)會(huì)中斷并提示用戶選擇此項(xiàng)的選項(xiàng)

  • 軟件包段

%packages

@groupname:指定安裝的包組

package_name:指定安裝的包

-package_name:指定不安裝的包

在安裝過(guò)程中默認(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=" "

通過(guò)FTP或HTTP從遠(yuǎn)程服務(wù)器上的安裝樹(shù)中安裝

url --url ftp://:@/

url  --url="http://10.0.0.7/CentOS-6.8/"

nfs

從指定的NFS服務(wù)器安裝

nfs --server=nfsserver.example.com  --dir=/tmp/install-tree

text

使用文本模式安裝

lang

設(shè)置在安裝過(guò)程使用的語(yǔ)言以及系統(tǒng)的缺省語(yǔ)言: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

為通過(guò)網(wǎng)絡(luò)的kickstart安裝以及所安裝的系統(tǒng)配置聯(lián)網(wǎng)信息。
 network --bootproto=dhcp --device=eth0 --onboot=yes  --noipv6 --hostname=CentOS6
 --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.2 --nameserver=10.0.0.2
 請(qǐng)注意所有配置信息都必須在一行上指定,不能使用反斜線來(lái)?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密碼,后面接上使用grub-crypt生成的密碼即可

clearpart

清空分區(qū)clearpart --all --initlabel

--all 從系統(tǒng)中清除所有分區(qū),--initlable 初始化磁盤標(biāo)簽

part

磁盤分區(qū)

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

part swap --asprimary  --size=768

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

3.4編寫ks.cfg自動(dòng)應(yīng)答文件

首先使用grub-crypt生成一個(gè)密碼備用

[root@m01 ~]# grub-crypt

Password: 123456

Retype password: 123456

$6$VTNRZpXZjvvzA3WO$t1upYjcs7mDa31O5OnnoMxIuJ0W6icoaFEG9y8xsQUtDUuzLi1.E67Uht7tf8BLBY4PnHT2/zMo5S2.tymqeS/

創(chuàng)建存放ks文件的目錄(在站點(diǎn)目錄下)

[root@m01 ~]# mkdir -p /var/www/html/ks_config

[root@m01 ~]# vim/var/www/html/ks_config/CentOS-6.8-ks.cfg

# Kickstart Configurator for CentOS 6.8 by hujing

install

url--url="http://172.16.1.61/CentOS6.8/"

text

lang en_US.UTF-8

keyboard us

zerombr

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

network --bootproto=dhcp --device=eth2--onboot=yes --noipv6 --hostname=CentOS6

timezone --utc Asia/Shanghai

authconfig --enableshadow --passalgo=sha512

clearpart --all --initlabel

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

part swap --size=1024

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

firstboot --disable

selinux --disabled

firewall --disabled

logging --level=info

reboot

 

%packages

@base

@compat-libraries

@debugging

@development

tree

nmap

sysstat

lrzsz

dos2unix

telnet

 

%post

wget -O /tmp/optimization.shhttp://172.16.1.61/ks_config/optimization.sh &>/dev/null

/bin/sh /tmp/optimization.sh

%end

3.5開(kāi)機(jī)優(yōu)化腳本

也就是上方ks.cfg里面的%post中的optimization.sh

[root@m01 ~]# cat/var/www/html/ks_config/optimization.sh

#!/bin/bash

. /etc/init.d/functions

 

Ip=172.16.1.61

Port=80

ConfigDir=ks_config

 

# Judge Http server is ok?

PortNum=`nmap $Ip -p $Port 2>/dev/null|grep open|wc -l`

[ $PortNum -lt 1 ] && {

echo "Http server is bad!"

exit 1

}

 

# Defined result function

function Msg(){

        if [$? -eq 0 ];then

         action "$1" /bin/true

        else

         action "$1" /bin/false

        fi

}

 

# Defined IP function

function ConfigIP(){

    Suffix=`ifconfigeth2|awk -F "[ .]+" 'NR==2 {print $6}'`

    cat>/etc/sysconfig/network-scripts/ifcfg-eth0 <<-END

    DEVICE=eth0

    TYPE=Ethernet

    ONBOOT=yes

    NM_CONTROLLED=yes

    BOOTPROTO=none

    IPADDR=10.0.0.$Suffix

    PREFIX=24

    GATEWAY=10.0.0.254

    DNS1=10.0.0.254

    DEFROUTE=yes

    IPV4_FAILURE_FATAL=yes

    IPV6INIT=no

    NAME="Systemeth0"

    END

    Msg"config eth0"

        cat>/etc/sysconfig/network-scripts/ifcfg-eth2 <<-END

    DEVICE=eth2

    TYPE=Ethernet

    ONBOOT=yes

    NM_CONTROLLED=yes

    BOOTPROTO=none

    IPADDR=172.16.1.$Suffix

    PREFIX=24

    DEFROUTE=yes

    IPV4_FAILURE_FATAL=yes

    IPV6INIT=no

    NAME="Systemeth2"

    END

        Msg"config eth2"

}

 

# Defined Yum source Functions

function yum(){

    YumDir=/etc/yum.repos.d

    [ -f"$YumDir/CentOS-Base.repo" ] && cp $YumDir/CentOS-Base.repo{,.ori}

    wget -O$YumDir/CentOS-Base.repo http://$Ip:$Port/$ConfigDir/CentOS-Base.repo&>/dev/null &&\

    wget -O$YumDir/epel.repo http://$Ip:$Port/$ConfigDir/epel.repo &>/dev/null&&\

    Msg"YUM source"

}

 

 

# Defined add Ordinary users Functions

function AddUser(){

    useradd hujing&>/dev/null &&\

    echo"123456"|passwd --stdin hujing &>/dev/null &&\

    sed  -i '98a hujing    ALL=(ALL)       NOPASSWD:ALL'  /etc/sudoers &&\

    visudo -c&>/dev/null

    Msg"AddUser hujing"

}

 

# Defined Hide the system version number Functions

function HideVersion(){

    [ -f"/etc/issue" ] && >/etc/issue

        Msg"Hide issue"

    [ -f"/etc/issue.net" ] && > /etc/issue.net

        Msg"Hide issue.net"

}

 

 

# Defined SSHD config Functions

function sshd(){

    SshdDir=/etc/ssh

    [ -f"$SshdDir/sshd_config" ] && /bin/mv$SshdDir/sshd_config{,.ori}

    wget -O$SshdDir/sshd_config http://$Ip:$Port/$ConfigDir/sshd_config &>/dev/null&&\

    chmod 600$SshdDir/sshd_config

        Msg"sshd config"

}

 

# Defined OPEN FILES Functions

function openfiles(){

    [ -f"/etc/security/limits.conf" ] && {

    echo'*  - nofile  65535' >>/etc/security/limits.conf

        Msg"open files"

    }

}

 

# Defined Kernel parameters Functions

function kernel(){

       KernelDir=/etc

        [ -f"$KernelDir/sysctl.conf" ] && /bin/mv$KernelDir/sysctl.conf{,.ori}

    wget -O$KernelDir/sysctl.conf http://$Ip:$Port/$ConfigDir/sysctl.conf&>/dev/null

        Msg"Kernel config"

}

 

# Defined hosts file Functions

function hosts(){

        HostsDir=/etc

        [ -f"$HostsDir/hosts" ] && /bin/mv $HostsDir/hosts{,.ori}

        wget-O $HostsDir/hosts http://$Ip:$Port/$ConfigDir/hosts &>/dev/null

        Msg"Hosts config"

}

 

# Defined System Startup Services Functions

function boot(){

    for hujingin `chkconfig --list|grep "3:on"|awk '{print $1}'|grep -vE"crond|network|rsyslog|sshd|sysstat"`

      do

       chkconfig $hujing off

    done

    Msg"BOOT config"

}

 

# Defined Time Synchronization Functions

function Time(){

    echo"#time sync by zhangyao at $(date +%F)" >>/var/spool/cron/root

    echo '*/5* * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null'>>/var/spool/cron/root

        Msg"Time Synchronization"

}

 

# Defined main Functions

function main(){

    ConfigIP

    yum

    AddUser

    HideVersion

    sshd

    openfiles

    kernel

    hosts

    boot

    Time       

}

 

main

3.6整合編輯default配置文件

快速執(zhí)行命令

cat>/var/lib/tftpboot/pxelinux.cfg/default<default ks
prompt 0
label ks
  kernel vmlinuz
  append initrd=initrd.img ks=http://172.16.1.61/ks_config/CentOS-6.8-ks.cfg ksdevice=eth2
EOF

最小化原則用最精簡(jiǎn)的配置即可

[root@m01 ~]# cat/var/lib/tftpboot/pxelinux.cfg/default

default ks

prompt 0

label ks

  kernelvmlinuz

  appendinitrd=initrd.img ks=http://172.16.1.61/ks_config/CentOS-6.8-ks.cfgksdevice=eth2

第4章 無(wú)人值守自動(dòng)安裝

4.1修改ks.cfg和default文件和上傳腳本

我們可以采用直接打包上傳的方式

tar xfP ks_cofig2017-06-13.tar.gz

[root@m01 ~]# ll /var/www/html/ks_config/

total 28

-rw-r--r-- 1 root root  966 Jun 13 09:30 CentOS-6.8-ks.cfg

-rw-r--r-- 1 root root 2572 May 27  2016 CentOS-Base.repo

-rw-r--r-- 1 root root 1083 May 27  2016 epel.repo

-rw-r--r-- 1 root root  349 Jun 13 09:26 hosts

-rw-r--r-- 1 root root 3492 Jun 13 16:37optimization.sh

-rw-r--r-- 1 root root 3966 May 27  2016 sshd_config

-rw-r--r-- 1 root root 1602 May 27  2016 sysctl.conf

4.2安裝步驟

打開(kāi)系統(tǒng)電源,出去喝杯咖啡。過(guò)會(huì)回來(lái),系統(tǒng)就以經(jīng)裝好了??!
下面是安裝過(guò)程中截的幾個(gè)圖

如果安裝過(guò)程出錯(cuò),可以通過(guò)Alt+F2-F5切到其他控制臺(tái)查看報(bào)錯(cuò)信息

4.3安裝完成后驗(yàn)證

[root@CentOS6 ~]# df -h

Filesystem     Size  Used Avail Use% Mounted on

/dev/sda2       98G  1.5G   91G  2% /

tmpfs          491M     0  491M  0% /dev/shm

/dev/sda1      190M   33M  147M 19% /boot

[root@CentOS6 ~]# hostname -I

10.0.0.103 172.16.1.103

[root@CentOS6 ~]# chkconfig --list |grep 3:on

crond          0:off   1:off   2:on    3:on    4:on    5:on    6:off

network        0:off   1:off   2:on    3:on    4:on    5:on    6:off

rsyslog        0:off   1:off   2:on    3:on    4:on    5:on    6:off

sshd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

sysstat        0:off   1:on    2:on    3:on    4:on    5:on    6:off

[root@CentOS6 ~]# /etc/init.d/iptables status

iptables: Firewall is not running.

[root@CentOS6 ~]# getenforce

Disabled

 

第5章 知識(shí)擴(kuò)展

5.1PXE配置文件default

由于多個(gè)客戶端可以從一個(gè)PXE服務(wù)器引導(dǎo),PXE引導(dǎo)映像使用了一個(gè)復(fù)雜的配置文件搜索方式來(lái)查找針對(duì)客戶機(jī)的配置文件。如果客戶機(jī)的網(wǎng)卡的MAC地址為8F:3H:AA:6B:CC:5D,對(duì)應(yīng)的IP地址為10.0.0.195,那么客戶機(jī)首先嘗試以MAC地址為文件名匹配的配置文件,如果不存在就以IP地址來(lái)查找。根據(jù)上述環(huán)境針對(duì)這臺(tái)主機(jī)要查找的以一個(gè)配置文件就是 /tftpboot/pxelinux.cfg/01-8F:3H:AA:6B:CC:5D。如果該文件不存在,就會(huì)根據(jù)IP地址來(lái)查找配置文件了,這個(gè)算法更復(fù)雜些,PXE映像查找會(huì)根據(jù)IP地址16進(jìn)制命名的客戶機(jī)配置文件。例如:10.0.0.195對(duì)應(yīng)的16進(jìn)制的形式為C0A801C3。(可以通過(guò)syslinux軟件包提供的gethostip命令將10進(jìn)制的IP轉(zhuǎn)換為16進(jìn)制)

如果C0A801C3文件不存在,就嘗試查找C0A801C文件,如果C0A801C也不存在,那么就嘗試C0A801文件,依次類推,直到查找C文件,如果C也不存在的話,那么最后嘗試default文件。

總體來(lái)說(shuō),pxelinux搜索的文件的順序是:

1.  /tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd

2.  /tftpboot/pxelinux.cfg/C0A801C3

3.  /tftpboot/pxelinux.cfg/C0A801C

4.  /tftpboot/pxelinux.cfg/C0A801

5.  /tftpboot/pxelinux.cfg/C0A80

6.  /tftpboot/pxelinux.cfg/C0A8

7.  /tftpboot/pxelinux.cfg/C0A

8.  /tftpboot/pxelinux.cfg/C0

9.  /tftpboot/pxelinux.cfg/C

10. /tftpboot/pxelinux.cfg/default

應(yīng)用:如果已經(jīng)從廠商獲取了服務(wù)器MAC地址,就可以差異化定制安裝服務(wù)器了。

5.2報(bào)錯(cuò)

這個(gè)情況是selinux沒(méi)有關(guān)閉

 

 

 

 

 

 

 

 


 


標(biāo)題名稱:kickstart安裝系統(tǒng)原理詳解
標(biāo)題鏈接:http://weahome.cn/article/jcphoj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部