目录
一、简介
系统:Ubuntu 22.04
平台:X86_64
本文介绍如何在Ubuntu下搭建PXE服务端,主要包含HTTP、DHCP、TFTP等服务端的搭建,以及基于Ubuntu22.04镜像实现PXE安装文件的配置。
二、HTTP服务端搭建
1、安装 apache2
sudo apt install apache2
2、复制下载的镜像到http特定目录
cp ./ubuntu-22.04-desktop-amd64.iso /var/www/html/
3、挂载镜像
mkdir /var/www/html/Ubuntu_22.04_Desktop/
mount /var/www/html/ubuntu-22.04-desktop-amd64.iso /var/www/html/Ubuntu_22.04_Desktop/
三、DHCP服务端搭建
1、安装 isc-dhcp-server
apt install isc-dhcp-server
2、配置静态 IP
使用 netplan 配置静态 IP,打开配置文件。
sudo vim /etc/netplan/01-network-manager-all.yaml
打开后的默认配置文件如下:
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
编辑配置文件内容。
# Let NetworkManager manage all devices on this system
network:
ethernets:
enp7s0f0:
dhcp4: no
dhcp6: no
addresses:
- 192.168.2.10/24
version: 2
renderer: NetworkManager
3、重启配置
netplan apply
配置 dhcpd
指定 isc-dhcp-server 要监听的网卡
vim /etc/default/isc-dhcp-server
INTERFACESv4="enp7s0f0"
5、编辑 dhcpd.conf 配置文件
vim /etc/dhcp/dhcpd.conf
option arch code 93 = unsigned integer 16;
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.11 192.168.2.254;
option routers 192.168.2.10;
next-server 192.168.2.10;
if option arch = 00:07 {
filename "/UEFI/bootx64.efi";
} else {
filename "/Legacy/pxelinux.0";
}
}
}
6、重启服务
systemctl restart isc-dhcp-server
四、TFTP服务端搭建
1、安装依赖包
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
2、配置/etc/xinetd.conf
vim /etc/xinetd.conf
# Simple configuration file for xinetd
#
#Some defaults, and include /etc/xinetd.d/
defaults
{
#Please note that you need a log_type line to be able to use log_on_success
#and log_on_failure. The default is the following :
#log_type = SYSLOG daemon info
}
includedir /etc/xinetd.d
查看是否有 xinetd.conf 查看内容是否一致, 如果没有创建一个,并输入如下内容
3、配置/etc/default/tftpd-hpa
vim /etc/default/tftpd-hpa
设置共享目录TFTP_DIRECTORY=“/srv/tftp”
4、创建共享文件夹
mkdir /srv/tftp
5、设置权限
chmod 777 /srv/tftp -R
6、重启tftp服务
service tftpd-hpa start
7、配置tftp相关的文件
(1) 建立 UEFI 目录
mkdir /srv/tftp/UEFI
(2)拷贝文件
cp /var/www/html/Ubuntu_22.04_Desktop/casper/{vmlinuz,initrd} /srv/tftp/UEFI/
(3)下载并拷贝必要的文件
cd ~
//shim-signed
```c
apt download shim-signed
dpkg -x shim-signed*deb shim
sudo cp shim/usr/lib/shim/shimx64.efi.signed.latest /srv/tftp/UEFI/bootx64.efi
//grub-efi-amd64-signed
apt download grub-efi-amd64-signed
dpkg -x grub-efi-amd64-signed*deb grub
sudo cp grub/usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed /srv/tftp/UEFI/grubx64.efi
//grub-common
apt download grub-common
dpkg -x grub-common*deb grub-common
cp grub-common/usr/share/grub/unicode.pf2 /srv/tftp/UEFI/
8、创建grub引导文件
mkdir /srv/tftp/grub
vim /srv/tftp/grub/grub.cfg
set default="0"
set timeout=100
if loadfont unicode ; then
set gfxmode=auto
set locale_dir=$prefix/locale
set lang=en_US
fi
terminal_output gfxterm
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 44,0,30; then
clear
fi
function gfxmode {
set gfxpayload="${1}"
if [ "${1}" = "keep" ]; then
set vt_handoff=vt.handoff=7
else
set vt_handoff=
fi
}
set linux_gfx_mode=keep
export linux_gfx_mode
menuentry 'Ubuntu 22.04 IPv4' {
gfxmode $linux_gfx_mode
linux /UEFI/vmlinuz root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://192.168.2.10/ubuntu-22.04-desktop-amd64.iso
initrd /UEFI/initrd
}
}
五、重启所有服务、关闭防火墙
systemctl restart isc-dhcp-server
systemctl restart tftpd-hpa.service
systemctl restart xinetd
/etc/init.d/apache2 restart
netplan apply
ufw disable