回顧:
dhcp包有兩個:dhcpd和dhcrelay
dhcpd的配置文件:/etc/dhcp/dhcpd.conf
option routers GW;
option domain-name-servers IP,IP,IP;
default-lease-time;
max-lease-time;html
subnet NET netmask MASK { range ; ... } host HOST_ID { hardware ethernet MAC; fixed-address IP; } 分配信息庫: /var/lib/dhcp/dhcpd.leases~ 客戶端命令:dhclient -d:運行在前臺; 其餘配置選項: filename:指明引導文件名稱;能夠理解爲bootloader文件 next-server:指明引導所在的服務主機的IP地址;這個server通常爲tftp server 示例: filename "pxelinux.0"; next-server 172.18.100.6; tftp:trivial ftp瑣碎簡單ftp 使用udp協議
pxe:
PXE:preboot excution environment,Intel牽頭
流程:
沒有安裝操做系統的主機可以完成基於網絡引導的安裝或者啓動操做
一、客戶端的網卡必須支持網絡引導機制,而且調整爲第一啓動引導設備
二、主機喚醒以後,開始加載網絡引導應用時,網卡會在本地局域網絡中廣播一個rarp協議,得到一個IP地址,同時還會得到要加載的文件名稱和文件serverIP
二、文件會在內存中展開,基於此文件去加載一個內核文件(也是從server獲取),內核還須要依賴於initrd這樣的虛根來完成對真實根所在的設備的驅動的加載,內核文件一般是專爲系統安裝所設定的,所以若是給它配置了網絡屬性的話,接着這個內核文件還須要基於網絡把本身扮演成某種協議的客戶端,去啓動能加載安裝程序的程序包,在本地完成安裝並啓動應用程序,而此程序在另外一個基於http、ftp、nfs提供的yum倉庫服務器上,讀取kickstart文件,基於kickstart解決依賴關係,基於基礎鏡像倉庫完成後續的全部安裝過程。
網絡引導安裝會依賴於一個基礎鏡像倉庫(能夠理解爲一個yum倉庫)linux
CentOS: dhcp(ip/netmask,gw,dns;filename,next-server) tftp server(bootloader,kernel,initrd) yum repository(ftp,http,nfs) kickstart文件:自動完成操做 tftp server: centos6: chkconfig tftp on service xinetd restart centos7: systemctl start tftp.socket systemctl enable tftp.socket---設置爲開機自動啓動 默認的文件根目錄:/var/lib/tftpboot/
配置PXE環境:
CentOS 7:
yum -y install syslinuxredis
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot mkdir /var/lib/tftpboot/pxelinux.cfg/ vim /var/lib/tftpboot/pxelinux.cfg/default default menu.c32---以菜單方式顯示安裝界面或者引導界面 prompt 5---菜單界面顯示給用戶5秒鐘 timeout 30---菜單界面顯示超時,若是不選擇就超時 MENU TITLE CentOS 7 PXE Menu---MENU TITLE是固定的,後邊的字符串能夠隨便寫,指定一個菜單項 LABEL linux---標籤 MENU LABEL Install CentOS 7 x86_64---菜單中顯示的是什麼install後邊的字符串隨便寫,這是菜單某一個條目的標題 KERNEL vmlinuz---這個菜單項的內核 APPEND initrd=initrd.img---向內核附加的參數 inst.repo=http://192.168.10.9/centos/7/x86_64 LABEL linux_autoinst---標籤 MENU LABEL Install CentOS 7 x86_64 auto---菜單中顯示的是什麼install後邊的字符串隨便寫,這是菜單某一個條目的標題 KERNEL vmlinuz---這個菜單項的內核 APPEND initrd=initrd.img---向內核附加的參數 inst.repo=http://192.168.10.9/centos/7/x86_64 ks=http://192.168.10.9/kickstarts/centos7.cfg---kickstart文件 CentOS 6: yum -y install syslinux cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.png} /var/lib/tftpboot mkdir /var/lib/tftpboot/pxelinux.cfg/ cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default---編輯這個文件不須要指定inst.repo,只須要指定ks文件便可 內容以下所示: display boot.msg menu background splash.jpg menu title Welcom to CentOS 6.7! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #fffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #00000000 menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label zutoinst menu label ^Auto Install CentOS---^表示ctrl,表示一個控制符,表示按A快速定位 menu default kernel vmlinuz append initrd=initrd.img label linux menu label ^Install or upgrade an existing system kernel vmlinuz append initrd=initrd.img label vesa menu lebel Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img nomodeset---不作模式設定,啓動時使用600×480的基本顯卡驅動 label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append ~
而後把這臺server配置成dhcp服務器,
vim /etc/dhcp/dhcpd.conf
option domain-name "magedu.com";
option routers 192.168.10.9;
option domain-name-servers 172.18.0.1;vim
default-lease-time 43200;
max-lease-time 86400;centos
log-facility local7;服務器
而後建立一個倉庫:經過http協議來訪問
mkdir -pv /var/www/html/centos/7/x86_64
mount -r /dev/cdrom /var/ww/html/centos/7/x86_64---把cdrom中的文件掛載到http server中,看成yum倉庫
systemctl start httpd.service
而後建立一個kickstart文件
mkdir -pv /var/www/html/kickstarts
vim /var/www/html/kickstarts/centos7.cfg
install
xconfig --startxonboot
keyboard --vckeymap=cn --xlayouts='cn'
reboot
rootpw --iscrypted $HDHf2v4i$LMo.xGHfxQDOf8e043C.g/
timezone Asia/Shanghai
url --url="http://192.168.10.9/centos/7/x86_64"
lang zh_CN
user --groups=wheel --name=mageedu --password=$6$1eWr0etY$DfLZgqu... --isrypted --gecos="MageEdu"
firewall --disabled
network --bootproto=dhcp --device=eth0
auth --useshadow --passalgo=sha512
text
firstboot --disable
selinux --permissive
ignoredisk --only-use=sda
bootloader --location=mbr --boot-drive=sda
zerombr
clearpart --all --initlabel
part /boot --asprimary --fstype="xfs" --size=512
part swap --fstype="swap" --size=2048
part /usr --fstype="xfs" --size=20480
part / --fstype="xfs" --size=20480網絡
%packagesbr/>@base
@core
lftp
screen
wget
treeapp
%end
kickstart文件準備好了之後,
vim /etc/yum.repos.d/CentOS-Base.repo
把baseurl替換爲本地掛載的光盤文件路徑
baseurl=file:///var/www/html/centos/7/x86_64dom
yum -y install syslinux
rpm -ql syslinux---能夠看到有一個pxelinux.o文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
此時還須要內核文件(必定要與當前系統版本保持一致)和initrd文件
在/var/www/html/centos/7/x86_64/images/pxeboot下有initrd.img文件和vmlinuz內核文件
cp /var/www/html/centos/7/x86_64/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /usr/share/syslinux/{chain.c32,memdisk,menu.c32,mboot.c32} /var/lib/tftpboot/---還須要一些啓動菜單,centos7系統下選擇這些:menu.c32字符界面用到,vesamenu.c32圖形界面會用到,memdisk把內存當成磁盤,方便initrd須要
cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cd /pxelinux.cfg
vim default
default menu.c32---以菜單方式顯示安裝界面或者引導界面
prompt 5---菜單界面顯示給用戶5秒鐘
timeout 30---菜單界面顯示超時,若是不選擇就超時
MENU TITLE CentOS 7 PXE Menu---MENU TITLE是固定的,後邊的字符串能夠隨便寫,指定一個菜單項socket
LABEL linux---標籤 MENU LABEL Install CentOS 7 x86_64---菜單中顯示的是什麼install後邊的字符串隨便寫,這是菜單某一個條目的標題 KERNEL vmlinuz---這個菜單項的內核 APPEND initrd=initrd.img---向內核附加的參數 inst.repo=http://192.168.10.9/centos/7/x86_64 LABEL linux_autoinst---標籤 MENU LABEL Install CentOS 7 x86_64 auto---菜單中顯示的是什麼install後邊的字符串隨便寫,這是菜單某一個條目的標題 KERNEL vmlinuz---這個菜單項的內核 APPEND initrd=initrd.img---向內核附加的參數 inst.repo=http://192.168.10.9/centos/7/x86_64 ks=http://192.168.10.9/kickstarts/centos7.cfg---kickstart文件
systemctl start httpd.service
而後找一個客戶端就能夠用pxe網絡引導了,可是隻能到加載內核這一步,由於沒有指定安裝路徑,安裝程序,這裏能看到IP只是網卡的IP,不是內核的IP,由於沒有系統
在網絡引導出現菜單的時候,按table鍵,指定參數
vmlinuz initrd=initrd.img ip=192.168.10.11 netmask=255.255.255.0 inst.repo=http://192.168.10.9/centos/7/x86_64/---指定以前要配置內核的IP地址
可是每次安裝系統時指定IP等參數太麻煩了,因此能夠在default配置文件中添加
客戶端tftp 192.168.10.9---就能夠鏈接,出現tftp的命令行提示符,能夠使用help顯示幫助信息