【PXE实战】20步搞定Ubuntu无人值守网络安装
原文链接:【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实战分享就到这里啦!如果这篇教程对你有帮助,记得点个【赞】、【收藏】、【转发】支持一下~