通过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
编辑完网络接口文件后,保存并关闭文件并关闭网络接口,然后启动以应用设置,方法是发出以下命令。 假定您的网络接口卡名为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.0或bootnetx64.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接口行,如下面的示例所述。 确保您添加适当的网络接口卡名称。 使用ip或ifconfig命令列出您的机器网络接口并找到正确的名称。
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
另外,执行ss或netstat命令列出所有由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_OPTIONS行有以下内容,请确保删除--create标志以保护TFTP服务器。
TFTP_OPTIONS="--secure --create"
创建标志允许远程客户端上传文件到tftp服务器。 此选项是危险的,因为任意用户可以从TFTP服务器根路径上载或删除文件。
最后,启用全系统服务并启动TFTP服务器,并通过发出以下一系列命令来检查tftp守护进程状态:
systemctl enable tftpd-hpa
systemctl start tftpd-hpa
systemctl status tftpd-hpa
您还应该执行netstat或ss命令,以便列出系统中所有处于监听状态的开放网络套接字。 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 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/
接下来,通过发出以下命令为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
您也可以执行以下命令查看TFTP服务器生成的日志信息。
journalctl -fu tftpd-hpa
要显示有关DHCP服务器授予其客户端的租约的扩展信息,请使用cat命令显示dhcpd.leases文件的内容,如下例所示。
cat /var/lib/dhcp/dhcpd.leases
就这样! 您已经在网络中成功部署了PXE服务器。 您现在可以通过指示客户机通过PXE启动来开始在网络上安装Debian。 在机器POST初始化期间,您可以通过按特殊功能键来联网启动客户机。 请查阅您的机器主板供应商文档以找出正确的网络启动密钥。
通过网络安装Debian的过程与通过DVD ISO映像或使用可引导的USB闪存驱动器安装系统的过程非常相似(仅有少许差异)。