下面我要介紹的是一個基於網絡的PXE和kickstart自動安裝系統的實驗,這也是我從學習linux不久,一直想要實現的功能,這裏,我將實驗過程和本身的理解貼出來。html
實驗拓撲圖以下所示:linux
實驗環境準備:web
注意:以上的三臺服務器和一臺普通PC都要位於同一個網段,並且PC先不配置地址vim
實現過程原理講解:(若有不懂之處,先理解,作完實驗就會理解,建議看看)centos
一、普通PC啓動後,將其啓動項調爲基於網卡啓動,以下圖bash
二、 因爲網卡自己尚未地址,而後,它就會向它所在的局域網內發起DHCP DISCOVER的廣播包服務器
三、 而後DHCP服務器就會響應它,通過相互肯定後,會給這臺PC的網卡分配一個IP地址,於此同時,DHCP服務器會告訴網卡有下一個服務器,而後指定網卡到下一個服務器上去下載某個文件。網絡
四、網卡得到地址後,就會去下一個服務器,即TFTP服務器上去下載一個爲pexlinux.0的文件,而後,下載至本地(網卡內部嵌有TFTP客戶端程序),pexlinux.0的功能就至關於grub引導程序了。app
五、網卡下載到pxelinux.0文件後,在普通PC的內存中展開,而後就須要kernel和ramdisk,到TFTP服務器上去下載這兩個文件,啓動虛擬的系統。dom
六、接下來,下載.cfg的文件,實現自動安裝,該文件中指定了安裝的源服務器,即上面的Web服務器,咱們把Web服務器當成了yum源,以後普通的PC就會到Web上去下載安裝時須要的包。
實驗過程:
1、服務器環境搭建
一、 配置DHCP服務器,子網爲:192.168.100.0,地址池爲:192.168.100.10- 192.168.100.30,咱們還要將TFTP服務器和Web服務器的地址進行綁定。
I、在DHCP服務上運行setup命令,配置DHCP地址。
II、而後把系統的安裝盤掛載到dhcp這臺主機上,安裝DHCP服務。
#mkdir/media/cdrom #建立文件夾,以供掛載 #mount/dev/cdrom /media/cdrom #將光盤進行掛載 #cd /media/cdrom/Packages #ls | grep dhcp #查看DHCP服務的包有哪些 #rpm –ivh dhcp-4.1.1-38.P1.e16.centos.x86_64.rpm #這裏咱們只須要安裝這個包
III、接下來,修改DHCP的配置文件,並啓動服務
注意:DHCP服務的配置文件在/etc/dhcp/下,爲dhcpd.conf,默認狀況下,該配置文件爲空,可是,
安裝服務時,給咱們提供了一個模板://usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
#cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #對原來的文件進行覆蓋
編輯/etc/dhcp/dhcpd.conf,配置以下,修改時,不要忘記分號";"
optiondomain-name "mageedu.com"; optiondomain-name-servers 192.168.100.10, 192.168.0.254; default-lease-time86400; max-lease-time 100000; subnet192.168.100.0 netmask 255.255.255.0 { #指定子網、掩碼 range 192.168.100.10 192.168.100.30; #指定地址池信息 option routers 192.168.100.10; #網關地址 #將Web服務器和TFTP服務器進行地址綁定 host Tftp { hardware ethernet 00:0C:29:9F:6A:25; #在TFTP服務器下經過ifconfig查看 fixed-address 192.168.100.11; } host Web { hardware ethernet 00:0C:29:CD:B8:B9; #在TFTP服務器下經過ifconfig查看 fixed-address 192.168.100.12; } }
保存退出,以後再檢查DHCP的配置文件是否錯誤
#service dhcpd configtest Syntax: OK #語法正確,能夠啓動服務了 #service dhcpd start #把dhcp服務加入開機自動啓動 #chkconfig dhcpd on #chkconfig --list | grep dhcp dhcpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
IV:開啓Web服務器和Tftp服務器,查看其IP地址
Web自動獲取到的IP地址
二、在Web服務器上掛載光盤,安裝httpd服務,創建yum源
#mkdir /media/cdrom #建立目錄,做爲掛載點 #mount /dev/cdrom /media/cdrom #進行掛載 #cd /media/cdrom/Packages #切換到軟件包的目錄 #rpm -ivh httpd-2.2.15-29.el6.centos.x86_64.rpm #安裝web程序,httpd #mkdir /var/www/html/centos6 #在web目錄下建立目錄
綁定/media/cdrom和/var/www/html/centos6,這樣,咱們的Web上就有yum源了,其實就是安裝光盤
#mount --bind /media/cdrom /var/www/html/centos6
接下來啓動httpd服務,並把它設爲開機自動啓動:
#service httpd start #ss -tnl #查看80端口是否在監聽 #chkconfig httpd on
重要的還要一步,掛載是不會自動執行的,咱們能夠寫入/etc/rc.d/rc.local文件中
mount /dev/cdrom /media/cdrom mount --bind /media/cdrom /var/www/html/centos6
這樣,只要系統啓動完成後,這兩步就會執行,是系統啓動的最後兩步
三、在TFTP服務器上修改yum的配置文件,原來的備份,而後安裝tftp-server服務
#cd /etc/yum.repos.d/ #mkdir backup #mv * backup #備份原有的yum配置文件 #vim pxe.repo [base] name=the pexautoinstall yum baseurl=http://192.168.100.12/centos6/ #指定Web爲其yum源 enabled=1 gpgcheck=0
安裝TFTP服務
#yum install tftp-server #這是服務端程序
擴展:這裏的tftp服務是由xinetd超級進程管理的
如何啓動TFTP服務呢,編輯以下:
#vim /etc/xinetd.d/tftp disable = no #默認爲yes,咱們修改成no
保存上面文件,而且啓動xinetd服務
#service xinetd start #chkconfig xinetd on #ss -unl #查看服務是否啓動,tftp監聽的是UDP的69號端口
2、上面的三步主要是搭建了這三個服務器,下面,咱們就開始進入正題,搭建PXE環境。
如下步驟,未特殊說明,都在TFTP服務器上進行
一、將系統的安裝光盤掛載到TFTP服務器上
#mkdir /media/cdrom #mount /dev/cdrom /media/cdrom #掛載
二、提供PXE工做環境
普通PC要先到TFTP服務器上下載pexlinux.0的文件,拿回來,放到內存中展開以後就須要kernel和ramdisk文件,再須要安裝文件。
I、pexlinux.0這個文件要syslinux程序生成
#rpm –qa |grep syslinux #yuminstall syslinux #rpm–ql syslinux #pexlinux.0文件在/usr/share/syslinux/下
網卡可以下載pxelinux.0,TFTP的目錄在/var/lib/tftpboot/,全部拷貝過去
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
三、提供引導內核等文件
#cd/var/lib/tftpboot #將下列文件都拷貝到該目錄 #cp /media/cdrom/p_w_picpaths/pxeboot/vmlinuz . #內核 #cp/media/cdrom/p_w_picpaths/pxeboot/initrd.img . #ramdisk #cp /media/cdrom/isolinux/splash.jpg . #安裝系統的圖片 #cp /media/cdrom/isolinux/vesamenu.c32 . #安裝時顯示的菜單 #cp /media/cdrom/isolinux/boot.msg . #
4、最後咱們要提供kf文件(在Web服務下進行)
ks文件是由kickstart生成的文件,在linux上能夠用工具system-config-kickstart生成
在xwindow下啓動system-config-kickstart工具
咱們能夠導入當前系統安裝時所生成的文件,在/root目錄下,名爲anaconda.cfg
而後更改部份內容,下面這項,關於url的必定要改一下,原來的不必定適應你的環境
保存稱爲.cfg結尾的文件,例如:ks.cfg,保存至/var/www/html/目錄下,即web服務根下
注意:若是在安裝過程當中,若是你們出現了問題,通常是ks.cfg文件配置有問題,多是分區的被註釋掉了,把前面的"#"刪除掉,因爲每一個人的狀況可能不同,全部遇到問題就在網上多查查吧
五、更改boot時的選項,TFTP服務器上操做
# mkdir /var/lib/tftpboot/pxelinux.cfg/ # cp/media/cdrom/isolinux/isolinux.cfg ./pxelinux.cfg/default label linux menu label ^Install orupgrade an existing system menu default kernel vmlinuz append textinitrd=initrd.img text ks=http://192.168.100.12/ks.cfg #添加內容
六、最後一點,在DHCP的配置文件下指定下一個服務器,和獲取的文件
subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.10 192.168.100.30; option routers 192.168.100.10; #指定TFTP服務器的地址,指定下載的文件爲pexlinux.0 next-server 192.168.100.11; filename "pxelinux.0";
再次加載DHCP的配置文件:
#service dhcpd force-reload
3、測試階段:
開啓普通PC,它會自動以PXE的方式運行,下面,我將以圖片的形式展現
安裝各類安裝包
安裝結束後,系統會自動重啓,下面就是平時Linux的開機環境了,是否是很熟悉。
總結:這個PXE的實驗要求思路要清除,因此,你們在作實驗以前,必定要理清思路,而後再開始,遇到問題了,必定要多多本身解決,解決問題才能成長。