文章

部署 PXE 服务器

部署 PXE 服务器

PXE(Preboot Execution Environment)是一种网络启动协议,它允许计算机通过网络从远程服务器上获取操作系统镜像并进行安装。

1.工作原理

  1. PXE客户机发出DHCP请求,向DHCP服务器申请IP地址。
  2. DHCP服务器响应PXE客户机的请求,自动从IP地址池中分配一个IP地址给PXE客户机,并且告知PXE客户机:TFTP服务器的IP地址和PXE引导程序文件pxelinux.0,默认在TFTP共享目录/var/lib/tftpboot/下
  3. PXE客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。
  4. TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。 5.PXE客户机通过网络来启动到系统安装主界面。
  5. PXE客户机向文件共享服务器(“ftp”、http、nfs等)发起获取centos或windows系统安装文件的请求。
  6. (vsftp)文件共享服务响应PXE客户机的请求,将共享的系统安装文件传输给PXE客户机。
  7. PXE客户机进入到安装提示向导界面,用户需要手动来完成系统安装的操作

1.安装并启用 DHCP 服务

1
2
yum -y install dhcp
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 

修改 /etc/dhcp/dhcpd.conf 配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ddns-update-style none;   // 禁止动态更新

# A slightly different configuration for an internal subnet.
subnet 192.168.242.0 netmask 255.255.255.0 {   #配置网段
  range 192.168.242.180 192.168.242.200;   #配置地址池
  option domain-name-servers ns1.internal.example.org;
  option domain-name "internal.example.org";
  option routers 192.168.242.133;  #配置网关
  default-lease-time 600;
  max-lease-time 7200;
  next-server 192.168.242.133;  #指定tftp服务器的地址
  filename "pxelinux.0";   #指定pxe引导程序的文件名
}
--------------------------------------
systemctl start dhcpd
systemctl enable dhcpd

2.安装并启用 TFTP 服务

1
yum -y install tftp-server xinetd

修改 /etc/xinetd.d/tftp 配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = no    #wait no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接,表示是否开启多线程一起工作,否则需要等待
        user                    = root
        server                    = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot    #指定TFTP根目录(引导文件的存储路径) -c允许上传
        disable                 = no   #disable no表示开启TFTP服务 
        per_source              = 11    #通过限制一个主机的最大连接数,从而防止某个主机独占某个服务,这里每个IP地址的连接数是11个
        cps                     = 100 2   #表示服务器最多启动100个连接,如果达到这个数目将停止启动新服务2秒。在此期间不接受任何请求
        flags                   = IPv4
}
1
2
3
4
systemctl start tftp         
systemctl enable tftp            
systemctl start xinetd            
systemctl enable xinetd      

3.准备 tftp 需要共享出去的文件

1
2
3
mount /dev/sr0 /mnt
cd /mnt/images/pxeboot
cp initrd.img vmlinuz /var/lib/tftpboot/

4.准备 PXE 引导程序

1
2
3
yum provides */pxelinux.0
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

5.配置启动菜单文件

1
mkdir /var/lib/tftpboot/pxelinux.cfg      

修改 /var/lib/tftpboot/pxelinux.cfg/default 配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
default auto              #指定默认入口名称
prompt 0                #设置是否等待用户选择,“1”表示等待用户控制 “0表示自动”
 
label auto                #图形安装(默认)引导入口,label 用来定义启动项
kernel vmlinuz              #kernel 和 append用来定义引导参数
append initrd=initrd.img method=ftp://192.168.242.133/centos7
 
label linux text            #文本安装引导入口
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.242.133/centos7
 
label linux rescue            #救援模式引导入口
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.242.133/centos7

6.安装 FTP 服务,准备 CentOS 7 安装源

1
2
3
4
5
yum -y install vsftpd               #安装vsftpd服务
mkdir /var/ftp/centos7              #在ftp根目录下创建目录centos7
cp -rf /mnt/* /var/ftp/centos7/     #将镜像文件强制复制到centos7目录中,可加&让它自己后台运行
systemctl start vsftpd              #开启vsftpd服务
systemctl enable vsftpd  
本文由作者按照 CC BY 4.0 进行授权