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方式之一安装

image-20200107151003747

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 

image-20200107161251967

在上图界面中,预先设置好安装系统的一些必要步骤,比如选择时区,root密码

基本配置(basic Configuration)

建议语言和键盘使用English,时区改为Asia/Shanghai,使用UTC时钟,设置好root用户密码

image-20200107161854688

安装方法(Installation Method)

执行全新安装,方法为FTP,ftp服务器为本机ip,目录为ftp根目录的相对路径

image-20200107162108117

引导装载程序选项(Boot Loader Options)

选择安装类型为“安装新引导装载程序”

分区信息(Partition Information)

如果有引导记录→清除主引导记录 分区→删除所有现存分区 磁盘标签→初始化磁盘标签

image-20200107164410165

布局(磁盘分区)→点击“添加”

挂载点设置为“/”,系统类型xfs,大小选择“使用磁盘上全部未用空间”

image-20200107164534050

网络配置(Network Configure)

添加网络设备

image-20200107164805765

防火墙配置

全部禁用

最后保存到/root/目录下,文件→保存

image-20200107164906427

修改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服务端关闭防火墙和沙盒,启动虚拟机即可

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0