關於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 ]
服務已正常運行。
部署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 ]
服務已正常運行。
部署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。圖形菜單以下:
圖形菜單默認爲第一項,其對應的配置文件爲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服務器上的光盤鏡像路徑。
測試是否可用
在該網段內部署一臺沒有操做系統的虛擬機,而後啓動。也能夠設置某臺虛擬機的第一引導設備爲網卡。
引導界面
找到安裝源
安裝軟件包過程
完成測試.................^_^