「Debian」- 搭建PXE服务

  CREATED BY JENKINSBOT

本文介绍了”如何手动搭建整个PXE环境,用于Debian的网络启动“。

如果你觉得手动部署整个PXE环境非常麻烦、或者管理不便,你可以考虑使用「Cobbler」服务,它是对PXE环境的封装,支持命令行管理、WEB管理、提供了相关的API。

环境概述

关需PXE客户端

Microserver Gen10,一台网卡支持PXE的设备,即支持PXE启动,作为PXE客户端。实际上客户端用什么无所谓,重要的是支持PXE启动。

关于PXE服务端

ThinkPad T540P,Debain 8,一台笔记本,用于搭建PEX环境:使用ISC DHCP提供DHCP服务;使用TFTP服务提供预启动文件;使用HTTP服务提供操作系统镜像;

网络环境

网段:172.31.250.0/24
服务:ThinkPad T540P, 172.31.250.1
客户:Microserver Gen10, 172.31.250.X, IP地址是DHCP分配的,所以X要启动了之后才知道

两台设备有线网卡直连(因为路由器的DHCP也不支持那么复杂的配置,所以直连,已使用笔记本上的DHCP服务)。

在笔记本上有两张网卡,一张是enp0s25(有线),一张是wlan0(无线)。计划:将笔记本设置成路由,使PXE CLINET接入有线网卡,无线网卡连接外网,然后使用SNAT(因为在STATION MODE下无线网卡无法桥接[1])实现PXE CLIENT的外部网络访问。

搭建环境

#1 网络设置

#!/bin/sh

nmcli connection add connection.id enp0s25-as-router \
      type ethernet connection.interface-name enp0s25 \
      ipv4.addresses 172.31.250.1/24 \
      ipv4.method manual

#2 搭建DCHP服务

subnet 172.31.250.0 netmask 255.255.255.0 {
        range 172.31.250.2 172.31.250.254;
        filename "/pxelinux.0";
        next-server 172.31.250.1;
}

#3 搭建TFTP服务

#!/bin/sh

################################################################################
# 1. 安装服务,并启动
#     在Debain 8中,配置文件为/etc/default/tftpd-hpa,TFTP的根目录为/srv/tftp/。
#     不需要做过多的配置。
################################################################################
apt-get install tftpd-hpa
systemctl start tftpd-hpa.service

################################################################################
# 2. 准备部署需要的文件
################################################################################
# 下载必要的网启文件:https://www.debian.org/distrib/netinst#netboot
# http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz
wget http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz

# 解压到TFTP的根目录
tar -xf netboot.tar.gz -C /srv/tftp/

#4 搭建HTTP服务(镜像站点)

为什么要搭建HTTP服务?

在TFTP中的那些文件只是一些”引导文件“,这些”引导文件“的作用就是引导并启动”操作系统安装程序“,而”操作系统安装程序“来执行操作系统的安装,但是安装操作系统的过程中需要一些文件(比如软件包),这些文件我们还没有。

而HTTP服务的作用就是提供这些文件的下载。所以,我们不光需要HTTP服务,我们还需要在HTTP服务中部署这些文件(软件包)。

所以真正要做的事情是:克隆一个Debian的镜像站点,并且提供HTTP服务,能够让”PXE客户端“(准确的说是”操作系统安装程序“)。

还有一个替代的方法:在”操作系统安装程序“中,他会让你选择镜像站点,我们是自己搭建,实际上它提供了在线的镜像站点。如果网络允许你可以选择在线镜像站点。

注意,下载的ISO镜像的目录结构虽然和镜像站看起来一样,但是有很多细微的不同支持,并不能直接挂载后作为镜像站来使用。

这里就不介绍如何创建镜像站点,参考「Setting up a Debian archive mirror」手册。

测试PXE启动

测试时,我使用在KVM中创建的Guest测试,因为GEN10的PXE启动没有调试信息,失败了啥也不说。这里也不再开细致的记录了。

总之,你只要能找到网卡支持PXE启动的机器测试就可以。

关于无人值守安装,参考:

还有一个东西是「FAI」,一个非交互式系统,用于在计算机和虚拟机上安装和配置Linux系统和软件包,可用于创建虚拟机或云计算平台中使用的自定义磁盘映像。

注释说明

[1]. 如果你的无线网卡已经接入了外部网络(STATION MODE),那它就无法加入主机的桥接。

参考文献

Installing Debian using network booting
Setting Up a PXE Server
使用KickStart进行CentOS7.4 的自动部署安装
网络PXE安装系统环境搭建
2.4.3. Configuring Static Routes Using nmcli