1、實現原理
所須要的服務簡單介紹
1.DHCP:動態主機配置協議,用於內部網絡自動分配IP地址
2.tfpt:簡單的網絡共享服務,相似於ftp
3.pxe:支持遠程主機經過網絡從遠端服務器下載映像,並由此支持經過網絡啓動操做系統
4.http:超文本傳輸協議,經過網絡共享文本(這裏也能夠使用ftp服務)
實現過程
1.客戶端(沒有裝系統的計算機)經過在局域網內尋找DHCP服務器
2.DHCP服務器迴應,發送IP地址給該客戶端而且告訴該客戶端下一步尋找哪個服務器,也就是TFTP
3.客戶端向TFTP要BootLoader
4.TFTP服務器將pxelinux.0相關文件交給客戶端
5.客戶端向TFTP服務器要內核文件和initrd.img
6.TFTP將這兩個文件路徑告訴客戶端
7.客戶端經過pxe提供的路徑向http服務要ks.cfg(自應答文件)
8.客戶端根據ks.cfg文件中指定的安裝路徑尋找安裝所須要的文件
2、實現所須要的步驟
1.將虛擬機自己自帶的dhcp關閉,而且將充當DHCP服務器主機IP改成靜態地址,而且將防火牆和selinux關閉html
[root@centos7 tftpboot]# nmcli connection modify ens34 ipv4.method manual ipv4.addresses 192.168.0.254/24 #配置網卡信息 [root@centos7 tftpboot]# nmcli connection down ens34 #禁用 [root@centos7 tftpboot]# nmcli connection up ens34 #啓用 [root@centos7 tftpboot]# sed -ri 's/(SELINUX=).*/\1disabled/' /etc/selinux/config #將selinux設置成關閉 [root@centos7 tftpboot]# systemctl stop firewalld.service #禁用防火牆 [root@centos7 tftpboot]# systemctl disable firewalld.service
2.將虛擬添加3個光驅設備,分別掛載5,6,7三個系統的鏡像,爲了安裝後期所須要的http服務,這裏須要臨時掛載CentOS 7的光盤鏡像linux
[root@centos7 ~]# mount /dev/cdrom /mnt/ #臨時掛載 [root@centos7 yum.repos.d]# cat /etc/yum.repos.d/base.repo [base] name=base baseurl=file:///mnt gpgcheck=0
3.安裝自動安裝系統所須要的服務vim
[root@centos7 yum.repos.d]# yum install -y httpd dhcp tftp-service syslinux #安裝服務
4.在/var/www/html目錄下建立各個版本的掛載路徑和自應答文件目錄,而且將光盤所對應的目錄寫入/etc.fstab文件中,使其永久生效centos
[root@centos7 yum.repos.d]# mkdir /var/www/html/centos/{5,6,7,ksdir} #建立對用的文件,對應關係須要根據實際狀況 [root@centos7 6]# vim /etc/fstab /dev/sr0 /var/www/html/centos/5 iso9660 defaults 0 0 /dev/sr1 /var/www/html/centos/6 iso9660 defaults 0 0 /dev/sr2 /var/www/html/centos/7 iso9660 defaults 0 0
5.建立自應答文件,該文件也可在系統安裝完成後,會在/root目錄下生成一個anaconda-ks.cfg的文件服務器
[root@centos7 tftpboot]# yum install -y system-config-kickstart.noarch #安裝生成自應答文件的工具 [root@centos7 tftpboot]system-config-kickstart [root@centos7 ~]# ksvalidator anaconda-ks.cfg #檢查該文件語法6 7 通用
注意,在該界面中,若在centos5上建立,倉庫的 " [ ] "內須要填寫base,centos7中則須要填寫development,不然,在Package Selection 界面不會顯示選擇在安裝系統是所須要的軟件包 centos6則隨意填寫網絡
軟件包根據須要的進行選擇,而後保存
6.將三個系統的自應答文件存放到/var/www/html/centos/ksdir/目錄下
7.配置DHCP服務器app
[root@centos7 tftpboot]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf #配置文件 option domain-name "lin.com"; #域名 option domain-name-servers 192.168.0.254; # default-lease-time 600; #租期 max-lease-time 7200; #用戶可調最大 log-facility local7; #日誌文件 subnet 192.168.0.0 netmask 255.255.255.0 { #自動過去的網段 range 192.168.0.2 192.168.0.253; #分發的地址範圍 option routers 192.168.0.254; #網關 next-server 192.168.0.254; #tftp服務ip filename "pxelinux.0"; #找的文件名 }
8.將系統的內核文件和initrd.img文件複製到各個版本的目錄下dom
[root@centos7 tftpboot]# mkdir /var/lib/tftpboot/centos{5,6,7} [root@centos7 tftpboot]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@centos7 tftpboot]# cp /var/www/html/centos/5/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos5/ [root@centos7 tftpboot]# cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos6/ [root@centos7 tftpboot]# cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7/
9.拷貝pxe須要的配置文件ide
[root@centos7 tftpboot]# cp /usr/share/syslinux/{menu.c32,pxelinux.0} . #當前目錄/var/lib/tftpboot/ [root@centos7 tftpboot]# cp /var/www/html/centos/7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
10.配置/var/lib/tftpboot/pxelinux.cfg/default文件,做用是讓用戶選擇安裝的系統版本工具
[root@lin pxelinux.cfg]# cat default default menu.c32 timeout 600 #不選擇默認多少秒進入默認選項 display boot.msg menu title AutoInstall CentOS 5,6,7 label centos 5 mini menu label ^Install CentOS 5 kernel centos5/vmlinuz append initrd=centos5/initrd.img ks=http://192.168.0.254/centos/ksdir/ks5.cfg #centos5的ks.cfg文件 label centos 6 mini menu label I^nstall CentOS 6 kernel centos6/vmlinuz #這裏的路徑是填的以/var/lib/tftpboot爲路徑的相對路徑 append initrd=centos6/initrd.img ks=http://192.168.0.254/centos/ksdir/ks6.cfg #centos6的ks.cfg文件 label centos 7 mini menu label In^stall CentOS 7 kernel centos7/vmlinuz append initrd=centos7/initrd.img ks=http://192.168.0.254/centos/ksdir/ks7.cfg #centos7的ks.cfg文件 label local #若不選在則默認從硬盤啓動 menu label Boot from ^local drive localboot 0xffff menu default menu end
自此實現自動化安裝系統