欢迎光临
我们一直在努力

【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 + TFTP dnsmasq 提供网络引导环境
HTTP 服务 nginx 分发ISO与配置文件
PXE引导 pxelinux 提供启动菜单
自动化安装 cloud-init/autoinstall 自动配置系统参数

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

赞(0)
未经允许不得转载:171主机测评 » 【PXE实战】20步搞定Ubuntu无人值守网络安装
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址