免责声明
环境准备
项目 |
示例值 |
|---|---|
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 updatepdsyw@pdsyw1024:~/Desktop$ sudo apt install dnsmasq nginx -y
dnsmasq 提供 DHCP、TFTP 服务;nginx 负责 HTTP 文件分发。
3
编辑dnsmasq配置
pdsyw@pdsyw1024:~/Desktop$ sudo vim /etc/dnsmasq.confpdsyw@pdsyw1024:~/Desktop$ tail -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:~/Desktop$ sudo systemctl restart dnsmasq.servicepdsyw@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 /mntmount: /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/ubuntupdsyw@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-datapdsyw@pdsyw1024:~/Desktop$ cat /pxe/http/autoinstall/user-data#cloud-configautoinstall:version: 1interactive-sections: []locale: en_US.UTF-8keyboard:layout: usnetwork:version: 2ethernets:ens32:dhcp4: truestorage:layout:name: directidentity:hostname: pdsyw-customusername: pdsywpassword: "$6$SU.c7N7g4kT0t8oP$YEG.g1ffHwcmhz7viRoZIa5cHDB9/FqZahG8JBbSZeNbKR3FLS.8XbVg7Ux1S1.jU4bw6NeinUvPW0d1IeduJ0"ubuntu_pro:enable: falsessh:install-server: trueallow-pw: trueshutdown: reboot
12
编辑meta-data文件
pdsyw@pdsyw1024:~/Desktop$ sudo vim /pxe/http/autoinstall/meta-datapdsyw@pdsyw1024:~/Desktop$ cat /pxe/http/autoinstall/meta-datainstance-id: iid-pdsyw-autoinstalllocal-hostname: pdsyw-autoinstall
13
PXELINUX菜单配置
pdsyw@pdsyw1024:~/Desktop$ sudo vim /pxe/tftpboot/pxelinux.cfg/defaultpdsyw@pdsyw1024:~/Desktop$ cat /pxe/tftpboot/pxelinux.cfg/defaultDEFAULT installLABEL installMENU LABEL Install Ubuntu 22.04 CustomKERNEL vmlinuzINITRD initrdAPPEND 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/defaultpdsyw@pdsyw1024:~/Desktop$ grep -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:~/Desktop$ sudo 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:~/Desktop$ sudo systemctl restart nginxpdsyw@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实战分享就到这里啦!如果这篇教程对你有帮助,记得点个【赞】、【收藏】、【转发】支持一下~
往期回顾
Review of previous periods
●SUID/SGID是啥?如何让普通用户拥有root的能力?
扫码添加
添/加/好/友
进/群/交/流
·end·
—如果喜欢,快分享给你的朋友们吧—
我们一起愉快地玩耍吧

