原文链接:【PXE实战】20步搞定Ubuntu无人值守网络安装
在企业IT运维中,批量部署系统是一个高频场景。如果你还在一台台插U盘、人工安装,那就太低效了。其实,只要搭建一个PXE网络启动环境,配合Ubuntu的Autoinstall功能,就能实现:
✅ 无需人工干预
✅ 自动分区、配置网络
✅ 自动设置用户与密码
✅ 一台PXE服务器,几十台机器同时安装!
今天这篇文章,就带你在Ubuntu系统上,一步步搭建出一个可批量自动安装Ubuntu 22.04的PXE环境。
一、环境准备
| PXE服务器 | 192.168.80.13 |
| 系统版本 | UOS Desktop 20 / Ubuntu 22.04 |
| 客户端 | 通过局域网PXE启动安装 |
二、配置过程
1.创建目录结构
pdsyw@pdsyw1024:~/Desktop$ sudo mkdir -p /pxe/{tftpboot,http/autoinstall,logs}
结构说明:
/pxe/tftpboot:放启动文件(pxelinux、vmlinuz、initrd等)
/pxe/http:存放ISO与安装文件
/pxe/http/autoinstall:放自动安装配置文件

2.安装软件
pdsyw@pdsyw1024:~/Desktop$ sudo apt update
pdsyw@pdsyw1024:~/Desktop$ sudo apt install dnsmasq nginx -y
dnsmasq 提供 DHCP、TFTP 服务;nginx 负责 HTTP 文件分发。

3.编辑dnsmasq配置
pdsyw@pdsyw1024:~/Desktop$ sudo vim /etc/dnsmasq.conf
pdsyw@pdsyw1024:~/Desktop$ tail -24 /etc/dnsmasq.conf
# ————————
# 基础配置
# ————————
port=0
interface=ens32
bind-interfaces
# DHCP 服务
dhcp-range=192.168.80.190,192.168.80.200,12h
# ————————
# TFTP 配置
# ————————
enable-tftp
tftp-root=/pxe/tftpboot
# ————————
# PXE BIOS & UEFI
# ————————
# BIOS 使用 pxelinux.0
dhcp-boot=pxelinux.0
# 让 dnsmasq 部署 PXE 菜单
pxe-service=x86PC, "PXE Boot Menu", pxelinux


4.重启dnsmasq
pdsyw@pdsyw1024:~/Desktop$ sudo systemctl restart dnsmasq.service
pdsyw@pdsyw1024:~/Desktop$ sudo systemctl status dnsmasq.service

5.安装软件
pdsyw@pdsyw1024:~/Desktop$ sudo apt install -y syslinux pxelinux

6.准备PXE启动文件
pdsyw@pdsyw1024:~/Desktop$ sudo cp /usr/lib/PXELINUX/pxelinux.0 /pxe/tftpboot/
pdsyw@pdsyw1024:~/Desktop$ sudo cp /usr/lib/syslinux/modules/bios/* /pxe/tftpboot/

7.创建菜单目录
pdsyw@pdsyw1024:~/Desktop$ sudo mkdir -p /pxe/tftpboot/pxelinux.cfg

8.挂载镜像
pdsyw@pdsyw1024:~/Desktop$ sudo mount -o loop ubuntu-22.04.5-live-server-amd64.iso /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.

9.提取 kernel/initrd
pdsyw@pdsyw1024:~/Desktop$ sudo cp /mnt/casper/vmlinuz /pxe/tftpboot/
pdsyw@pdsyw1024:~/Desktop$ sudo cp /mnt/casper/initrd /pxe/tftpboot/
pdsyw@pdsyw1024:~/Desktop$ sudo cp -r /mnt /pxe/http/ubuntu
pdsyw@pdsyw1024:~/Desktop$ sudo umount /mnt

10.添加iso镜像
pdsyw@pdsyw1024:~/Desktop$ sudo cp /home/pdsyw/Desktop/ubuntu-22.04.5-live-server-amd64.iso /pxe/http/ubuntu/

11.准备autoinstall(无人值守)配置
pdsyw@pdsyw1024:~/Desktop$ sudo vim /pxe/http/autoinstall/user-data
pdsyw@pdsyw1024:~/Desktop$ cat /pxe/http/autoinstall/user-data
#cloud-config
autoinstall:
version: 1
interactive-sections: []
locale: en_US.UTF-8
keyboard:
layout: us
network:
version: 2
ethernets:
ens32:
• dhcp4: true
storage:
layout:
name: direct
identity:
hostname: pdsyw-custom
username: pdsyw
password: "$6$SU.c7N7g4kT0t8oP$YEG.g1ffHwcmhz7viRoZIa5cHDB9/FqZahG8JBbSZeNbKR3FLS.8XbVg7Ux1S1.jU4bw6NeinUvPW0d1IeduJ0"
ubuntu_pro:
enable: false
ssh:
install-server: true
allow-pw: true
shutdown: reboot

12.编辑meta-data文件
pdsyw@pdsyw1024:~/Desktop$ sudo vim /pxe/http/autoinstall/meta-data
pdsyw@pdsyw1024:~/Desktop$ cat /pxe/http/autoinstall/meta-data
instance-id: iid-pdsyw-autoinstall
local-hostname: pdsyw-autoinstall

13.PXELINUX菜单配置
pdsyw@pdsyw1024:~/Desktop$ sudo vim /pxe/tftpboot/pxelinux.cfg/default
pdsyw@pdsyw1024:~/Desktop$ cat /pxe/tftpboot/pxelinux.cfg/default
DEFAULT install
LABEL install
MENU LABEL Install Ubuntu 22.04 Custom
KERNEL vmlinuz
INITRD initrd
APPEND ip=dhcp url=http://192.168.80.13/ubuntu/ubuntu-22.04.5-live-server-amd64.iso ds=nocloud-net;s=http://192.168.80.13/autoinstall/ autoinstall fsck.mode=skip console=tty0 console=ttyS0,115200n8 —

14.修改nginx配置
pdsyw@pdsyw1024:~/Desktop$ sudo vim /etc/nginx/sites-enabled/default
pdsyw@pdsyw1024:~/Desktop$ grep -v "#" /etc/nginx/sites-enabled/default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /pxe/http;
• autoindex on;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}

15.检查nginx语法
pdsyw@pdsyw1024:~/Desktop$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

16.启动nginx
pdsyw@pdsyw1024:~/Desktop$ sudo systemctl restart nginx
pdsyw@pdsyw1024:~/Desktop$ sudo systemctl status nginx

17.验证路径

18.开始安装
在客户端主机上设置网络启动(PXE Boot),选择从网卡启动。选择后系统会自动:
获取DHCP IP地址
加载vmlinuz与initrd
从HTTP下载ISO
执行无人值守安装
整个过程无需人工操作。

19.安装完成
系统安装完成后自动重启,登录账户pdsyw,输入设置的密码即可进入。
网络安装成功
用户信息自动配置
SSH已启用

三、模块介绍
| DHCP + TFTP | dnsmasq | 提供网络引导环境 |
| HTTP 服务 | nginx | 分发ISO与配置文件 |
| PXE引导 | pxelinux | 提供启动菜单 |
| 自动化安装 | cloud-init/autoinstall | 自动配置系统参数 |
今天的PXE实战分享就到这里啦!如果这篇教程对你有帮助,记得点个【赞】、【收藏】、【转发】支持一下~





