通过PXE网络引导服务器安装Debian 9(Stretch)

在本教程中,我们将指导您如何通过具有Internet远程HTTP镜像源的PXE服务器来安装最新版本的Debian 9服务器。

通过PXE网络引导服务器安装Debian 9(Stretch)

在本教程中,我们将指导您如何通过PXE服务器安装最新版本的Debian 9服务器,并使用Debian归档镜像提供的Internet远程HTTP镜像源。 我们将在本教程中使用的DHCP服务器设置PXE环境为ISC-DHCP服务器,netboot Debian文件将由TFTPD-HPA服务器在本地网络上提供。 通过PXE安装系统可以提高安装速度,以及在短时间内部署多个Debian安装的情况下,或者在机器未配备CD / DVD ROM单元的情况下。

要求

  • Debian 9安装在裸机或虚拟机上。
  • 为网段配置静态IP地址的网络接口,用于动态分配IP地址和其他相关的DHCP和PXE设置。
  • 具有root权限的本地或远程帐户到Debian服务器,或通过服务器控制台直接访问root帐户或通过SSH远程访问。
  • 需要通过网络安装Debian的互联网连接。

初始配置

在第一步中,您需要确保我们将用于安装新服务器的Debian系统具有用于绑定到配置了静态IP地址的DHCP服务器的网络接口。

为了手动配置您的网络接口卡,打开网络接口文件并使用您喜欢的文本编辑器(如nano)编辑以下行。 替换下面介绍的IP设置行以匹配您自己的网络配置。

sudo nano /etc/network/interfaces

接口文件摘录:

auto ens33
iface ens33 inet static
address 192.168.1.102
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.2 8.8.4.4
dns-search debian.local

Debian网络配置

编辑完网络接口文件后,保存并关闭文件并关闭网络接口,然后启动以应用设置,方法是发出以下命令。 假定您的网络接口卡名为ens33,请发出以下命令来禁用和启用NIC。

ifdown ens33

ifup ens33

要检查是否为网络接口配置了新的IP地址,请发出以下命令。

ip a

应用网络配置

有时,只需重新启动联网守护程序或禁用和启用接口,IP设置就不适用。 在这种情况下,您应该使用以下命令重新启动系统。

init 6

要么

systemctl reboot

您还应该通过执行以下命令来执行完整的系统更新:

apt update

apt upgrade

在下一步中,执行以下命令以安装一些必要的实用程序,这些实用程序将用于从命令行进一步管理您的系统。

apt install wget bash-completion unzip

安装并配置ISC-DHCP服务器

为了设置DHCP服务器和PXE配置,请使用root帐户或具有root权限的帐户登录系统,并通过发出以下命令安装Debian 9存储库提供的isc-dhcp-server软件包。

apt install isc-dhcp-server

现在备份ISC-DHCP服务器主配置文件,编辑dhcpc服务器配置文件,包含以下设置。

mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup

nano /etc/dhcp/dhcpd.conf

dhcpcd.conf文件摘录:

ddns-update-style none;
option option-128 code 128 = string;
option option-129 code 129 = text;
authoritative;
log-facility local7;
option arch code 93 = unsigned integer 16;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.50 192.168.1.100;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
option subnet-mask 255.255.255.0;
option ntp-servers 192.168.1.102;
option time-servers 192.168.1.102;

option domain-name "debian.local";
option domain-name-servers 192.168.1.1, 192.168.1.2;
allow booting;
allow bootp;
if option arch = 00:07 or option arch = 00:09 {
filename "bootnetx64.efi";
} else {
filename "pxelinux.0";
}
next-server 192.168.1.102;

#default lease 4H, max lease 8H
default-lease-time 14400;
max-lease-time 28800;

}

host nas {
hardware ethernet 00:17:a4:f6:b2:2e;
fixed-address 192.168.1.105;
}

在上面的配置文件中,相应地替换下面的行。

subnet {..
range 192.168.1.50 192.168.1.100;

为DHCP定义自己的网络范围,将IP分配给该网段

选项路由器 =设置您的网关IP

选项broadcast-address =设置你的网络广播地址

选项subnet-mask =设置您的网络子网掩码地址

选项ntp-servers

选项time-servers =设置您的网络NTP服务器IP地址

选项domain-name =设置你的网络域名,如果有的话

选项domain-name-servers =设置您的网络DNS服务器IP地址

如果选项arch = 00:07或选项arch = 00:09 =如果最终设备是基于UEFI的计算机,请使用bootnetx64.efi文件启动设备,或使用不是基于UEFI的任何其他计算机启动pxelinux.0文件。 这些机器通常是较旧的BIOS系统。

next-server 192.168.1.102 =这是TFTP服务器的IP地址,可以在网络中找到文件pxelinux.0bootnetx64.efi 。 在这种情况下,TFTP服务器位于同一台机器上。

default-lease-time =默认授予IP地址的时间,以秒为单位。

max-lease-time =授予IP地址的最大时间,以秒为单位。

host nas {
hardware ethernet 00:17:a4:f6:b2:2e;
fixed-address 192.168.1.105;
}

这是如何在DHCP服务器中声明一个静态IP地址。 具有由硬件以太网语句定义的MAC地址的设备将始终获得相同的IP地址。 声明的主机名不重要。 您可以使用任何字符串作为主机名。

然后打开/ etc / default /目录下的 isc-dhcp-server文件进行编辑,导航到文件末尾,并将配置了静态IP地址的网络接口卡添加到IPv4接口行,如下面的示例所述。 确保您添加适当的网络接口卡名称。 使用ipifconfig命令列出您的机器网络接口并找到正确的名称。

nano /etc/default/isc-dhcp-server

isc-dhcp-server默认文件摘录:

INTERFACESv4=”ens33”

设置网络接口名称

最后,重新启动DHCP守护程序以应用更改。 通过执行以下命令检查DHCP服务状态,以验证服务是否已启动。

systemctl restart isc-dhcp-server.service

systemctl status isc-dhcp-server.service

重新启动DHCP服务

另外,执行ssnetstat命令列出所有由DHCP服务器打开的套接字。

netstat –tulpn

ss –tulpn

网络状态

如果系统中未安装netstat实用程序,请发出以下命令进行安装。

apt install net-tools

安装TFTP服务器

为了提供客户端通过PXE和TFTP远程启动Debian所需的网络文件,您还需要在系统中安装一个TFTP服务器。 tftpd-hpa服务器是可用于局域网的最常见和安全的TFTP服务器之一。 TFTP-HPA软件包可以从Debian 9提供的官方软件库中安装。执行以下命令在Debian 9中安装tftpd-hpa服务器。

apt install tftpd-hpa

软件包安装完成后,打开TFTPD-HPA默认配置文件并确保文件具有以下内容。

nano /etc/default/tftpd-hpa

tftpd-hpa文件摘录:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

TFTP服务器配置

如果TFTP_OPTIONS行有以下内容,请确保删除--create标志以保护TFTP服务器。

TFTP_OPTIONS="--secure --create"

创建标志允许远程客户端上传文件到tftp服务器。 此选项是危险的,因为任意用户可以从TFTP服务器根路径上载或删除文件。

最后,启用全系统服务并启动TFTP服务器,并通过发出以下一系列命令来检查tftp守护进程状态:

systemctl enable tftpd-hpa

systemctl start tftpd-hpa

systemctl status tftpd-hpa

重新启动TFTP服务器

您还应该执行netstatss命令,以便列出系统中所有处于监听状态的开放网络套接字。 DHCP和TFTP服务器所需的以下UDP端口应该在您的网络中打开:67和69.您应该通过发出以下命令在防火墙中打开这些端口:

ufw allow 67/udp

ufw allow 69/udp

如果您使用iptables原始规则管理Debian服务器中的防火墙策略,请添加以下规则,以允许端口67和69 UDP入站流量通过防火墙,以便客户端可以访问DHCP和TFTP服务器。

apt-get install iptables-persistent

iptables -A INPUT -p udp --dport 67 -j ACCEPT

iptables -A INPUT -p udp --dport 69 -j ACCEPT

systemctl iptables-persistent save

systemctl iptables-persistent reload

在下一步中,我们将通过发出以下命令来安装Syslinux引导加载程序实用程序。

apt install syslinux-utils syslinux

部署Debian 9 Netboot文件

接下来,进入Debian netinstall网页https://www.debian.org/distrib/netinst并使用wget命令行工具下载最新版本的Debian netboot archive tarball。

wget http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz

下载Debian的netboot映像

下载Debian netinstall tarball之后,通过运行以下命令将归档内容直接提取到TFTP根路径。

tar xfz netboot.tar.gz -C /srv/tftp/

同时将Syslinux软件包提供的memdisk文件复制到TFTP根路径,并通过执行以下命令列出TFTP目录的内容。 / srv / tftp目录的内容应该如下图所示。

cp /usr/lib/syslinux/memdisk /srv/tftp/

ls /srv/tftp/

复制memdisk映像

接下来,通过发出以下命令为Debian netinstall软件包提供的UEFI引导加载程序文件创建一个符号链接到TFTP根路径。 此外,请长时间列出TFTP目录以查看软链接是否正确指向UEFI网络文件。

ln -s /srv/tftp/debian-installer/amd64/bootnetx64.efi /srv/tftp/

ls -l /srv/tftp/

文件列表

PXE服务器按以下顺序从TFTP根路径读取并执行位于pxelinux.cfg目录中的配置文件:GUID文件,MAC文件和默认文件。 目录pxelinux.cfg已经创建并填充了所需的PXE默认配置文件,因为我们之前已经将所需的netboot文件从Debian netinstall归档文件解压到/ srv / tftp sirectory。 没有必要从pxelinux.cfg目录进一步修改PXE默认配置文件。 但是,实际控制Debian的初始引导菜单的文件名为txt.cfg ,位于/ srv / tftp / debian-installer / amd64 / boot-screens /目录中。 pxelinux.cfg中的默认pxe配置文件 目录实际上是一个指向txt.cfg文件的软链接。 为了在网络启动过程中更改或添加其他选项以传递给内核,或者通过PXE服务器添加其他条目或启动其他Linux发行版,您应该使用以下命令打开默认的txt.cfg PXE配置文件,并使适当的变化。

nano /srv/tftp/debian-installer/amd64/boot-screens/txt.cfg

t xt.cfg 文件摘录:

label install
menu label ^Install
kernel debian-installer/amd64/linux
append vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet

如果您想通过PXE使用Debian救援模式,请使用以下配置为此文件添加条目。

label rescue
menu label ^Rescue mode
kernel debian-installer/amd64/linux
append vga=788 initrd=debian-installer/amd64/initrd.gz rescue/enable=true --- quiet

要添加在专家模式下通过网络引导Debian所需的条目,或使用自动安装模式,请将其他配置添加到txt.cfg文件中,如以下摘录所示。

专家安装:

label expert
menu label ^Expert install
kernel debian-installer/amd64/linux
append priority=low vga=788 initrd=debian-installer/amd64/initrd.gz ---
include debian-installer/amd64/boot-screens/rqtxt.cfg

自动安装:

label auto
menu label ^Automated install
kernel debian-installer/amd64/linux
append auto=true priority=critical vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet

另外,通过检查这个文件的内容,你会发现在初始PXE菜单之后,通过TFTP网络协议加载到客户端RAM内存的内核initrd.gz映像位于/ srv / tftp / debian卸载器/ AMD64 / 目录。 您只能更改这两个文件,以便将来更新Debian内核和initrd.gz。

就这样! 现在可以通过网络启动客户机,使用通过DVD映像启动Debian时显示的所有条目,并开始通过PXE服务器安装Debian 9。

为了看到在客户端和服务器之间实时交换的DHCP日志消息,使用tail命令对系统日志文件。 DHCP服务器将其所有日志消息丢弃到系统日志文件。 可以通过daemon.log文件观察TFTP服务器日志消息。 以下屏幕截图显示了由DHCP和TFTP服务器发布的日志消息的摘录。

tailf /var/log/syslog

tailf /var/log/daemon.log

Debian DHCPD日志文件

守护程序日志文件

您也可以执行以下命令查看TFTP服务器生成的日志信息。

journalctl -fu tftpd-hpa

要显示有关DHCP服务器授予其客户端的租约的扩展信息,请使用cat命令显示dhcpd.leases文件的内容,如下例所示。

cat /var/lib/dhcp/dhcpd.leases

为dhcpd.leases

就这样! 您已经在网络中成功部署了PXE服务器。 您现在可以通过指示客户机通过PXE启动来开始在网络上安装Debian。 在机器POST初始化期间,您可以通过按特殊功能键来联网启动客户机。 请查阅您的机器主板供应商文档以找出正确的网络启动密钥。

通过网络安装Debian的过程与通过DVD ISO映像或使用可引导的USB闪存驱动器安装系统的过程非常相似(仅有少许差异)。