無人值守實現 批量化自動安裝 Linux系統

設想一個場景:假如讓你給1000臺服務器裝系統,你會怎麼做?跑去每一臺服務器給它安裝系統嗎?顯然不會。

一、概括

 通過網絡引導系統的做法可以不必從硬盤、軟盤或CD-ROM硬盤,而是完全通過網絡來引導一臺計算機。這對於安裝來說非常方便,因為它意味著你可以坐在桌子旁邊,不必走到機器那裡插入CD-ROM光盤或軟盤,就可以從網絡上引導位於別處的一臺機器。

PXE的作用:就像在網卡上ROM裡的小小操作系統,它通過標準API把自己的網絡引導功能提供給系統的BIOS,就可以通過網絡啟動linux;

PXE網絡引導過程:一臺主機廣播一個設置了PXE選項的DHCP“發現”請求,然後一臺DHCP服務器用一個包含有PXE選項的DHCP包來響應它(引導服務器的IP地址和引導文件的名字)。客戶機通過TFTP下載它的引導文件,然後執行此引導文件。

  用於執行自動安裝的工具叫做kickstart,由system-config-kickstart工具生成kickstart的配置文件ks.cfg。

二、實現思路

 原版(官方)鏡像安裝完成以後,將系統做成gho系統備份鏡像文件。通過網絡將gho系統備份鏡像分別利用網卡的Mac地址進行ip地址的分配,再分發。

三、環境準備

 兩臺虛擬機:一個為測試環境:(CentOS,192.168.144.133),另外一臺CentOS作為被安裝端,設置網絡引導安裝

四、安裝準備

用yum來安裝所需要的安裝包

(1)[root@test1 ~]#mount /dev/cdrom /mnt # 先檢查根目錄中是否有mnt目錄

(2)在/etc/yum.repos.d 目錄下創建一個以.repo 結尾的文件

[root@test1 ~]# vi/etc/yum.repos.d/server.repo

   配置內容如下:


[base]

Name=base

Baseurl=file:///mnt/ #(部分系統可能需要使用file:///mnt/server 的路徑)

Enabled=1

Gpgcheck=0

(3)備份後,刪除/etc/yum.repos.d/下的其他文件:rm -rf C*

(4)安裝 ftp 服務以及開啟服務,設置為開機自動啟動。

(yum install vsftpd tftp-server dhcptftp –y)此命令可一次性安裝需要的服務,建議一步一步來!

[root@test1 ~]# yum installvsftpd –y (出現complete說明安裝完成)

如果出現“vsftpd-2.2.2-11.el6_4.1.x86_64:failure: Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm from base: [Errno 256] Nomore mirrors to try.”的情況,先檢查是光盤是否掛在至/mnt下。如果已掛在還依然提示該錯誤,執行命令“yum clean all”命令。

[root@test1~]# /etc/init.d/vsftpd start 或 service vsftpd start

[root@test1 ~]# chkconfig vsftpdon

(5)安裝 TFTP,修改 tftp 配置文件及開啟服務  

[root@test1 ~]# yum install tftp –y

[root@test1 ~]# yum installtftp-server –y

[root@test1 ~]vim/etc/xinetd.d/tftp,修改第13,14行配置

(6)重新啟動 xinetd服務,然後查看服務端口是否打開。 

[root@test1 ~]#/etc/init.d/xinetd restart 或者service xinetd restart

(7)安裝 dhcp,修改配置文件及開啟服務

[root@test1~]# yum install dhcp –y

[root@test1 ~]# vim/etc/dhcp/dhcpd.conf (第 9,10 行是網絡引導需要的配置,必須要有的。)

<code>ddns-update-style interim;/<code>
<code>ignore client-updates;/<code>
<code># 注意網段需要相同。否則無法使用/<code>
<code>subnet 192.168.144.0 netmask 255.255.255.0 {    /<code>
<code>  # 與服務器IP地址相同/<code>
<code>   option routers 192.168.144.133;/<code>
<code>  # IP默認租約時間/<code>
<code>default-lease-time 21600; /<code>
<code>  #IP最大租約時間/<code>
<code>max-lease-time 43200;/<code>
<code>#IP租約地址池,這裡要注意網段一定相同,否則起不來DHCP服務/<code>
<code>range 192.168.144.10  192.168.144.100;  /<code>
<code>option subnet-mask 255.255.255.0;/<code>
<code>next-server 192.168.144.133;  # 與服務器IP地址相同/<code>
<code>filename "pxelinux.0";/<code>
<code>}/<code>

[root@test1~]# /etc/init.d/dhcpd start 或者service dhcpd start # 啟動 DHCP

[root@test1 ~]# chkconfig dhcpdon #設置開機自啟


# 可能會存在啟動失敗的情況!!

  如果是虛擬機,請查看配置信息是否與當前網段匹配。

  如果啟動DHCP服務的時候提示“Notsearching LDAP since ldap-server, ldap-port and ldap-base-dn were not specifiedin the config file”

  修改 /etc/rc.d/init.d/dhcpd 文件,將其中的

user=dhcpd

group=dhcpd

  改為:

user=root

group=root

  至此我們的準備工作完成,下面開始kickstart配置。

五、kickstart配置

如果找不到 syslinux 目錄,需要安裝包 yum install system-config-kickstart.noarch –y

(1)執行如下命令

[root@test1 ~]# mkdir /tftpboot

[root@test1 ~]# mkdir/tftpboot/pxelinux.cfg

[root@test1 ~]# cp /usr/share/syslinux/pxelinux.0/tftpboot/

[root@test1~]# cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

[root@test1 ~]# cp/mnt/images/pxeboot/initrd.img /tftpboot/

[root@test1 ~]# cp/mnt/images/pxeboot/vmlinuz /tftpboot/

[root@test1 ~]# chmod 644/tftpboot/pxelinux.cfg/default

    然後修改 /tftpboot/pxelinux.cfg/default的配置文件。

vim/tftpboot/pxelinux.cfg/default

(文件裡面需要修改兩行,修改第 1 行,後面的 linux 意思是尋找下面 18 行的 labellinux,然後修改下 22 行(即在後面添加 ks=ftp://”pxe-server-ip”/ks.cfg)。第 22 行的意思是使安裝程序通過 FTP 服務器訪問 kickstart文件。)

其中第 1行:defaultlinux 表示指定默認入口名稱;第 2 行:prompt 1 中 prompt用來設置是否等待用戶選擇,1 表示等待用戶控制;第 18、23、27、31 行 labellinux 表示定義的引導入口,表示系統的不同安裝方式,如第 18 行定義的入口表示圖形安裝。


 配置文件修改完了,要開始自動安裝,安裝程序必須能訪問 kickstart 文件。有多種方法可訪問 kickstart文件,其中最常用的一種方法是通過網絡服務器進行,例如:ftp服務器、WEB 服務器或 NFS 服務器,這種方法非常易於部署,並且也使管理更改變得十分簡單。也可以通過 USB磁盤、CD-ROM 或本地硬盤。如果 USB 或 CD-ROM 中的kickstart 文件非常便於訪問,只需將 kickstart 文件放置在用來開始安裝的引導介質中。而使用 DHCP 服務器和 TFTP 及PXE配置起來更為複雜。

使安裝程序指向 kickstart 文件的書寫格式如下:

ks=ftp://server/dir/file 如:ks=ftp://ftp 服務器 IP/ks.cfgks=http://server/dir/file如:ks=http://http 服務器 IP/ks.cfgks=nfs:server:/dir/file 如:ks=nfs:nfs 服務器 IP:/var/ftp/pub/ks.cfgks=hd:device:/dir/file 如:ks=hd:sdb1:/kickstar-files/ks.cfg ks=cdrom:/dir/file 如:ks=cdrom:/kickstart-files/ks.cfg

以上有關 default 配置文件的修改就是通過 ftp 服務器方式來訪問 kickstart文件。

六、製作kickstart無人值守軟件

打開終端輸入 system-config-kickstart 彈出來界面。 (需要在服務器中打開。)

我們設置下默認安裝的語言,時區,根口令,然後勾選下面的安裝後重新引導。然後選擇安裝方法。 (服務器ip)

我們配置 ftp 服務器的安裝方法。選擇執行新安裝。然後點擊引導裝載程序選項

GRUB 選項如果無特殊需求,可以不勾選。

到這一步,佈局這裡,我們自己設置下分區大小。

分區大小需要自己根據情況而定。

比如我的虛擬機配置較低就要用下面的分區:

/boot 分區 文件系統類型:ext4 使用硬盤空間大小:200MB

/swap分區 使用硬盤空間大小::2048MG(內存小於 8G的需設置成內存的兩倍,16G以後的內存最好保持物理內存的8G或者相同物理內存的大小,這裡實驗虛擬機只有1G內存,所以swap分區2048)

/ 根分區 文件系統類型:ext4 使用硬盤空間大小: 剩下所有硬盤空間

以上三個為基本分區,其他的分區需根據情況制定。

網絡這裡,默認沒有,點擊添加網絡,設備名稱為 eth0,網絡類型為 dhcp

驗證部分

防火牆和 selinux 根據自己需求選擇開啟或者禁用

顯示設置

軟件包選擇,默認沒有勾選桌面。根據自己需求勾選。 (基本,語言支持)

#附上Linux系統最小化安裝包選擇

後面剩餘的兩項不需要配置。

提示:安裝腳本:在“預安裝腳本”,“安裝後腳本”對話框中,可以分別添加在安裝前、安裝後自動的可執行語句。此項設置使服務器自動化配置變得更加容易,例如可以在客戶機在完成安裝後自動設置 YUM 倉庫,如下圖所示,需要注意的是:應確保所編寫的代碼能夠正確執行,以免安裝失敗。

提供一個參考的案例:


然後點擊左上角的文件選擇保存,選擇下保存的路徑(/root),然後複製 ks.cfg文件到/var/ftp/目錄下:

[root@test1 ~]#cp ks.cfg /var/ftp/

    :ks.cfg 就是無人值守安裝時要用的 Kickstart 文件,該文件可以手動進行編輯,如果手動編輯 Kickstart 文件,則使用 ksvalidator 來驗證該文件使用正確的關鍵字,但卻無法驗證 URL路徑、各個數據包或組等書寫錯誤。Ksvalidator 是 system-config-kickstart數據包的一部分,

因此必須要安裝該軟件包

---還記的/tftpboot/pxelinux.cfg/default 文件中設置過 ks=ftp://192.168.10.1/ks.cfg 因此必須

執行上面的一步重新掛載 安裝光盤到/var/ftp/pub 目錄下,開始執行另一臺機器的無人值守安裝:

[root@test1 ~]#umount /dev/cdrom # 取消原來是掛載到/mnt 下的鏡像文件。Umount /dev/cdrom(umount /mnt)

[root@test1 ~]#mount /dev/cdrom /var/ftp/pub

建議關閉防火牆和 selinux,如果沒有關閉的話,tftp 服務會有問題。

設置防火牆:

#chkconfigiptables off (重啟生效)

#serviceiptables stop (即刻生效)

關閉 selinux功能:有如下兩種方法可以實現

1) 永久關閉 selinux功能:修改/etc/sysconfig/selinux 文件,將 SELINUX=enforcing 改為 disabled,要重啟系統才生效

2)臨時關閉 selinux功能:#setenforce 0 不需要重啟系統若使用 vmware 虛擬機,如果還失敗的話,就把vmware 虛擬機軟件所提供的 DHCP功能停掉。(一般情況下不影響)

七、安裝啟動機器

接下來啟動你要安裝的機器了(設置為網絡引導安裝,你就可以休息下,等待自己安裝完成)

新建一臺虛擬機,操作系統稍後選擇安裝。將此虛擬機開機,默認會通過DHCP選擇剛剛的192.168.144.133配置好的PXE進行安裝系統。至此我們已經完成PXE無人值守系統安裝

引導過程可能出現的問題

如果出現這個狀態請查看 ks 的路徑和 selinux是否關閉。

查看 SELinux 狀態:

1、 /usr/sbin/sestatus -v ##如果 SELinux status 參數為 enabled 即為開啟狀態

SELinux status: enabled

2、 getenforce ##也可以用這個命令檢查

  如果遇到 Unable to retrieveftp ,確認是否進行了鏡像掛載, ls/var/ftp/pub/ 即可。


分享到:


相關文章: