linux之PXE+kickstart實現無人值守安裝

                                 PXE方式安裝linux系統


1、PXE簡介:

    PXE(preboot execute environment,預啓動執行環境)是由Intel公司開發的最新技術,工作於Client/Server的網絡模式,支持工作站通過網絡從遠端服務器下載映像,並由此支持通過網絡啓動操作系統,在啓動過程中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)協議下載一個啓動軟件包到本機內存中執行,由這個啓動軟件包完成終端基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。

說白了,就是當公司批量採購一些服務器時,要批量安裝相同的操作系統(如linux)時,一種更加便捷的安裝方式。無需去每一臺服務器上插拔光驅或者系統光盤,而是將安裝光盤中的文件放到一臺類似文件服務器中,來實現系統的安裝。但是,單單採用PXE方式安裝,必須手動執行安裝配置過程,它並不能實現全自動化安裝;


kickstart簡介:

     由紅帽推出,給用戶提供了一種自動化安裝紅帽企業Linux的方法。   

許多系統管理員寧願使用自動化的安裝方法來安裝紅帽企業 Linux.爲了滿足這種需要,紅帽創建了kickstart安裝方法.使用kickstart,系統管理員可以創建一個文件,這個文件包含了在正常安裝過程中所遇到的問題的答案
    Kickstart文件可以存放於單一的服務器上,在安裝過程中被獨立的機器所讀取.這個安裝方法可以支持使用單一kickstart文件在多臺機器上安裝紅帽企業Linux,這對於網絡和系統管理員來說是個理想的選擇。

    說白了,將正常安裝過程中的配置選擇過程結果放入腳本中,在執行安裝時,就無需再手動選擇配置參數了,而是直接讀取這個kickstart腳本文件,去實現自動化安裝。需要結合PXE的方法來實現無人值守安裝;      

    kickstart文件的獲取:

方式1:複製模板/root/anaconda-ks.cfg,而後使用vim編輯修改一下;

方式2:使用system-config-kickstart(需要安裝)來生成,建議也使用/root/anaconda-ks.cfg作爲模板來進行(簡單些);

該命令通過xshell使用後,會在windows上看到linux的操作窗口界面,進行點擊配置即可(必須xshell);

或者,在linux的圖形界面下,輸入上面命令,也能打開;

也可以讀進來一個配好的配置文件進行修改;

ksvalidator:檢測手動創建的ks文件是否有語法錯誤;

格式:ksvalidator + ks.xx.cfg文件;(沒有報錯就沒有問題了)

centos5和centos6的ks文件是不一樣的,使用檢測也會各自報錯。語法不完全兼容

方式3

Red Hat提供了一個樣例文件。在Red Hat Linux 文檔光盤中 RH-DOCS 目錄裏的 sample.ks 文件。你可以基於該樣例來創建你自己的配置kickstart文件



wKioL1Uenn-DyhMKAAFyZAQ02SE322.jpg

2、配置環境:

    準備兩臺虛擬機,一臺安裝http、dhcp、tftp服務。另一臺用來測試pxe安裝;

    操作系統:centos 6.5 x86_64;

    虛擬機網卡一定要能支持基於網絡啓動;

    關閉selinux、關閉防火牆;


3、無人值守自動化執行安裝原理:

wKiom1UenhLhX_PqAAJ3vE5sxHU341.jpg


4、服務部署:

    1、安裝dhcp服務:

        作用:提供給客戶端ip地址,及告訴客戶端如何獲得系統安裝樹的路徑;

    2、安裝tftp:

        作用:存放系統引導文件。提供kickstart自動化腳本;

    3、安裝http服務:

        作用:提供安裝樹(類似系統光盤);

        


5、安裝配置步驟:

    環境準備:

     1、 首先,我們在PXE服務端上添加兩個網卡,一個是管理,一個是給DHCP服務使用;

        wKiom1UeoFPivRA_AABZhF2FAaI174.jpg


    2、閉linux防火牆和N額頭workManager服務:

 wKioL1UeooOjRA3mAAD0dOPI4vs889.jpg    

    3、關閉selinux

    [root@localhost ~]# vim /etc/selinux/config

                        SELINUX=disabled


    4、給eth1提供配置文件,並啓用eth0和eth1兩個網卡:

    [root@localhost ~]# ifconfig eth1
          eth1      Link encap:Ethernet  HWaddr 00:0C:29:B2:B7:30      (先看看識別出的mac是多少)
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:7308 (7.1 KiB)

    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

                    DEVICE=eth1
                    HWADDR=00:0C:29:B2:B7:30
                    TYPE=Ethernet
                    UUID=5f4cb50c-7024-46b3-afc1-d49a1a1d992c
                    ONBOOT=yes
                    NM_CONTROLLED=yes
                    BOOTPROTO=static
                    IPADDR=1.1.1.1
                    NETMASK=255.255.255.0

                                        :這裏的配置是我從eth0那邊複製過來的,改成了eth1和mac地址;


    5、安裝服務:

    [root@localhost ~]# yum -y install dhcp*

    [root@localhost ~]# yum -y install tftp*

    [root@localhost ~]# yum -y install httpd

    [root@localhost ~]# yum -y install xinetd


    6、服務配置:

        配置dhcp:

        [root@localhost ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
        cp:是否覆蓋"/etc/dhcp/dhcpd.conf"? y       
        [root@localhost ~]# vim /etc/dhcp/dhcpd.conf 

                      subnet 1.1.1.0 netmask 255.255.255.0 {
                        range 1.1.1.2 1.1.1.10;
                        option routers 1.1.1.1;
                        next-server 1.1.1.1;         :指定tftp服務器的ip地址;
                        filename "pxelinux.0";       :指定系統安裝文件名;
                        }

        [root@localhost ~]# service dhcpd start
            正在啓動 dhcpd:                                           [確定]


        配置tftp:

        [root@localhost ~]# mkdir /test
        [root@localhost ~]# mount /dev/cdrom /test
        mount: block device /dev/sr0 is write-protected, mounting read-only
        [root@localhost ~]# cp /test/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
        [root@localhost ~]# cp /test/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
        [root@localhost ~]# yum -y install syslinux

        [root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
        [root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
        [root@localhost ~]# cp /test/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
        [root@localhost ~]#        :將系統光盤中的文件複製到tftp中,作爲安裝時的引導文件;


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

                            disable                 = no

        [root@localhost ~]# chkconfig tftp on

        [root@localhost ~]# service xinetd restart

        [root@localhost ~]# chkconfig --list

                        tftp:              啓用            :啓用tftp,有超級守護進程負責監督;


        配置http:

        [root@localhost ~]# mkdir /var/www/html/centos6
        [root@localhost ~]# mount --bind /test/ /var/www/html/centos6/
        [root@localhost ~]# service httpd restart

              :在http服務的根文件路徑下創建安裝樹(也就是複製光盤文件到目錄下),保證安裝樹可被訪問;

        wKioL1UesKbzYQuUAAGLbw6Q4MM555.jpg


    7、開始PXE客戶端測試:

        保證測試機網卡第一啓動項是基於網絡的:

        wKioL1UeslnjjrLbAAH-YZtC_Uc753.jpg


      查看dhcp日誌,發現ip已經下發給PXE客戶端了:     

wKioL1UesriQgiJiAAJTYXnntJ4367.jpg

        

        客戶端已經進入安裝界面了:

wKioL1Ues0eCwcDxAADiP5hqgW0935.jpg



        指定安裝方法,也就是指定安裝樹的位置:因爲安裝樹我們放到了http根目錄裏面,所以選“URL”;

wKiom1UesnHQxlMMAACwzll_SeU683.jpg


        啓用基於ipv4的網絡,關閉ipv6:

wKioL1UetC_ywlK5AAET35HOe7M560.jpg


        指定安裝數的路徑,很重要:

wKiom1UeszXxSDfvAAE_h00ta_8753.jpg



        指定正確之後,開始下載引導文件,接着就會進入熟悉的安裝界面了:

wKioL1UetNGBHLhTAACDhyieyhQ264.jpg


        ok,接下去,手動配置安裝即可:

wKiom1Ues9izzlAtAAFYmVw3pfA656.jpg


       ok,這裏基於PXE引導安裝linux系統完成了,接下去,完成無人值守的安裝方式:PXE+kickstart


    接下來一定要基於上面的配置環境進行:

1、製作kickstart文件;

    這裏,我們基於linux圖像化界面使用system-config-kickstart去修改anaconda-ks.cfg的方式獲得kickstart文件;

    (注意:每一次我們安裝完系統之後,都會在root家目錄下面生成一個基於kickstart的anaconda-ks.cfg配置文件,可以藉助這個文件來做修改,再給別的機器使用;

    [root@localhost ~]# yum -y install system-config-kickstart   :安裝kickstart腳本生成命令;

    [root@localhost ~]# system-config-kickstart                 :執行命令,進入圖形界面進行參數配置;


    1、利用該工具,去打開位於/root下面的anaconda-ks.cfg做參數修改,更加方便些,也可以自己重新配置:

wKiom1UetzqgXlZPAAIu-d5Xz_k288.jpg

wKioL1UeuLDThozIAAGldvYIBf4602.jpg


    修改基本配置:wKiom1Uet7zwvKuxAAKe4Hqv2r0282.jpg


    修改安裝方法:指定安裝樹的目錄位置,位於http://1.1.1.1/centos6/下面(重要);

wKioL1UeuW-yUlgCAAFTcNAByFw627.jpg


    修改引導裝載選項:

 wKiom1UeuJeCwcNiAAF_ckQ_atY895.jpg


    修改分區信息:爲新系統做好分區,可以依自己定義;

wKioL1UeulHQq72GAAMDv7TO_CM249.jpg


    修改網絡配置:這裏有了,就無需修改了;

wKiom1UeuV-B7T4eAAElxQB-S9E908.jpg




    保存配置到/root目錄下面,然後退出即可:wKiom1UeucXBrDpgAAGdpJ0fYaU258.jpg


    2、根據生成的ks.cfg文件,做修改:

    [root@localhost ~]# pwd
    /root
    [root@localhost ~]# ll
    總用量 104
    -rw-------. 1 root root  1595 3月  26 19:33 anaconda-ks.cfg
    -rw-r--r--. 1 root root 45537 3月  26 19:33 install.log
    -rw-r--r--. 1 root root 10033 3月  26 19:28 install.log.syslog
    -rw-r--r--  1 root root  1594 4月   4 08:03 ks.cfg
    drwxr-xr-x  2 root root  4096 4月   4 07:45 公共的
    drwxr-xr-x  2 root root  4096 4月   4 07:45 模板
    drwxr-xr-x  2 root root  4096 4月   4 07:45 視頻
    drwxr-xr-x  2 root root  4096 4月   4 07:45 圖片
    drwxr-xr-x  2 root root  4096 4月   4 07:45 文檔
    drwxr-xr-x  2 root root  4096 4月   4 07:45 下載
    drwxr-xr-x  2 root root  4096 4月   4 07:45 音樂
    drwxr-xr-x  2 root root  4096 4月   4 07:45 桌面
    [root@localhost ~]# vim ks.cfg

          repo --name="CentOS" --baseurl=http://1.1.1.1/centos6 --cost=100  :這裏要改成安裝樹的位置;

                                            :注意:這裏一定要改成安裝樹的位置,不然自動裝包時找不到;

    [root@localhost ~]# cp ks.cfg /var/www/html/
    [root@localhost ~]#            :最後,將ks.cfg複製到httpd根目錄下,注意要有讀的權限,測試訪問一下;


    3、修改引導文件,使PXE支持kickstart:

    [root@localhost ~]# 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://1.1.1.1/ks.cfg    :添加ks.cfg路徑位置;


    4、重啓服務:

    [root@localhost ~]# service httpd restart

    [root@localhost ~]# service dhcpd restart

    [root@localhost ~]# service xinetd restart


    5、客戶端進行測試:

        當客戶端拿到dhcp下發的ip地址後則進入了安裝界面,此時倒計時60秒進入安裝,無需任何操作;

        wKioL1UevwqDMLNoAAH8BIwgCcE550.jpg

        

        根據dncp指示,找到tftp,加載系統引導文件;

        wKioL1UewEqRCM0aAABUrsm5f3U101.jpg


        加載安裝鏡像:

   wKioL1UewIeCgM4dAADH5V7Ry7c245.jpg



    初始化安裝了:

wKiom1Uev_aBLQtdAAESn93h3Yk899.jpg


    開始裝包了:共計1105個包;

 wKiom1UewDPRAsmmAAF0yjPy1Bo920.jpg


    包裝完了之後,系統會自動重啓,然後即可遠程登陸了;wKioL1Uewb2jTSzHAALvzV3DKyk053.jpg

    ok,pxe+kickstart 搭建就這樣完成了;


結束!







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