回顾:
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显示帮助信息