找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1153

积分

0

好友

162

主题
发表于 3 天前 | 查看: 8| 回复: 0

一、PXE技术简介

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的一种网络引导技术。它基于Client/Server模式工作,允许客户端计算机(无本地操作系统)通过网络从远端服务器下载引导文件和系统映像,从而实现操作系统的远程启动与安装。简而言之,PXE提供了一种标准化的方式,让计算机在启动初期即可连接到网络并获取启动资源,是自动化运维和批量系统部署的关键技术之一。需要注意的是,PXE本身是一种引导方式,而非具体的安装方式。

二、PXE工作原理详解

PXE引导过程是一个有序的网络交互序列,具体步骤如下:

  1. DHCP请求与响应:客户端开机后,其PXE固件向网络中的DHCP服务器广播请求。DHCP服务器验证客户端MAC地址后,分配一个IP地址,并告知客户端TFTP服务器的地址以及引导文件pxelinux.0的位置。
  2. 获取引导程序:客户端根据获得的信息,向TFTP服务器请求pxelinux.0文件。经过简单的协商后,TFTP服务器将该文件传输给客户端。
  3. 执行引导程序:客户端加载并执行pxelinux.0
  4. 获取配置文件:引导程序继续向TFTP服务器请求针对本机的配置文件(通常位于pxelinux.cfg/目录下)。TFTP服务器返回配置文件(如default),其中包含了内核启动参数和后续步骤的指示。
  5. 下载Linux内核:根据配置文件的指示,客户端从TFTP服务器下载Linux内核文件(vmlinuz)。
  6. 下载初始内存盘:客户端接着下载初始内存盘文件(initrd),其中包含了启动阶段必需的驱动和工具。
  7. 启动内核:客户端使用下载的内核和initrd启动Linux系统,启动参数已在第4步的配置文件中设置完毕。
  8. 自动化安装:启动后的系统通过HTTP或NFS协议从服务器下载完整的操作系统镜像和自动化安装脚本(如user-data),进入完全无人值守的安装流程,直至安装完成。

三、PXE服务端部署实战(Ubuntu 24.04)

3.1 环境准备与注意事项

  • 实验环境:本教程基于VMware虚拟机环境。请确保关闭VMware虚拟网络(如VMnet8)的自带DHCP服务,以避免与后续部署的DHCP服务冲突。
  • 网络配置:请将PXE客户端(待安装机器)的网络配置为与服务端同一网段。

3.2 服务器基础信息确认

确保服务端(以下示例IP为192.168.52.100)网络畅通。

# 查看服务器版本
cat /etc/os-release

# 查看网络配置 (Netplan)
cat /etc/netplan/50-cloud-init.yaml

# 测试网络连通性
curl -I https://www.baidu.com

# 关闭防火墙(实验环境,生产环境请配置规则)
sudo ufw disable

3.3 安装并配置DHCP服务

DHCP服务用于为PXE客户端分配IP地址并告知其引导信息。

# 更新源并安装必要软件
apt-get update -y
apt-get install isc-dhcp-server tftpd-hpa apache2 syslinux-common pxelinux -y

# 配置DHCP服务器
# 编辑 /etc/dhcp/dhcpd.conf,关键配置如下:
cat << EOF > /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
subnet 192.168.52.0 netmask 255.255.255.0 {
  range 192.168.52.150 192.168.52.200;
  option routers 192.168.52.1;
  option subnet-mask 255.255.255.0;
  option domain-name-servers 8.8.8.8;
  next-server 192.168.52.100; # 指定TFTP服务器地址
  filename "pxelinux.0";       # 指定引导文件名
}
EOF

# 启动并设置开机自启
systemctl restart isc-dhcp-server
systemctl enable isc-dhcp-server
systemctl status isc-dhcp-server

3.4 配置TFTP服务

TFTP服务用于提供轻量级的引导文件传输。

# 创建TFTP目录并复制必要的PXE引导文件
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /usr/lib/syslinux/modules/bios/{ldlinux.c32,libutil.c32,menu.c32} /var/lib/tftpboot/
cp /usr/lib/PXELINUX/pxelinux.0 /var/lib/tftpboot/

# 配置TFTP服务根目录
cat << EOF > /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot/"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
EOF

# 重启TFTP服务
systemctl restart tftpd-hpa
systemctl enable tftpd-hpa
systemctl status tftpd-hpa

3.5 配置HTTP服务与引导菜单

Apache HTTP服务用于提供大型的系统镜像和自动安装配置文件。

# 创建存放镜像和配置的目录
mkdir -p /var/www/html/iso /var/www/html/autoinstall

# 配置PXE引导菜单
cat << EOF > /var/lib/tftpboot/pxelinux.cfg/default
DEFAULT menu.c32
MENU TITLE PXE Boot Menu
PROMPT 0
TIMEOUT 30

LABEL Ubuntu 24.04 Auto Install
MENU LABEL Install Ubuntu 24.04 (Autoinstall)
KERNEL vmlinuz
INITRD initrd
APPEND root=/dev/ram0 ramdisk_size=1024 ip=dhcp url=http://192.168.52.100/iso/ubuntu-24.04.3-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://192.168.52.100/autoinstall/ cloud-config-url=/dev/null
EOF

# 挂载Ubuntu镜像并提取内核文件
mount /var/www/html/iso/ubuntu-24.04.3-live-server-amd64.iso /mnt/
cp /mnt/casper/vmlinuz /var/lib/tftpboot/
cp /mnt/casper/initrd /var/lib/tftpboot/
umount /mnt

3.6 配置Ubuntu自动安装文件

这是实现无人值守的核心,通过user-data文件定义安装参数。

# 创建自动安装所需的标识文件
cat << EOF > /var/www/html/autoinstall/meta-data
instance-id: ubuntu-autoinstall
EOF

# 创建主要的自动安装配置
cat << EOF > /var/www/html/autoinstall/user-data
autoinstall:
  version: 1
  identity:
    hostname: u22
    password: \"2008.com.cn\"
    username: wk
  source:
    id: ubuntu-server
  storage:
    layout:
      name: lvm
      sizing-policy: all
  ssh:
    install-server: true
    allow-pw: true
  packages:
    - wireguard
  kernel-crash-dumps:
     enabled: false
  timezone: \"Asia/Shanghai\"
  late-commands:
    - curtin in-target -- sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
    - curtin in-target -- systemctl restart sshd
    - curtin in-target -- systemctl stop cloud-init
    - curtin in-target -- systemctl disable cloud-init
    - curtin in-target -- apt-get purge -y cloud-init
EOF

# 创建空的供应商数据文件(可选)
touch /var/www/html/autoinstall/vendor-data

# 设置目录权限
chmod -R 755 /var/www/html/

# 重启所有服务使配置生效
systemctl restart isc-dhcp-server tftpd-hpa apache2
systemctl status isc-dhcp-server tftpd-hpa apache2

四、创建并启动PXE客户端

  1. 在虚拟机软件(如VMware)中创建一台新的虚拟机作为客户端。
  2. 将其网络适配器设置为与服务端同一网络模式(例如桥接或Host-only的同一网段)。
  3. 客户端内存建议大于2GB,CPU不少于2核心
  4. 开机后,客户端将自动从网络启动,向DHCP服务器请求IP。

PXE客户端启动并获取IP

  1. 成功获取引导信息后,客户端会自动加载引导菜单,选择“Install Ubuntu 24.04 (Autoinstall)”或等待超时自动进入。

PXE客户端开始自动安装

  1. 系统将根据user-data中的配置,全自动完成分区、软件包安装、用户创建等所有步骤,无需人工干预。

五、常见问题与总结

  1. 客户端内存不足:如果客户端分配内存过低(如小于1GB),在引导或安装过程中可能会因内存耗尽而失败。建议至少分配2GB内存。
  2. 键盘布局与语言:如果安装过程中需要手动选择键盘或语言,说明自动安装配置未能完全生效。请仔细检查/var/www/html/autoinstall/user-data文件的格式(特别是YAML缩进)和内容,确保其符合Ubuntu Autoinstall规范。本文示例已配置时区为上海,通常可避免此问题。

通过以上步骤,您就成功搭建了一套完整的Ubuntu服务器PXE自动化部署环境。这将极大提升在数据中心或实验室中批量部署、重建Linux服务器的效率,是实现基础设施即代码(IaC)和云原生实践的重要基础。




上一篇:Debian系统双网卡主备绑定实战:保障Linux运维网络冗余与高可用
下一篇:Salsa20文件加密器逆向实战:从反汇编到Python PIN码爆破
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 19:06 , Processed in 0.198595 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表