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

【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:放自动安装配置文件

img

2.安装软件

pdsyw@pdsyw1024:~/Desktop$ sudo apt update ​ pdsyw@pdsyw1024:~/Desktop$ sudo apt install dnsmasq nginx -y

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

img

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

img

img

4.重启dnsmasq

pdsyw@pdsyw1024:~/Desktop$ sudo systemctl restart dnsmasq.service ​ pdsyw@pdsyw1024:~/Desktop$ sudo systemctl status dnsmasq.service

img

5.安装软件

pdsyw@pdsyw1024:~/Desktop$ sudo apt install -y syslinux pxelinux

img

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/

img

7.创建菜单目录

pdsyw@pdsyw1024:~/Desktop$ sudo mkdir -p /pxe/tftpboot/pxelinux.cfg

img

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.

img

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

img

10.添加iso镜像

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

img

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

img

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

img

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 ---

img

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; ​ } ​ ​ ​ }

img

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

img

16.启动nginx

pdsyw@pdsyw1024:~/Desktop$ sudo systemctl restart nginx ​ pdsyw@pdsyw1024:~/Desktop$ sudo systemctl status nginx

img

17.验证路径

img

18.开始安装

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

获取DHCP IP地址

加载vmlinuz与initrd

从HTTP下载ISO

执行无人值守安装

整个过程无需人工操作。

img

19.安装完成

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

网络安装成功

用户信息自动配置

SSH已启用

img

三、模块介绍

功能模块工具说明
DHCP + TFTPdnsmasq提供网络引导环境
HTTP 服务nginx分发ISO与配置文件
PXE引导pxelinux提供启动菜单
自动化安装cloud-init/autoinstall自动配置系统参数

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