首先交代環境。本地2台主機,一台windows主機,一台等待安裝centos的主機。2台主機在同一個區域網路。通過路由器自動擷取ip上網。
網上大多數pxe安裝方式都采用自己搭建dns伺服器的方式來進行,but,我們的dns伺服器就是一個小破路由器,自然是做不來這個事情。
是以經過一番google,決定使用dnsmasq來搞定我們的dns伺服器。臨時湊合用用(主要是,突然發現家裡沒有一個大一點的U盤,也是醉了),網絡環境:路由器網關 192.168.2.1,win ip:192.168.2.2,pxe server ip:192.168.2.3
1.win主機上,hyper-v虛拟一個centos,暫稱為 pxe server
hyper-v 安裝centos2.安裝配置dnsmasq。
#安裝dnsmasq
yum install dnsmasq
#配置dnsmasq
mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
vi /etc/dnsmasq.conf
#編輯如下類容
#網卡名字,通過ip addr擷取
interface=eno16777736,lo
domain=centos7.lan
# DHCP range-leases
dhcp-range= eno16777736,192.168.1.100,192.168.1.253,255.255.255.0,1h
# PXE
dhcp-boot=pxelinux.0,pxeserver,192.168.1.20
# Gateway
dhcp-option=3,192.168.1.1
# DNS
dhcp-option=6,92.168.1.1, 8.8.8.8
server=8.8.4.4
# Broadcast Address
dhcp-option=28,10.0.0.255
# NTP Server
dhcp-option=42,0.0.0.0
pxe-prompt="Press F8 for menu.", 60
pxe-service=x86PC, "Install CentOS 7 from network server 192.168.1.20", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot
參數解釋:
interface – 伺服器需要監聽并提供服務的網絡接口。
bind-interfaces – 取消注釋來綁定到該網絡接口
domain – 替換為你的域名。
dhcp-range – 替換為你的網絡掩碼定義的網段。
dhcp-boot – 替換該IP位址為你的網絡接口IP位址。
dhcp-option=3,192.168.1.1 – 替換該IP位址為你的網段的網關。
dhcp-option=6,92.168.1.1 – 替換該IP位址為你的DNS伺服器IP——可以定義多個IP位址。
server=8.8.4.4 – 這裡放置DNS轉發伺服器IP位址。
dhcp-option=28,10.0.0.255 – 替換該IP位址為網絡廣播位址——可選項。
dhcp-option=42,0.0.0.0 – 這裡放置網絡時鐘伺服器——可選項(0.0.0.0位址表示參考自身)。
pxe-prompt – 保持預設——按F8進入菜單,60秒等待時間。
pxe=service – 使用x86PC作為32為/64位架構,并在字元串引述中輸入菜單描述提示。其它類型值可以是:PC98,IAEFI,Alpha,Arcx86,IntelLeanClient,IA32EFI,BCEFI,XscaleEFI和X86-64EFI。
enable-tftp – 啟用内建TFTP伺服器。
tftp-root – 使用/var/lib/tftpboot——所有網絡啟動檔案所在位置。
3.安裝syslinux和tftp-server并完成配置
yum install syslinux
yum install tftp-server
#copy 安裝引導檔案
cp -r /usr/share/syslinux/* /var/lib/tftpboot
mkdir /var/lib/tftpboot/pxelinux.cfg
#建立安裝引導配置檔案并編輯為下面的内容
touch /var/lib/tftpboot/pxelinux.cfg/default
#我們使用syslinux引導安裝,通過ftp傳輸安裝包,是以,label 2,3,4可以删除。
default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
menu title ########## PXE Boot Menu ##########
label 1
menu label ^1) Install CentOS 7 x64 with Local Repo
kernel centos7/vmlinuz
#我們自己搭建的ftp位址:ftp://192.168.1.20/pub
append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount
label 2
menu label ^2) Install CentOS 7 x64 with <http://mirror.centos.org> Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86\_64/ devfs=nomount ip=dhcp
label 3
menu label ^3) Install CentOS 7 x64 with Local Repo using VNC
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount inst.vnc inst.vncpassword=password
label 4
menu label ^4) Boot from local drive
4.準備centos安裝包
#首先使用sftp之類的工具把我們的centos安裝鏡像上傳到我們的pxe server
#接着,挂在這個鏡像
5.mount -o loop /path/to/centos-dvd.iso /mnt
#建立tftp安裝檔案下載下傳目錄,并copy鏡像内的檔案到目錄
mkdir /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7
#安裝ftp。copy鏡像檔案到ftp目錄。此處目錄要和syslinux配置的引導配置檔案中的位址要一緻
yum install vsftpd
cp -r /mnt/* /var/ftp/pub/
#修改檔案權限
chmod -R 755 /var/ftp/pub
5.準備工作已完成,接下來就是配置需要安裝centos的主機了。
檢查主機闆是否開啟并支援了pxe安裝方式。大約就是進blos配置一下
無恥的盜一下圖:并且設定pxe為啟動順序第一位,然後儲存配置重新開機主機。
這個時候,不出意外的話,主機上就會顯示我們在pxe server裡配置syslinux引導菜單了。
選擇 label 1 開始安裝。
附上pxe server的日志