PXE+kickstart實現自動安裝centOS6.5

關於PXE
html

pxe工做於Client/Server的網絡模式,客戶端在本地沒有操做系統的狀況下,可以經過網絡從服務器端下載到鏡像文件和kickstart文件,並基於kickstart文件自動完成系統安裝。在爲多臺服務器部署環境時,經過這種方式批量安裝操做系統,大大減小了工做量。node


PXE依賴的服務:linux

1)dhcp:爲客戶端動態分配IP地址、子網掩碼、網關、DNS地址等網絡屬性;vim

2)tftp:爲客戶端提供安裝須要的引導程序,內核,ramdisk等文件;centos

3)http:提供kickstart文件及安裝源。bash

PXE的工做原理:在客戶機啓動過程當中,若本地沒有引導程序,最後會經過網卡來做爲引導設備,這時會激活網卡上的pxe功能,pxe_client程序被調入內存中執行,廣播請求DHCP地址,局域網內的DHCP服務器會予以響應,爲其分配地址,子網掩碼,網關等各類網絡屬性配置。客戶端再根據DHCP服務器的指示從指定的tftp服務器上下載pxelinux.0文件(pxe啓動文檔,相似於bootloader),下載完成後加載執行,而後在向服務器請求pxe引導時使用的內核,ramdisk,anaconda程序等,開始安裝過程。服務器

在網卡上通常都集成了dhcp和tftp的客戶端程序。網絡


部署過程app

部署dhcp服務器
dom

[root@node1 ~]# yum install dhcp
[root@node1 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
[root@node1 ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "baby.org";               #域名搜索列表
option domain-name-servers 114.114.114.114;  #域名服務器地址
default-lease-time 600;                      #默認租約期限(單位秒)
max-lease-time 7200;                         #最大租約期限(單位秒)
log-facility local7;                         #使用rsyslog存儲日誌

subnet 192.168.3.0 netmask 255.255.255.0 {
  range 192.168.3.10 192.168.3.254;          #地址池
  option routers 192.168.3.1;                #網關
  option broadcast-address 192.168.3.31;     #廣播地址
  default-lease-time 600;                   
  max-lease-time 7200;
  next-server 192.168.3.2;                   #下一個訪問的服務器地址(tftp)
  filename "pxelinux.0";                     #在next-server上須要下載的文件
}

檢查配置信息,而後啓動服務:

[root@node1 ~]# service dhcpd configtest
Syntax: OK
[root@node1 ~]# service dhcpd start
Starting dhcpd:                                            [  OK  ]

wKiom1XxCcShuz7jAABNhJFi_js888.jpg

服務已正常運行。


部署tftp服務器

tftp服務有xinetd服務管理,安裝完成後在xinetd中開啓該服務,從新啓動xinetd服務。

[root@node1 ~]# yum install tftp-server
[root@node1 ~]# chkconfig tftp on
[root@node1 ~]# vim /etc/xinetd.d/tftp
service tftp
{
        disable = no                                       #服務已變爲可用狀態
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

server_args指定了該服務啓動的參數,-s指定其工做目錄爲/var/lib/tftpboot。將客戶端須要的文件放置在該目錄下便可。

啓動服務:

[root@node1 ~]# service xinetd restart
Stopping xinetd:                                           [FAILED]
Starting xinetd:                                           [  OK  ]

wKiom1XxDSSwUYqoAABJ_LPEknk543.jpg

服務已正常運行。


部署httpd服務

[root@node1 ~]# yum install httpd

/mnt/flash爲光盤的掛載目錄,在/var/www/html下建立目錄,並將其綁定至/mnt/flash。

[root@node1 ~]# mkdir -pv /var/www/html/centos/6/x86_64
mkdir: created directory `/var/www/html/centos'
mkdir: created directory `/var/www/html/centos/6'
mkdir: created directory `/var/www/html/centos/6/x86_64'
[root@node1 ~]# mount --bind /mnt/flash/ /var/www/html/centos/6/x86_64/

綁定完成後,便可經過/var/www/html/centos/6/x86_64/直接訪問/mnt/flash/(安裝源路徑)。而後啓動服務。

[root@node1 ~]# service httpd start


將須要的文件添加至tftp服務目錄:

掛載光盤鏡像,將須要的文件複製到/var/lib/tftpboot目錄下,光盤鏡像的掛載目錄爲/mnt/flash。

[root@node1 ~]# cp /mnt/flash/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
[root@node1 ~]# cp /mnt/flash/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
[root@node1 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@node1 ~]# cp /mnt/flash/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

提供PXE的工做環境(即提供pxelinux.0文件):

[root@node1 ~]# yum install syslinux
[root@node1 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

pxelinux.0在運行過程當中會讀取vesamenu.c32來顯示圖形界面,將splash.jpg做爲背景圖片,vesamenu.c32會讀取isolinux.cfg文件顯示圖形菜單,isolinux.cfg文件必須在pxelinux.cfg目錄下,且命名爲default。圖形菜單以下:

wKiom1XxEHuB5of2AAJMlNyLUes105.jpg

圖形菜單默認爲第一項,其對應的配置文件爲pxelinux.cfg目錄下的default文件,修改該文件,爲第一項添加啓動參數ks,使其在加載內核時可以獲取kickstart文件。

[root@node1 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 
..........
..........
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.3.2/ks_file/ks.cfg text


提供kickstart文件

[root@node1 ~]# cp /root/anaconda-ks.cfg /var/www/html/ks_file/ks.cfg
[root@node1 ~]# chmod +r /var/www/html/ks_file/ks.cfg

可使用system-config-kickstart來製做一個kickstart文件。步驟很簡單,安裝system-config-kickstart,鍵入system-config-kickstart命令啓動一個圖形界面,配置安裝的各項參數,而後生成kickstart文件(跟安裝操做系統過程差很少)。

在/root目錄下有一個anaconda-ks.cfg文件,該文件即爲kickstart文件,裏面記錄了本地操做系統的各項安裝參數等信息。能夠對其進行修改而後拿來使用。如下爲修改部分:

[root@node1 ~]# vim /var/www/html/ks_file/ks.cfg
text                      #以文本界面安裝
reboot                    #安裝完成後自動重啓
selinux --disabled        #禁用selinux
.....
 #如下是磁盤分區內容
clearpart --all --drives=sda
 
part /boot --fstype=ext4 --size=500
part pv.008002 --grow --size=1
volgroup vg_node1 --pesize=4096 pv.008002
logvol /home --fstype=ext4 --name=lv_home --vgname=vg_node1 --grow --size=100
logvol / --fstype=ext4 --name=lv_root --vgname=vg_node1 --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=vg_node1 --grow --size=1984 --maxsize=1984
 
url --url="http://192.168.3.2/centos/6/x86_64"
repo --name="CentOS"  --baseurl=http://192.168.3.2/centos/6/x86_64  --cost=100

上面的repo參數指定了安裝源路徑,將其指向httpd服務器上的光盤鏡像路徑。


測試是否可用

在該網段內部署一臺沒有操做系統的虛擬機,而後啓動。也能夠設置某臺虛擬機的第一引導設備爲網卡。

wKiom1XxGQ3TmLLkAADtABGEc94716.jpg

引導界面

wKioL1XxG4Tw3cZqAAIlmexDhQc194.jpg

找到安裝源

wKioL1XxHHzihlJXAAB2C8OhOlg917.jpg

安裝軟件包過程

wKiom1XxGnaT1ldPAAEGOZUVttY692.jpg

完成測試.................^_^

相關文章
相關標籤/搜索