PXE(preboot execute environment)
预启动执行环境,工作于C/S的网络模式,支持工作站通过网络从远端服务器下载镜像,并支持通过网络启动操作系统
C/S:samba、ftp、dhcp、mysql、fastcgi
工作流程
1、PXE Client 从自己的网卡启动,向本网络中的DHCP服务器索取IP
2、DHCP服务器返回分配给客户机的IP以及PXE文件的放置位置(该文件一般放在一台TFTP服务器上)
3、PEX Client向本网络中的TFTP服务器索取pxelinux.0文件
4、PXE Client取得pxelinux.0文件之后执行该文件
5、根据pxelinux.0的执行结果,通过TFTP服务器加载内核和文件系统
6、进入安装画面,此时可以通过选择HTTP、FTP、NFS方式之一安装
kickstart –> ks 用来实现无人值守自动应答
涉及服务
- ftp:用于提供安装系统时用的rpm包的下载
- dhcp:为客户端分配ip地址
- tftp:小文件存储于分发,主要用于存放系统内核文件
部署PXE服务端环境
部署pxe所需要的一些镜像、内核
# 挂载光盘
[root@localhost ~]# mount /dev/cdrom /media/
# 编写本地yum源
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir 123
[root@localhost yum.repos.d]# mv C* 123/
[root@localhost yum.repos.d]# vim cyj.repo
[cyj]
name=cyj
baseurl=file:///media
enabled=1
gpgcheck=0
# 安装依赖所需包
[root@localhost ~]# yum -y install vsftpd dhcp xinetd tftp-server syslinux
# 创建ftp共享目录
[root@localhost ~]# mkdir /var/ftp/Centos
# 将光盘挂载的目录绑定到ftp共享目录,与光盘挂载目录同步
[root@localhost ~]# mount --bind /media/ /var/ftp/Centos
[root@localhost ~]# ls /var/ftp/Centos/
# 目录中有以下文件即可,也是在部署pxe安装系统的安装源
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@localhost ~]# mkdir -p /tftpboot/pxelinux.cfg
# 复制光盘挂载目录中的文件存放到tftp共享目录中
# vmlinuz是系统内核,initrd.img是初始化镜像,boot.msg是启动引导菜单文件
[root@localhost ~]# cp /media/isolinux/* /tftpboot
# 复制pxelinux.0文件,pxelinux.0为pxe引导程序文件,由syslinux提供
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/
[root@localhost ~]# cd /tftpboot/
[root@localhost tftpboot]# mv isolinux.cfg pxelinux.cfg/default
[root@localhost tftpboot]# vim pxelinux.cfg/default
修改:
timeout 10 # 超时时间为1s
定位到label linux处,删除默认的选择菜单,删除10行
删除以下内容
label linux
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
label check
menu label Test this ^media & install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
在删除的位置,重新定义选择菜单,只定义一个,意思是不需要选择,就执行这一个
label linux-pxe # label标签名为linux-pxe
menu label ^Install Centos Linux 7 via PXE # menu label菜单标签为Install Centos Linux 7 via PXE
menu default
Kernel vmlinuz # 指定内核文件,该文件存放在/tftpboot/下,也就是tftp的根目录
append initrd=initrd.img ks=ftp://本机ip/ks.cfg quiet
# 描述后续信息,initrd临时根文件系统initrd.img,存放在/tftpboot,
# ks自动应答文件的路径在ftp的根目录下,还没有做,一会不要做错
修改tftp的配置文件
[root@localhost ~]# vim /etc/xinetd.d/tftp
修改:
# tftp的根目录,更改为自己创建的
server_args = -s /tftpboot
# 改为no,不禁用tftp根目录,也就是开启
disable = no
配置dhcp
修改dhcp配置文件
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
修改
default-lease-time 666600; # 默认收回ip的时间
max-lease-time 6667200; # ip使用最大时间
# 将以下处之后的所有内容删除
subnet 10.152.187.0 netmask 255.255.255.0 {
}
修改为
subnet 192.168.1.0 netmask 255.255.255.0 { # 声明网段地址,和本地同网段
option routers 192.168.1.10; # 网关
option domain-name-servers 192.168.1.10; # 域名服务器,实验环境可不写
range 192.168.1.11 192.168.1.50; # ip分发范围
next-server 192.168.1.1; # tftp服务器的位置,本机ip
filename "pxelinux.0"; # pxe引导文件,相对路径,为tftp的根目录
}
配置ks,自动应答
实现无人值守安装
需要linux图形化操作
# 安装程序
[root@localhost ~]# yum -y install system-config-kickstart
# 直接运行,进入图形化界面
[root@localhost ~]# system-config-kickstart
在上图界面中,预先设置好安装系统的一些必要步骤,比如选择时区,root密码
基本配置(basic Configuration)
建议语言和键盘使用English,时区改为Asia/Shanghai,使用UTC时钟,设置好root用户密码
安装方法(Installation Method)
执行全新安装,方法为FTP,ftp服务器为本机ip,目录为ftp根目录的相对路径
引导装载程序选项(Boot Loader Options)
选择安装类型为“安装新引导装载程序”
分区信息(Partition Information)
如果有引导记录→清除主引导记录 分区→删除所有现存分区 磁盘标签→初始化磁盘标签
布局(磁盘分区)→点击“添加”
挂载点设置为“/”,系统类型xfs,大小选择“使用磁盘上全部未用空间”
网络配置(Network Configure)
添加网络设备
防火墙配置
全部禁用
最后保存到/root/目录下,文件→保存
修改ks.cfg文件
由于在图形化配置时,没有选择安装的软件包,所以需要借鉴本机所使用过的软件包,在本机的/root/目录下的anaconda-ks.cfg文件,和ks.cfg文件类似
将anaconda-ks.cfg文件中的%packages到%end部分的内容复制到ks.cfg
在ks.cfg文件的最后添加
user --name=mupei --password=123.com # 创建必要的普通用户
eula --agreed # 同意协议
需要将ks文件放到ftp根目录,用于共享使用
[root@localhost ~]# cp -a ks.cfg /var/ftp
[root@localhost ~]# chmod +r /var/ftp/ks.cfg # 给予读权限
启动服务
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl start xinetd # tftp
验证
新建虚拟机
网卡要和pxe服务端同一网卡,pxe服务端关闭防火墙和沙盒,启动虚拟机即可