基于ubuntu部署PXE Server用于网络安装ubuntu

环境说明         操作系统镜像:ubuntu-22.04.1-live-server-amd64.iso        可以直接去官网下载https://ubuntu.com/download/server

 选择的是最小化安装

安装必须的服务端软件

安装HTTP服务器这里使用的是apache2sudo apt-get install apache2

安装DHCP、TFTP服务器 dnsmasq同时实现了DHCP、TFTP、DNS三种服务器sudo apt-get install dnsmasq

安装后报53端口冲突,可以参考如下文章解决:

启动或重启 dnsmasq 提示端口 53 被占用的解决方案 – Yogile – 博客园

准备相关文件

1. tftpd的默认服务根目录是/var/ftpd

ftpd├── boot│      └── live-server│              ├── initrd│              └── vmlinuz├── grub│      └── x86_64-efi│              ├── command.lst│              └── crypto.lst│              ├── fs.lst│              └── terminal.lst│      ├── bootx64.efi│      └── grub.cfg└── grubx64.efi 说明 文件initrd、vmlinuz、command.lst、crypto.lst、fs.lst和terminal.lst来自 ubuntu安装包

 

bootx64.efi、grubx64.efi 引导程序,来自shim.signed 和grub-efi-amd64-signed安装包  

sudo apt-get download shim.signed

dpkg -x shim-signed_1.51+15.4-0ubuntu9_amd64.deb shim

sudo apt-get download grub-efi-amd64-signed

dpkg -x grub-efi-amd64-signed_1.182~22.04.1+2.06-2ubuntu10_amd64.deb grub

cp ./grub/usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed  /var/ftpd/grubx64.efi

cp ./shim/usr/lib/shim/shimx64.efi.signed  /var/ftpd/grub/bootx64.efi

grub.cfg 自建,内容如下

menuentry “Try or Install Ubuntu Server” {

    set gfxpayload=keep

    linux  /boot/live-server/vmlinuz root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=’http://192.168.0.49/iso/ubuntu-22.04.1-live-server-amd64.iso’ autoinstall ds=nocloud-net\;s=http://192.168.0.49/autoinstall/ —

    initrd /boot/live-server/initrd

}

这里的ip:192.168.0.49是“安装源服务器”传输以上文件所用的那个网卡的网络地址,根据实际情况修改。

2. apache2的默认服务根目录是 /var/www/html

​​​​​​​html/├── autoinstall│   ├── meta-data│   └── user-data├── index.html└── iso    └── ubuntu-22.04.1-live-server-amd64.iso

说明

autoinstall 目录存放参数自动配置文件,user-data、meta-data是cloud-init要求的文件名。

meta-data只需创建一个依此命名的空文件;

user-data的内容可以参考此安装源服务器在 /var/log/installer/ 目录下的 autoinstall-user-data ,这是基于当前的系统的应答文件,我们可以以它作为基础,根据实际情况进行修改。

iso 目录存放操作系统镜像文件。

(三) 修改配置文件

dnsmasq的默认配置文件为/etc/dnsmasq.conf,关键配置有以下几个

# 指定服务的网卡,对应上述ip:192.168.0.49的那张网卡名

interface=enp2s0

# 绑定端口

bind-interfaces

# 设置DHCP分发IP端范围、地址掩码、IP地址有效时间(网段自定义)

dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h

# 设置引导程序相对tftp根目录的路径

dhcp-match=set:efi-x86_64,option:client-arch,7

dhcp-boot=tag:efi-x86_64,grub/bootx64.efi

# 打开tftp服务

enable-tftp

# 设置tftp根路径

tftp-root=/var/ftpd

# 设置日志路径

log-facility=/var/log/dnsmasq.log

修改配置后,重启dnsmasq服务才能生效。

sudo service dnsmasq restart

至此,安装源服务器上的配置都已修改完毕,接着网络启动所有客户端服务器就

开始进行网络安装了。

——————————————————————————————————————–

测试验证过程:

一、使用Hyper-V虚拟化环境验证

验证主机系统:Windows 10,16G内存

Hyper-V 管理器版本如下:

 PXE server配置如下图所示,新增了一张网卡MyPrivateNet专门用于PXE启动

PXE server安装 ubuntu-22.04.1-live-server-amd64.iso时选择最小化安装

PXE client配置如下:

 在PXE server上安装上述步骤配置后,启动时

二、使用物理机验证

1、选择一台物理机作为PXE server,最小化安装 ubuntu-22.04.1-live-server-amd64.iso

2、另选一台服务器作为PXE client,组网如下,服务器配置有RAID卡的话,需要提前对系统盘做RAID。

 按照前文配置说明完成对PXE server的部署后,启动PXE client,当出现如下画面的时候代表已经连接到PXE server

 这一步显示的就是我们再grub.cfg中配置的菜单:menuentry “Try or Install Ubuntu Server”

 

在PXE server查看dnsmasq日志,正常的启动日志如下:

 PXE client在OS安装完成后会自动重启。

记录一下测试过程中遇到的问题:

1、最后一步分区的时候报错,提示如下:

 根据倒数第二行的提示,按enter键后去查看crash日志:

 从日志可以看出我们再user-data中配置的ubuntu-vg在文件系统中已经存在。

原因就是我们测试用的PXE client已经安装过操作系统了

而且之前的操作系统并没有安装到系统盘sda上 ,清除掉nvme0n1p3上的ubuntu-vg之后重新PXE安装即可


比丘资源网 » 基于ubuntu部署PXE Server用于网络安装ubuntu

发表回复

提供最优质的资源集合

立即查看 了解详情