大数跨境
0
0

【PXE实战】20步搞定Ubuntu无人值守网络安装

【PXE实战】20步搞定Ubuntu无人值守网络安装 鹏大圣运维
2025-11-19
4
导读:“搭建PXE + Autoinstall环境,一次配置,批量安装!”

使

导读

在企业IT运维中,批量部署系统是一个高频场景。如果你还在一台台插U盘、人工安装,那就太低效了。其实,只要搭建一个PXE网络启动环境,配合Ubuntu的Autoinstall功能,就能实现:

✅ 无需人工干预

✅ 自动分区、配置网络

✅ 自动设置用户与密码

✅ 一台PXE服务器,几十台机器同时安装!

今天这篇文章,就带你在Ubuntu系统上,一步步搭建出一个可批量自动安装Ubuntu 22.04的PXE环境。


01

环境准备

›››


项目

示例值

PXE服务器

192.168.80.13

系统版本

UOS Desktop 20 / Ubuntu 22.04

客户端

通过局域网PXE启动安装



02

配置过程

›››


1

创建目录结构


pdsyw@pdsyw1024:~/Desktopsudo mkdir -p /pxe/{tftpboot,http/autoinstall,logs}




结构说明:

/pxe/tftpboot:放启动文件(pxelinux、vmlinuz、initrd等)

/pxe/http:存放ISO与安装文件

/pxe/http/autoinstall:放自动安装配置文件






2

安装软件


pdsyw@pdsyw1024:~/Desktopsudo apt updatepdsyw@pdsyw1024:~/Desktopsudo apt install dnsmasq nginx -y




dnsmasq 提供 DHCP、TFTP 服务;nginx 负责 HTTP 文件分发。






3

编辑dnsmasq配置


pdsyw@pdsyw1024:~/Desktopsudo vim /etc/dnsmasq.confpdsyw@pdsyw1024:~/Desktoptail -24 /etc/dnsmasq.conf# ------------------------# 基础配置# ------------------------port=0interface=ens32bind-interfaces# DHCP 服务dhcp-range=192.168.80.190,192.168.80.200,12h# ------------------------# TFTP 配置# ------------------------enable-tftptftp-root=/pxe/tftpboot# ------------------------# PXE BIOS & UEFI# ------------------------# BIOS 使用 pxelinux.0dhcp-boot=pxelinux.0# 让 dnsmasq 部署 PXE 菜单pxe-service=x86PC, "PXE Boot Menu", pxelinux




4

重启dnsmasq


pdsyw@pdsyw1024:~/Desktopsudo systemctl restart dnsmasq.servicepdsyw@pdsyw1024:~/Desktopsudo systemctl status dnsmasq.service




5

安装软件


pdsyw@pdsyw1024:~/Desktopsudo apt install -y syslinux pxelinux




6

准备PXE启动文件


pdsyw@pdsyw1024:~/Desktopsudo cp /usr/lib/PXELINUX/pxelinux.0 /pxe/tftpboot/pdsyw@pdsyw1024:~/Desktopsudo cp /usr/lib/syslinux/modules/bios/* /pxe/tftpboot/




7

创建菜单目录


pdsyw@pdsyw1024:~/Desktopsudo mkdir -p /pxe/tftpboot/pxelinux.cfg




8

挂载镜像


pdsyw@pdsyw1024:~/Desktopsudo mount -o loop ubuntu-22.04.5-live-server-amd64.iso /mntmount: /mnt: WARNING: source write-protected, mounted read-only.




9

提取 kernel/initrd


pdsyw@pdsyw1024:~/Desktopsudo cp /mnt/casper/vmlinuz /pxe/tftpboot/pdsyw@pdsyw1024:~/Desktopsudo cp /mnt/casper/initrd /pxe/tftpboot/pdsyw@pdsyw1024:~/Desktopsudo cp -r /mnt /pxe/http/ubuntupdsyw@pdsyw1024:~/Desktopsudo 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:~/Desktopsudo vim /pxe/http/autoinstall/user-data pdsyw@pdsyw1024:~/Desktopcat /pxe/http/autoinstall/user-data #cloud-configautoinstall:  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:~/Desktopsudo vim /pxe/http/autoinstall/meta-datapdsyw@pdsyw1024:~/Desktopcat /pxe/http/autoinstall/meta-datainstance-id: iid-pdsyw-autoinstalllocal-hostname: pdsyw-autoinstall



13

PXELINUX菜单配置


pdsyw@pdsyw1024:~/Desktopsudo vim  /pxe/tftpboot/pxelinux.cfg/default pdsyw@pdsyw1024:~/Desktopcat  /pxe/tftpboot/pxelinux.cfg/default DEFAULT installLABEL 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:~/Desktopsudo vim /etc/nginx/sites-enabled/defaultpdsyw@pdsyw1024:~/Desktopgrep -v "#" /etc/nginx/sites-enabled/defaultserver {	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:~/Desktopsudo nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful




16

启动nginx


pdsyw@pdsyw1024:~/Desktopsudo systemctl restart nginxpdsyw@pdsyw1024:~/Desktopsudo systemctl status nginx




17

验证路径




18

开始安装




在客户端主机上设置网络启动(PXE Boot),选择从网卡启动。选择后系统会自动:

获取DHCP IP地址

加载vmlinuz与initrd

从HTTP下载ISO

执行无人值守安装

整个过程无需人工操作。






19

安装完成




系统安装完成后自动重启,登录账户pdsyw,输入设置的密码即可进入。

网络安装成功

用户信息自动配置

SSH已启用






03

模块介绍

›››


功能模块

工具

说明

DHCP + TFTP

dnsmasq

提供网络引导环境

HTTP 服务

nginx

分发ISO与配置文件

PXE引导

pxelinux

提供启动菜单

自动化安装

cloud-init/autoinstall

自动配置系统参数



今天的PXE实战分享就到这里啦!如果这篇教程对你有帮助,记得点个【赞】、【收藏】、【转发】支持一下~





往期回顾

Review of previous periods

jq:命令行处理 JSON 的神器
银河麒麟桌面操作系统:自定义截图快捷键操作指南

SUID/SGID是啥?如何让普通用户拥有root的能力?

Linux神器 gron:让 JSON 数据轻松玩转命令行!

轻松录屏利器!统信系统下 Screenity 插件安装与使用全流程指南



扫码添加

添/加/好/友

进/群/交/流

·end·

—如果喜欢,快分享给你的朋友们吧—

我们一起愉快地玩耍吧


【声明】内容源于网络
0
0
鹏大圣运维
各类跨境出海行业相关资讯
内容 718
粉丝 0
鹏大圣运维 各类跨境出海行业相关资讯
总阅读25.4k
粉丝0
内容718