設想一個場景:假如讓你給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光盤源
用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 dhcp tftp –y)此命令可一次性安裝需要的服務,建議一步一步來!
[root@test1 ~]# yum install vsftpd –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] No more mirrors to try.”的情況,先檢查是光盤是否掛在至/mnt下。如果已掛在還依然提示該錯誤,執行命令“yum clean all”命令。
[root@test1 ~]# /etc/init.d/vsftpd start 或 service vsftpd start
[root@test1 ~]# chkconfig vsftpd on
(5)安裝 TFTP,修改 tftp 配置文件及開啟服務
[root@test1 ~]# yum install tftp –y
[root@test1 ~]# yum install tftp-server –y
[root@test1 ~]vim /etc/xinetd.d/tftp,修改第13,14行配置
(6)重新啟動 xinetd 服務,然后查看服務端口是否打開。
[root@test1 ~]# /etc/init.d/xinetd restart 或者service xinetd restart
OK,TFTP 服務正常啟動。Xinetd 服務本來就是開機啟動的,所以這里我們不再需要設置。
(注:xinetd是新一代的網絡守護進程服務程序,又叫超級Internet服務器,常用來管理多種輕量級Internet服務)
(7)安裝 dhcp,修改配置文件及開啟服務
[root@test1 ~]# yum install dhcp –y
[root@test1 ~]# vim /etc/dhcp/dhcpd.conf (第 9,10 行是網絡引導需要的配置,必須要有的。)
ddns-update-style interim;
ignore client-updates;
# 注意網段需要相同。否則無法使用
subnet 192.168.144.0 netmask 255.255.255.0 {
# 與服務器IP地址相同
option routers 192.168.144.133;
# IP默認租約時間
default-lease-time 21600;
#IP最大租約時間
max-lease-time 43200;
#IP租約地址池,這里要注意網段一定相同,否則起不來DHCP服務
range 192.168.144.10 192.168.144.100;
option subnet-mask 255.255.255.0;
next-server 192.168.144.133; # 與服務器IP地址相同
filename "pxelinux.0";
}
[root@test1 ~]# /etc/init.d/dhcpd start 或者service dhcpd start # 啟動 DHCP
[root@test1 ~]# chkconfig dhcpd on #設置開機自啟
# 可能會存在啟動失敗的情況!!
如果是虛擬機,請查看配置信息是否與當前網段匹配。
如果啟動DHCP服務的時候提示“Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in 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 行的 label linux,然后修改下 22 行(即在后面添加 ks=ftp://”pxe-server-ip”/ks.cfg)。第 22 行的意思是使安裝程序通過 FTP 服務器訪問 kickstart 文件。)
其中第 1 行:default linux 表示指定默認入口名稱;第 2 行:prompt 1 中 prompt 用來設置是否等待用戶選擇,1 表示等待用戶控制;第 18、23、27、31 行 label linux 表示定義的引導入口,表示系統的不同安裝方式,如第 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.cfg ks=http://server/dir/file 如:ks=http://http 服務器 IP/ks.cfg ks=nfs:server:/dir/file 如:ks=nfs:nfs 服務器 IP:/var/ftp/pub/ks.cfg ks=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 服務會有問題。
設置防火牆:
#chkconfig iptables off (重啟生效)
#service iptables 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 retrieve ftp ,確認是否進行了鏡像掛載, ls /var/ftp/pub/ 即可。