使用CentOS作为pxe服务器,进行批量安装ubuntu22.04版本的系统
时间: 2025-07-21 22:55:42 浏览: 18
<think>我们正在将CentOS配置为PXE服务器,用于批量安装Ubuntu 22.04系统。PXE(预启动执行环境)允许客户端计算机通过网络引导和安装操作系统。配置PXE服务器需要设置DHCP、TFTP和HTTP(或NFS/FTP)服务。
根据引用[1]和引用[3],配置PXE服务器的主要步骤包括:
1. 安装必要的软件包(DHCP、TFTP、HTTP服务器)
2. 配置DHCP服务器以提供网络设置并指向TFTP服务器和引导文件
3. 设置TFTP服务器提供引导文件(包括内核和initrd)
4. 配置HTTP服务器提供安装源(Ubuntu 22.04的ISO内容)和自动应答文件(preseed或cloud-init)
5. 准备自动安装配置文件(用于无人值守安装)
由于用户要求使用CentOS作为PXE服务器,我们将按照CentOS的环境来配置(注意:引用中提供的是Ubuntu作为服务器的配置,但原理相同,软件包和路径会有差异)。
以下是在CentOS 7/8上配置PXE服务器安装Ubuntu 22.04的步骤:
### 1. 安装必要软件包
```bash
# 安装DHCP服务器
sudo yum install -y dhcp-server
# 安装TFTP服务器
sudo yum install -y tftp-server
# 安装HTTP服务器(这里使用Apache)
sudo yum install -y httpd
# 安装syslinux(提供PXE引导文件)
sudo yum install -y syslinux
```
### 2. 配置DHCP服务器
编辑`/etc/dhcp/dhcpd.conf`,参考以下配置(根据网络环境调整):
```conf
option domain-name "example.com";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
next-server 192.168.1.10; # PXE服务器的IP地址
filename "pxelinux.0"; # TFTP根目录下的引导文件
}
```
启动DHCP服务并设置开机自启:
```bash
sudo systemctl start dhcpd
sudo systemctl enable dhcpd
```
### 3. 配置TFTP服务器
复制必要的引导文件到TFTP根目录(通常为`/var/lib/tftpboot`):
```bash
# 复制syslinux提供的PXE引导文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/ # 用于菜单界面
cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/
cp /usr/share/syslinux/libutil.c32 /var/lib/tftpboot/
```
创建PXE配置目录:
```bash
mkdir /var/lib/tftpboot/pxelinux.cfg
```
### 4. 准备Ubuntu 22.04安装文件
挂载Ubuntu 22.04 ISO镜像(或直接下载):
```bash
# 创建挂载点
sudo mkdir -p /mnt/ubuntu
# 挂载ISO(假设ISO放在/home目录下)
sudo mount -o loop /home/ubuntu-22.04.4-live-server-amd64.iso /mnt/ubuntu
# 将ISO内容复制到HTTP服务器的根目录(例如:/var/www/html/ubuntu)
sudo mkdir -p /var/www/html/ubuntu
sudo cp -r /mnt/ubuntu/* /var/www/html/ubuntu/
```
将内核和initrd复制到TFTP目录:
```bash
# 创建Ubuntu引导目录
mkdir /var/lib/tftpboot/ubuntu
# 复制内核和initrd
cp /var/www/html/ubuntu/casper/vmlinuz /var/lib/tftpboot/ubuntu/
cp /var/www/html/ubuntu/casper/initrd /var/lib/tftpboot/ubuntu/
```
### 5. 配置PXE菜单
创建PXE默认配置文件`/var/lib/tftpboot/pxelinux.cfg/default`:
```conf
DEFAULT menu.c32
PROMPT 0
TIMEOUT 30
MENU TITLE PXE Boot Menu
LABEL Install Ubuntu 22.04 Server
KERNEL ubuntu/vmlinuz
APPEND initrd=ubuntu/initrd root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://192.168.1.10/ubuntu/autoinstall.yaml ---
# 注意:url参数指向自动安装配置文件(后面会创建)
```
### 6. 创建自动安装配置文件
Ubuntu 22.04使用autoinstall(YAML格式)进行无人值守安装。在HTTP根目录创建`/var/www/html/ubuntu/autoinstall.yaml`:
```yaml
# 参考引用[2]中的配置,但根据实际需求调整
version: 1
identity:
hostname: ubuntu-server
username: ubuntu
password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTZMT0BR8cN80oHZkDryya5owH7v1VxK0D/6xpeFG0iD0fF9U3J0r/m1Yd4UmgVD0"
# 注意:密码是加密的,可以使用命令 `openssl passwd -6` 生成
locale: en_US.UTF-8
keyboard:
layout: us
storage:
layout:
name: lvm
swap:
size: 0
network:
version: 2
ethernets:
eth0:
dhcp4: true
optional: true
ssh:
install-server: true
authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCzKZyicHx8...
allow-pw: true
packages:
- openssh-server
- curl
- wget
user-data:
timezone: Asia/Shanghai
late-commands:
- echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/ubuntu
```
### 7. 启动服务并设置防火墙
```bash
# 启动TFTP服务
sudo systemctl start tftp
sudo systemctl enable tftp
# 启动HTTP服务
sudo systemctl start httpd
sudo systemctl enable httpd
# 防火墙设置(如果启用)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=tftp
sudo firewall-cmd --permanent --add-service=dhcp
sudo firewall-cmd --reload
```
### 8. 客户端测试
将目标计算机设置为网络启动(PXE),它将自动从PXE服务器获取IP地址,加载引导文件,并从HTTP服务器获取自动安装配置文件进行无人值守安装。
> **注意**:
> 1. 确保所有机器在同一子网内,并且可以访问PXE服务器[^1]。
> 2. 自动安装配置文件(autoinstall.yaml)中的密码需要预先加密生成。
> 3. 如果需要安装桌面版,参考引用[3]的方法准备离线安装包,并在autoinstall中配置安装[^3]。
---
§§相关问题§§
1. 如何为Ubuntu 22.04的自动安装配置磁盘分区和软RAID?
2. 如何配置PXE服务器以支持多种操作系统的安装(如CentOS、Windows)?
3. 如何调试PXE启动失败的问题?
4. 如何优化PXE安装速度(使用本地镜像源)?</think>### 在 CentOS 上配置 PXE 服务器部署 Ubuntu 22.04 的完整指南
#### 1. 环境准备
- **操作系统**:CentOS 7/8 作为 PXE 服务器
- **网络要求**:所有客户端需在同一子网内[^1]
- **所需软件**:
```bash
sudo yum install -y dhcp tftp-server httpd syslinux xinetd
```
#### 2. 配置 DHCP 服务
编辑 `/etc/dhcp/dhcpd.conf`:
```conf
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8;
next-server 192.168.1.10; # PXE 服务器 IP
filename "pxelinux.0"; # PXE 引导文件
}
```
启动服务:
```bash
sudo systemctl start dhcpd
sudo systemctl enable dhcpd
```
#### 3. 配置 TFTP 服务
1. 复制引导文件:
```bash
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
```
2. 配置 TFTP(编辑 `/etc/xinetd.d/tftp`):
```conf
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
```
启动服务:
```bash
sudo systemctl start tftp
sudo systemctl enable tftp
```
#### 4. 配置 HTTP 安装源
1. 挂载 Ubuntu ISO:
```bash
mkdir /mnt/ubuntu
mount -o loop ubuntu-22.04-live-server-amd64.iso /mnt/ubuntu
mkdir -p /var/www/html/ubuntu
cp -r /mnt/ubuntu/* /var/www/html/ubuntu/
```
2. 复制内核文件到 TFTP:
```bash
cp /var/www/html/ubuntu/casper/vmlinuz /var/lib/tftpboot/
cp /var/www/html/ubuntu/casper/initrd /var/lib/tftpboot/
```
#### 5. 创建 PXE 引导菜单
创建 `/var/lib/tftpboot/pxelinux.cfg/default`:
```conf
DEFAULT menu.c32
PROMPT 0
TIMEOUT 30
MENU TITLE PXE Boot Menu
LABEL Install Ubuntu 22.04
KERNEL vmlinuz
APPEND initrd=initrd root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://192.168.1.10/ubuntu/autoinstall.yaml ---
```
#### 6. 配置无人值守安装
创建自动应答文件 `/var/www/html/ubuntu/autoinstall.yaml`:
```yaml
#cloud-config
autoinstall:
version: 1
identity:
hostname: ubuntu-server
username: admin
password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTZMT0BR8cN80oHZkDryya5owH7v1VxK0D/6xpeFG0iD0fF9U3J0r/m1Yd4UmgVD0"
locale: en_US.UTF-8
keyboard:
layout: us
storage:
layout:
name: lvm
ssh:
install-server: true
allow-pw: true
packages:
- openssh-server
- curl
user-data:
timezone: Asia/Shanghai
```
> **注**:密码需用 `openssl passwd -6` 生成加密字符串[^2]
#### 7. 启动服务并测试
```bash
sudo systemctl start httpd
sudo systemctl enable httpd
sudo firewall-cmd --add-service={http,dhcp,tftp} --permanent
sudo firewall-cmd --reload
```
#### 8. 客户端测试
启动目标机器选择 PXE 启动,将自动加载 Ubuntu 22.04 安装程序并应用无人值守配置。
---
### 关键说明
1. **安装桌面版**:如需桌面版,参考引用[3]准备离线安装包:
```bash
# 在可联网的Ubuntu机器上
sudo apt-get -d install ubuntu-desktop
tar -czvf offline-desktop.tar.gz /var/cache/apt/archives/*.deb
```
将包放入 HTTP 目录,在 `late-commands` 中添加安装脚本[^3]
2. **配置文件路径**:
```
TFTP 根目录: /var/lib/tftpboot
HTTP 根目录: /var/www/html
DHCP 配置: /etc/dhcp/dhcpd.conf
```
3. **验证命令**:
```bash
# 检查服务状态
systemctl status dhcpd tftp httpd
# 测试TFTP
tftp localhost
get pxelinux.0
```
> **注意**:修改 IP 地址和路径需与实际环境一致,所有服务需放行防火墙[^1]
---
阅读全文
相关推荐












