PXE (Preboot Excution Environment) 預啓動執行環境html
工做環境介紹:linux
要實現PXE自動網絡安裝CentOS至少須要兩臺主機vim
1)PXE服務器PXE Server(同時安裝DHCP,tftp,CentOS安裝yum源等)centos
2)準備經過網絡安裝系統的客戶機Clinetbash
3)準備好CentOS 6和CentOS 7兩個安裝光盤鏡像,並掛載.服務器
4)使用VMware等虛擬機時應給全部虛擬機的網卡分配爲僅主機或其餘與物理機所在局域網相隔離的模式,避免DHCP服務器對外部局域網形成混亂.網絡
工做步驟:app
1) Client開機,發廣播向DHCP服務器請求IP地址,PXE Server上的DHCP服務接收到請求後,驗證Client的MAC等信息經過後,發送一個可用IP地址給Client,並將啓動文件pxelinux.0的存放地址(TFTP提供)發送給Clientsocket
2)獲得地址的Client向TFTP服務器請求pxelinux.0文件,PXE Server(TFTP服務)向Client發送pxelinux.0的文件大小信息,Client驗證若是文件大小信息可接受,便返回贊成信息,以後TFTP服務向Client發送pxelinux.0文件ui
3)Client執行pxelinux.0文件,以後向TFTP請求配置信息文件,(TFTP服務工做目錄中的pxelinux.cfg/default),TFTP服務把配置文件發給Client
4)Client向TFTP服務請求Linux內核和根文件系統,TFTP服務將kernel(vmlinuz)和initramfs(initrd.img)文件傳給Client
5)Client啓動Linux內核,以後經過http協議獲得kickstart以及系統安裝文件,並根據kickstart文件自動安裝CentOS
實例:
下面一個實例來實現搭建可以同時自動安裝CentOS 6和CentOS7的PXE服務器:
實例以CentOS 7爲搭建環境.
須要安裝四個包:
dhcp,tftp-server,syslinux,httpd
]# yum install dhcp tftp-server syslinux httpd
全部服務設爲開機啓動
]# systemctl enable dhcpd ]# systemctl enable tftp.socket ]# systemctl enable httpd
dhcp: 爲Client分配ip地址
tftp服務: 輕量化的ftp服務,通常網卡中會內置tftp客戶端,無需操做系統支持即可實現文件下載.用於安裝系統前獲取啓動安裝系統所需的啓動文件等資源.
syslinux: syslinux是一個功能強大的引導加載程序,並且兼容各類介質。更加確切地說:SYSLINUX是一個小型的Linux操做系統,它的目的是簡化首次安裝Linux的時間,並創建修護或其它特殊用途的啓動盤。但咱們在這裏只須要用到syslinux包裏的某幾個文件.
httpd: 主要方便用來提供網絡資源下載.
tftp:
tftp服務不須要作什麼配置,安裝並啓動就能夠直接使用了.須要留意tftp的工做目錄爲/var/lib/tftpboot/
httpd:
httpd服務默認配置便可使用,這裏只須要記住httpd的文件目錄/var/www/html/
dhcp
cat /etc/dhcpd/dhcpd.conf
subnet部分修改成如下內容.
subnet 192.168.5.0 netmask 255.255.255.0 {
range 192.168.5.100 192.168.5.105;
next-server 192.168.5.72;
filename "pxelinux.0";
}
說明:
除此以外的其餘配置能夠註釋掉.
subnet 192.168.5.0 netmask 255.255.255.0
規劃一個能夠管理的子網段.能夠設定多個.
range 192.168.5.100 192.168.5.105;
表示能夠分配ip地址的範圍,例子中是100到105 一共6個地址
next-server 192.168.5.72;
網絡啓動時必備參數,表示tftp的IP地址.
filename "pxelinux.0";
啓動文件的文件名,位於tftp上.
/var/www/html/ 下須要的文件
]# tree -L 2 /var/www/html
├── centos
│ ├── 6
│ └── 7
└── ksdir
├── ks6-desktop.cfg
├── ks6-mini.cfg
├── ks7-desktop.cfg
└── ks7-mini.cfg
yum源
把centos6和centos7的光盤掛載到http工做目錄/var/www/html/中做爲yum源.
]# mkdir -p /var/www/html/centos/{6,7}
掛載光盤
]# mount /dev/sr1 /var/www/html/centos/6
]# mount /dev/sr0 /var/www/html/centos/7
修改/etc/fstab,實現開機自動掛載
LABEL=CentOS\0407\040x86_64 /var/www/html/centos/7 iso9660 ro 0 0
LABEL=CentOS_6.9_Final /var/www/html/centos/6 iso9660 ro 0 0
kickstart文件
我這裏提早準備了四個ks文件,分別爲CentOS 6 和7的桌面版本和最小化安裝版本,分別爲:
ks7-desktop.cfg,ks7-mini.cfg,ks6-desktop.cfg,ks6-mini.cfg
把他們放到/var/www/html/ksdir/下
]# mkdir /var/www/html/ksdir
修改ks文件中的相關參數:
只列出與本次安裝相關的參數
vim ks6-desktop.cfg
url --url=http://192.168.7.72/centos/6/
vim ks7-desktop.cfg
url --url=http://192.168.7.72/centos/7/
ks6-mini.cfg和ks7-mini.cfg對應上面兩個參數改爲同樣
/var/lib/tftpboot/ 目錄下須要的文件
├── 6
│ ├── initrd.img
│ └── vmlinuz
├── 7
│ ├── initrd.img
│ └── vmlinuz
├── boot.msg
├── pxelinux.0
├── pxelinux.cfg
│ └── default
├── splash.png
└── vesamenu.c32
啓動文件
這裏的文件爲用於啓動安裝程序的文件
pxelinux.0
]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
kernel(vmlinuz)
咱們須要用於啓動安裝程序的內核vmliuz,可從光盤複製
vesamenu.c32
菜單界面生成文件vesamenu.c32,這個菜單比menu.c32更美觀一些.配合須要的文件還有boot.msg和splash.png,也不須要區分CentOS版本,這裏直接用CentOS 7的文件.
]# cp /var/www/html/centos/7/isolinux/{vesamenu.c32,boot.msg,splash.png} /var/lib/tftpboot/ ]# mkdir /var/lib/tftpboot/{6,7} ]# cp /var/www/html/centos/6/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/6 ]# cp /var/www/html/centos/7/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/7
此外還須要一個菜單內容文件pxelinux.cfg/default
]# mkdir /var/lib/ftptboot/pxelinux.cfg ]# cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
按照規劃修改一下default內容
default vesamenu.c32
#prompt 1
timeout 60
display boot.msg
menu background splash.png
menu title PXE Install CentOS
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label c6desktop
menu label Install an CentOS ^6 desktop system
kernel 6/vmlinuz
append initrd=6/initrd.img ks=http://192.168.7.72/ksdir/ks6-desktop.cfg
label c7desktop
menu label Install an CentOS ^7 desktop system
kernel 7/vmlinuz
append initrd=7/initrd.img ks=http://192.168.7.72/ksdir/ks7-desktop.cfg
label c6mini
menu label Install an CentOS 6 mini system
kernel 6/vmlinuz
append initrd=6/initrd.img ks=http://192.168.7.72/ksdir/ks6-mini.cfg
label c7mini
menu label Install an CentOS 7 mini system
kernel 7/vmlinuz
append initrd=7/initrd.img ks=http://192.168.7.72/ksdir/ks7-mini.cfg
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
完成以後,啓動全部服務.
新建虛擬機Client,開機引導設備選network,等待安裝菜單的出現,選定要安裝的系統版本便可.