部署一臺服務器需要很長時間,安裝人工來安裝的話,需要安裝源,需要配置很多配置,這樣的話是非常耗費時間的並且容易出錯,因此需要比較智能化的解決方案:而這樣方式已經非常成熟了,本文主要介紹PXE(引導)+kickstart(自動配置系統)+DHCP(客戶端獲取IP)+TFTP(傳輸Linux啓動所需要的文件)+HTTP(提供安裝源)這樣方案來完成系統的部署。
一:相關概念
二:實例
*****************************************************************************************
一:相關概念和安裝過程
PXE是一種引導方式 preboot excution environment client網卡要支持網絡引導
DHCP是一種動態地址獲取協議
TFTP適合於傳輸小文件,簡單文件傳輸協議,高效傳輸小文件
HTTP文件傳輸,本例中用於完成提供安裝源
xinted超級守護進程
安裝過程,主要有以下幾步;
1、pxe啓動,會去尋找dhcp服務器獲取ip地址pxelinux.0文件
2、client通過tftp連接到服務器,下載pxelinux.0文件。
3、client下載成功pxelinux.0文件後,系統還會下載控制pxelinux.0的配置文件,叫default。然後client就會按照default的配置來執行pxelinux.0文件。
4、現在client端會在獲取一次IP地址。並且根據DHCP服務器配置文件找到kickstart配置
文件並下載。
5、pxelinux.0文件定義的想服務器請求linux內核,根文件系統之類的參數。運行這個文件,client就會向服務器請求相關的文件並下載。
6、文件下載成功後,client就會啓動linux內核,這就進入了我們安裝時候看見的第一個圖形界面,這個界面和自己安裝看見的第一個畫面一樣,回車就是圖形安裝,輸入text就是文本安裝那裏。如果使用了kickstart,這個界面消失很快,可能看不見。到這裏PXE啓動就完成了。
7、當按照default要求運行pxelinux.0文件,系統讀取內核,掛在根文件系統以後的任務就都交給了kickstart了。包括安裝介質來源、語言、時區、分區、安裝哪些包等,都是在kickstart文件中定義。只要進入這一步,kickstart配置文件正確,我們的無人值守安裝已經成功了
二:實例
配置步驟: 前提:
mkdir /mnt/cdrom
mount -r /dev/cdrom /mnt/cdrom
1、配置DHCP服務器
yum -y install dhcp
vim /etc/dhcp/dhcpd.conf
service dhcpd restart
tail -f /var/log/boot.log
subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.20 192.168.2.30; default-lease-time 6000; max-lease-time 72000; next-server 192.168.2.21; filename "/pxelinux.0"; }
2、配置tftp-server
yum -y install xinetd tftp-server tftp
chkconfig xinetd on
chkconfig tftp on # service xinetd start
ss -unl | grep ":69"
[root@station133 ~]# ss -unl |grep ":69" UNCONN 0 0 *:695 *:* UNCONN 0 0 *:69 *:* UNCONN 0 0 :::695 :::*
3、準備安裝樹
mkdir /var/www/html/centos6
mount --bind /mnt/cdrom /var/www/html/centos6
service httpd start
[root@station133 ~]# ll /var/www/html/ total 12 -rw------- 1 root root 2851 Mar 9 14:18 anaconda-ks.cfg dr-xr-xr-x 7 root root 4096 Nov 29 20:09 centos6 -rw-r--r-- 1 root root 2822 Mar 9 14:19 ks.cfg
4、準備tftpboot下的文件
yum -y install syslinux
cp /mnt/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /mnt/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@station133 ~]# ll /var/lib/tftpboot/ total 348 -r--r--r-- 1 root root 84 Mar 9 14:16 boot.msg dr-xr-xr-x 2 root root 4096 Mar 9 14:15 pxeboot -rw-r--r-- 1 root root 26828 Mar 9 14:17 pxelinux.0 drwxr-xr-x 2 root root 4096 Mar 9 14:21 pxelinux.cfg -r--r--r-- 1 root root 151230 Mar 9 14:16 splash.jpg -r--r--r-- 1 root root 162860 Mar 9 14:16 vesamenu.c32
5、提供kickstart文件
注意:url及repo後的路徑要修改爲可用安裝樹的路徑; 編輯好kickstart文件後保存至/var/www/html目錄下;這裏假設爲ks.cfg
[root@station133 ~]# ll /var/www/html/ total 12 -rw------- 1 root root 2851 Mar 9 14:18 anaconda-ks.cfg dr-xr-xr-x 7 root root 4096 Nov 29 20:09 centos6 -rw-r--r-- 1 root root 2822 Mar 9 14:19 ks.cfg
6、配置引導程序能自動加載此kickstart文件
編輯/var/lib/tftpboot/pxelinux.cfg/default 在label爲linux項的append一行後附加:
ks=http://192.168.2.21/ks.cfg
label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img ks=http://192.168.2.21/ks.cfg label vesa menu label Install system with ^basic video driver
[root@station133 ~]# cd /mnt/cdrom/ [root@station133 cdrom]# ls CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6 EFI Packages RPM-GPG-KEY-CentOS-Security-6 EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6 GPL repodata TRANS.TBL p_w_picpaths RPM-GPG-KEY-CentOS-6 [root@station133 cdrom]# service httpd start Starting httpd: [ OK ] [root@station133 cdrom]# yum install -y syslinux Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.btte.net * updates: mirrors.btte.net Setting up Install Process Package syslinux-4.02-8.el6.x86_64 already installed and latest version Nothing to do [root@station133 cdrom]# ls /mnt/cdrom/p_w_picpaths/pxeboot/ initrd.img TRANS.TBL vmlinuz [root@station133 cdrom]# cp /mnt/cdrom/p_w_picpaths/pxeboot/ /var/lib/tftpboot/ cp: omitting directory `/mnt/cdrom/p_w_picpaths/pxeboot/' [root@station133 cdrom]# cp -r /mnt/cdrom/p_w_picpaths/pxeboot/ /var/lib/tftpboot/ [root@station133 cdrom]# ls /mnt/cdrom/isolinux/ boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz boot.msg initrd.img isolinux.cfg splash.jpg vesamenu.c32 [root@station133 cdrom]# ls /mnt/cdrom/isolinux/ boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz boot.msg initrd.img isolinux.cfg splash.jpg vesamenu.c32 [root@station133 cdrom]# cp /mnt/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/ [root@station133 cdrom]# [root@station133 cdrom]# [root@station133 cdrom]# cp /usr/share/syslinux/pxe pxechain.com pxelinux.0 [root@station133 cdrom]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@station133 cdrom]# mkdir /var/lib/tftpboot/pxelinux.0 CentOS_BuildTag RELEASE-NOTES-en-US.html .discinfo repodata/ EFI/ RPM-GPG-KEY-CentOS-6 EULA RPM-GPG-KEY-CentOS-Debug-6 GPL RPM-GPG-KEY-CentOS-Security-6 p_w_picpaths/ RPM-GPG-KEY-CentOS-Testing-6 isolinux/ TRANS.TBL Packages/ .treeinfo [root@station133 cdrom]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@station133 cdrom]# cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default [root@station133 cdrom]# cp /root/anaconda-ks.cfg /var/www/html/ [root@station133 cdrom]# vi /var/www/html/ks.cfg [root@station133 cdrom]# cp /root/anaconda-ks.cfg /var/www/html/ cp: overwrite `/var/www/html/anaconda-ks.cfg'? ^C [root@station133 cdrom]# cp /root/anaconda-ks.cfg /var/www/html/ks.cfg [root@station133 cdrom]# vi /var/www/html/ks.cfg [root@station133 cdrom]# vi /var/lib/tftpboot/pxelinux.cfg/default [root@station133 cdrom]# ss -unl |grep ":69" UNCONN 0 0 *:695 *:* UNCONN 0 0 :::695 :::* [root@station133 cdrom]# service xinetd on Usage: /etc/init.d/xinetd {start|stop|status|restart|condrestart|reload} [root@station133 cdrom]# service tftp on tftp: unrecognized service [root@station133 cdrom]# yum install splash.jpg^C [root@station133 cdrom]# yum -y install xinetd tftp-server tftp Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.btte.net * updates: mirrors.btte.net Setting up Install Process Package 2:xinetd-2.3.14-39.el6_4.x86_64 already installed and latest version Package tftp-server-0.49-7.el6.x86_64 already installed and latest version Resolving Dependencies --> Running transaction check ---> Package tftp.x86_64 0:0.49-7.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: tftp x86_64 0.49-7.el6 base 32 k Transaction Summary =========================================================================================== Install 1 Package(s) Total download size: 32 k Installed size: 45 k Downloading Packages: tftp-0.49-7.el6.x86_64.rpm | 32 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : tftp-0.49-7.el6.x86_64 1/1 Verifying : tftp-0.49-7.el6.x86_64 1/1 Installed: tftp.x86_64 0:0.49-7.el6 Complete! [root@station133 cdrom]# service tftp on tftp: unrecognized service [root@station133 cdrom]# service tftpd on tftpd: unrecognized service [root@station133 cdrom]# service tftpd on^C [root@station133 cdrom]# service tftp on tftp: unrecognized service [root@station133 cdrom]# service xinetd on Usage: /etc/init.d/xinetd {start|stop|status|restart|condrestart|reload} [root@station133 cdrom]# service xinetd start Starting xinetd: [root@station133 cdrom]# ss -unl |grep ":69" UNCONN 0 0 *:695 *:* UNCONN 0 0 :::695 :::* [root@station133 cdrom]# service dhcpd start [root@station133 cdrom]# ss -unl |grep ":69" UNCONN 0 0 *:695 *:* UNCONN 0 0 :::695 :::* [root@station133 cdrom]# service dhcpd restart Shutting down dhcpd: [ OK ] Starting dhcpd: [ OK ] [root@station133 cdrom]# ss -unl |grep ":69" UNCONN 0 0 *:695 *:* UNCONN 0 0 :::695 :::* [root@station133 cdrom]# service tftpd start tftpd: unrecognized service [root@station133 cdrom]# yum -y install xinetd tftp-server tftp Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.btte.net * updates: mirrors.btte.net Setting up Install Process Package 2:xinetd-2.3.14-39.el6_4.x86_64 already installed and latest version Package tftp-server-0.49-7.el6.x86_64 already installed and latest version Package tftp-0.49-7.el6.x86_64 already installed and latest version Nothing to do [root@station133 cdrom]# chkconfig xinetd on [root@station133 cdrom]# chkconfig tftp on [root@station133 cdrom]# service xinetd start Starting xinetd: [root@station133 cdrom]# ss -unl |grep ":69" UNCONN 0 0 *:695 *:* UNCONN 0 0 *:69 *:* UNCONN 0 0 :::695 :::*