天天看點

Dhcp+nfs+tftp+ks 完全無人值守安裝linux作業系統

Dhcp+nfs+tftp+ks 完全無人值守安裝linux作業系統

一:過程思路:(建議先跳過文字按照安裝步驟邊安裝邊看思路)

1:用戶端網卡在主機啟動初始化時通過網卡内置的PXE晶片啟動DHCP程序向server擷取ip位址,網卡擷取到ip位址後,server會提供給client一個下載下傳bootloader的指令,就是dhcp伺服器中dhcpd.conf配置檔案中filename這個選項。

     2:網卡PXE晶片中已經包含了tftp client程式,擷取到ip位址後,網卡會啟動tftp服務去向tftp server請求傳輸這個bootloader檔案PXElinux.0。當Bootloader加載後我們可以看到主機螢幕上有資訊顯示,而這個畫面就是我們在用光驅裝linux的時候看到的第一個畫面。畫面提示選擇圖形界面安裝還是linux text字元界面安裝等資訊。如果在server端的tftpboot目錄下隻有這個檔案,那麼客戶機會一直停留在boot這個地方,因為沒有default這個bootloader配置檔案告訴機器下一步加載哪個系統核心,default配置檔案的作用是告訴主機從哪裡去加載作業系統核心,這個時候如果我們按照正常光碟裝機時會看到提示:輸入回車或者linux text等資訊。Bootloader會去調用default配置檔案中的作業系統核心檔案。

     3:default 檔案配置好之後,接着就是指定核心檔案,這個在default檔案最後。就是vmlinuz,initrd.img *.msg 這幾個檔案。

     4:到這一步加載成功後,系統就按照我們平常光碟裝系統看到的過程一模一樣了,選擇語言,滑鼠,鍵盤等,但因為有了KS這個自動安裝腳步,這些都不要我們手工去指定,全部會自動完成。

    5:到這裡為止,也許有人會問,那我們從哪裡去加載安裝的鏡像。且慢,不是有個ks安裝腳本嗎,就是這個腳本裡面我們可以指定安裝鏡像在哪裡。

   6:現在就考慮系統鏡像的傳輸,這裡我們選用linux特有的NFS網絡檔案系統進行鏡像的傳輸。當然也可以用HTTP,ftp等方式。但為什麼我們直接使用tftp呢,因為這個協定在傳輸大檔案的時候效率非常低。

二:具體安裝過程:

說明:server IP:192.168.9.20 linux版本:centos 5.2

1:安裝tftp 伺服器 和dhcp伺服器:

            [root@centos CentOS]# rpm -qa |grep tftp

             tftp-server-0.42-3.1.el5.centos

             [root@centos CentOS]# rpm -qa |grep dhcp

             dhcpv6-client-1.0.10-4.el5

             dhcp-3.0.5-13.el5

目的是確定用戶端能夠正常擷取到ip位址和pxelinux.0檔案。

2:修改tftp參數:

           [root@centos CentOS]# vi /etc/xinetd.d/tftp

……………………………………………………………………………………

          service tftp

{

        socket_type             = dgram

        protocol                = udp

        wait                    = yes

        user                    = root

        server                  = /usr/sbin/in.tftpd

        server_args             = -s /tftpboot

        disable                 = yes             / 改成no /

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

       }

…………………………………………………………………………………………

/tftpboot 這個參數主要是指定tftp client 用戶端從伺服器的哪個目錄去加載bootloader的pxelinux.0檔案。

 3:啟動tftp:

        [root@centos CentOS]# service xinetd restart

               Stopping xinetd:                            [FAILED]

               Starting xinetd:                             [ OK ]

4:安裝dhcpd服務并配置啟動:

[root@centos ~]# vi /etc/dhcpd.conf

        ddns-update-style interim;

        ignore client-updates;

   boot bootp;

   subnet 192.168.9.0 netmask 255.255.255.0

 {                                            /配置設定給client端的ip位址/

        option routers                  192.168.9.1;

        option subnet-mask              255.255.255.0;

        option domain-name             "domain.org";

        option domain-name-servers     202.96.128.66;

        option time-offset              -18000;

        range dynamic-bootp 192.168.99.2 192.168.9.100;

        filename "/pxelinux.0";     /用來指定tftp根目錄的啟動檔案實際是在/tftpboot目錄下。/

       default-lease-time 21600;

        max-lease-time 43200;

        next-server 192.168.9.20;   /這一句是告訴client從哪裡加載bootloade/r

}

5: 建立檔案夾并拷貝pxelinux.0至/tftpboot目錄:

     mkdir /tftpboot

    cp /usr/lib/syslinux/pxelinux.0 /tftpboot    /pxelinux.0server已經有/

midir /tftpboot/pxelinux.cfg

touch /tftpboot/pxelinux.cfg/default

default内容可以修改成如下:

…………………………………………………………………………

        default autoinstall        /預設引導autoinstall 這個label/

        prompt 1

        timeout 30               /預設自動加載的時間30s/

      ………………………………

        label autoinstall

        kernel vmlinuz                  /核心檔案名字/

        append ks=nfs:192.168.9.20:/tftpboot/ks

initrd=initrd.img devfs=nomount ramdisk_size=16384 nofb

     append 這個選項是指定從哪個地方去讀取這個配置檔案,用什麼方式加載。這裡使用nfs方式擷取KS這個檔案,當然也可以用FTP、HTTP等方式。ks 檔案,也就是linux自動加載安裝中各項參數,平常我們用CD光牒安裝的時候需要選擇相應的語言,字型,鍵盤,滑鼠,分區,安裝的軟體包等待資訊,KS檔案就是讓這些選擇自動化進行。

6:ks 檔案内容如下:可以根據自己實際環境進行更改。

   lang en_US

    langsupport zh_CN en_US --default=en_US

    keyboard us

    mouse

    timezone Asia/Shanghai

    rootpw password                      /新裝系統的root密碼/

    reboot

    #upgrade

    install

    #harddrive --partition=sdb1 --dir=rhas

     nfs --server=192.168.9.20 --dir=/media/cdrom     /指定鏡像的位置/

    text

    bootloader --location=mbr

    zerombr yes

    clearpart --drives hda –initlabe            /硬碟名字,根據實際環境更改/

    part / --fstype ext3 --size 3072 --asprimary --ondisk had   

    part swap --size 256 --asprimary --ondisk hda

    part /tmp --fstype ext2 --size 256 --ondisk hda

    part /home --fstype ext3 --size 1 --grow --ondisk hda

    auth --useshadow --enablemd5

    #network --bootproto=dhcp --device=eth0

    network --device=eth0 --bootproto=static --

ip=192.168.9.210 --netmask=255.255.255.0 --

 gateway=192.168.9.244 --nameserver=202.96.128.68 --

hostname=test.com                  /指定新裝系統的主機名和ip/

    firewall --disabled

    skipx

    %packages –resolvedeps        /指定新裝系統所需的包/

    @ development-tools

    @ admin-tools

    @ system-tools

………………………………………………………………………………

Kickstart 具體内容的研究可以參考redhat官方網站,根據實際環境修改KS的内容以适合自己的要求。

7: NFS伺服器的建立:

a:先确認NFS檔案系統在伺服器端已經安裝好。

[root@centos ~]# rpm -qa |grep nfs

nfs-utils-lib-1.0.8-7.2.z2

nfs-utils-1.0.9-33.el5

b:修改nfs參數檔案

[root@centos ~]# vi /etc/exports   

………………………………………………………………

/media/cdrom      *(ro,sync)

…………………………………………………………………

 這個的配置很簡單:/media/cdrom 将伺服器上這個目錄共享出去,這個目錄中就是安裝CD光牒中的内容。

                   *(ro,sync) *指定所有的使用者(ro,sync)具有隻讀權限,并且資料同步寫入硬碟。

c:啟動nfs服務:

root@centos ~]# service portmap start

[root@centos ~]# service nfs start

Starting NFS services:                                     [ OK ]

Starting NFS quotas:                                       [ OK ]

Starting NFS daemon:                                       [ OK ]

Starting NFS mountd:                                       [ OK ]

 [root@centos ~]# exportfs        /确認nfs共享正常/

/media/cdrom    <world>

……………………………………………………

8:client機器手動加電後,這是唯一需要手動的地方,呵呵,連接配接上網線與server在同一個網段,享受自動安裝幾十幾百台linux主機的過程吧。

繼續閱讀