Ubuntu-PXE部署

适用于各版本的Ubuntu桌面版和服务器版

 

一、

宿主机:win11

虚拟化工具:vmware17

使用vmware部署三台虚拟机

虚拟机1:作为pxe服务端,配置双网卡,不同网段,分别提供uefi和leagcy的pxe服务

虚拟机2:pxe客户端,uefi安装

虚拟机3:pxe服务端,leagcy安装

为了测试,关闭vmware自身nat和仅主机的dhcp服务

 

文中提交的资料链接:

https://wwvx.lanzoul.com/b02nh7wwte 密码:ysir

ubuntu-pxe-bak.tar.gz 在openeuler2003sp3测试的数据

syslinux-6.03.zip pxe引导文件

 

二、

虚拟机1配置

环境:openEuler-20.03-LTS-SP3-x86_64-dvd.iso

测试系统:ubuntu-22.04-desktop-amd64.iso

网卡ip

ip1 192.168.88.23/24 对应nat模式

ip2 192.168.89.23/24 对应仅主机模式

 

#安装pxe部署所需服务

yum install httpd dhcp xinetd tftp-server -y

 

xinetd配置

说明:disable=no,开启tftp-server

vim /etc/xinetd.d/tftp

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
}

 

dhcpd配置

说明:两个网段,192.168.88.0段提供uefi-pxe服务,192.168.89.0段提供bios-pxe服务

具体各项说明问百度

# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.88.0 netmask 255.255.255.0 {
 range 192.168.88.110 192.168.88.120;
 option routers 192.168.88.2;
 option domain-name-servers 1.1.1.1, 8.8.8.8;
# option domain-name "mydomain.example";
}

subnet 192.168.89.0 netmask 255.255.255.0 {
 range 192.168.89.110 192.168.89.120;
 option routers 192.168.89.2;
 option domain-name-servers 1.1.1.1, 8.8.8.8;
# option domain-name "mydomain.example";
}

# pxe client, uefi64
host uefi-client {
  hardware ethernet 00:0c:29:55:C6:3F;
  fixed-address 192.168.88.25;
  next-server 192.168.88.23;
  filename "efi64/syslinux.efi";
}

# pxe client, bios
host bios-client {
  hardware ethernet 00:0c:29:fd:4f:2e;
  fixed-address 192.168.89.25;
  next-server 192.168.89.23;
  filename "bios/lpxelinux.0";
}

 

准备必要的文件

说明:uefi和bios-pxe启动引导文件

cd root

wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz

mkdir syslinux

unzip -q -O syslinux

mkdir /var/lib/tftpboot/{efi,bios}

cd syslinux

cp efi/syslinux.efi com32/menu/* com32/libutil/libutil.c32 com32/elflink/ldlinux/ldlinux.e64 com32/lib/libcom32.c32 /var/lib/tftpboot/efi64

cp core/lpxelinux.0 com32/menu/* com32/libutil/libutil.c32 com32/elflink/ldlinux/ldlinux.c32 com32/lib/libcom32.c32 /var/lib/tftpboot/bios/

cd /var/lib/tftpboot

mkdir bios/pxelinux.cfg/ efi64/pxelinux.cfg

 

vim bios/pxelinux.cfg/default

DEFAULT menu.c32
 PROMPT 0

 MENU TITLE PXE Boot Menu
 MENU COLOR TABMSG    37;40 #80ffffff #00000000
 MENU COLOR HOTSEL    30;47 #40000000 #20ffffff
 MENU COLOR SEL       30;47 #40000000 #20ffffff
 MENU COLOR SCROLLBAR 30;47 #40000000 #20ffffff
 MENU WIDTH 80
 MENU MARGIN 22
 MENU PASSWORDMARGIN 26
 MENU ROWS 6
 MENU TABMSGROW 15
 MENU CMDLINEROW 15
 MENU ENDROW 24
 MENU PASSWORDROW 12
 MENU TIMEOUTROW 13
 MENU VSHIFT 6
 NOESCAPE 1
 ALLOWOPTIONS 0
 MENU AUTOBOOT Starting Local System in # seconds

 LABEL bootlocal
  MENU LABEL ^Local Boot
  LOCALBOOT 0
 TIMEOUT 30
 TOTALTIMEOUT 3000

 LABEL UbuntuDesktop-22.04-live BIOS
  MENU default
  MENU LABEL Ubuntu 22.04 Desktop Live CD
  KERNEL http://192.168.89.23/vmlinuz
  INITRD http://192.168.89.23/initrd
  APPEND root=/dev/ram0 ramdisk_size=400000 boot=casper ip=dhcp netboot=url url=http://192.168.89.23/ubuntu-22.04-desktop-amd64.iso

 

cp bios/pxelinux.cfg/default efi/pxelinux.cfg/default

vim efi/pxelinux.cfg/default

修改ip

....
....
 LABEL UbuntuDesktop-22.04-live UEFI
  MENU default
  MENU LABEL Ubuntu 22.04 Desktop Live CD
  KERNEL http://192.168.88.23/vmlinuz
  INITRD http://192.168.88.23/initrd
  APPEND root=/dev/ram0 ramdisk_size=400000 boot=casper ip=dhcp netboot=url url=http://192.168.88.23/ubuntu-22.04-desktop-amd64.iso

 

 

提前传输镜像到/root

cp /root/ubuntu-22.04-desktop-amd64.iso /var/www/html

mkdir /var/www/html/ubuntu2204

cd /var/www/html/

mount ubuntu-22.04-desktop-amd64.iso ubuntu2204

cp ubuntu2204/casper/{initrd,vmlinuz} ./

 

服务管理

systemctl enable –now httpd dhcpd xinetd

systemctl disable –now firewalld

 

 

配置完成,文件目录展示

/var/lib/tftpboot目录

/var/www/html目录

 

虚拟机配置图

pxe-服务端

pxe-客户端1

pxe-客户端2

 

 

问题记录:

1、ueif和bios启动方式

使用uefi引导时,需要修改虚拟机固件

修改固件步骤:新建虚拟机-编辑虚拟机设置-选项-高级-固件类型,可选择方式有BIOS和UEFI

2、镜像大小

本次使用的ubuntu-22.04-desktop-amd64.iso大小为3.4G

在配置/var/lib/tftpboot/bios/pxelinux.cfg/default文件时,

其中amdisk_size=400000设置为4G,需大于3.4G

APPEND root=/dev/ram0 ramdisk_size=400000 boot=casper ip=dhcp netboot=url url=http://192.168.88.23/ubuntu-22.04-desktop-amd64.iso

3、pxe客户端内存需更大,包含ramdisk_size=40000,故比4G还要大,测试时5.7G可以启动,更小的内存需要测试

4、dhcp配置中,设置了只有特定mac地址才能pxe启动,如下图,只有mac为00:0c:29:55:C6:3F,才能pxe-uefi启动,获取固定ip192.168.88.25

# pxe client, uefi64
host uefi-client {
  hardware ethernet 00:0c:29:55:C6:3F;
  fixed-address 192.168.88.25;
  next-server 192.168.88.23;
  filename "efi64/syslinux.efi";
}

 

dhcp.conf配置中pxe客户端硬件地址获取

类似如hardware ethernet 00:0c:29:55:C6:3F;

查看vmware虚拟机下的日志文件

vmware.log文件搜索关键词 ethernet

5、关闭vmware自身提供的dhcp服务

vmware-编辑-虚拟机网络编辑器

6、补充一份,不指定固定mac,所有dhcp ip均可pxe部署

default-lease-time 600;
max-lease-time 7200;

subnet 192.168.88.0 netmask 255.255.255.0 {
 range 192.168.88.110 192.168.88.120;
 option routers 192.168.88.2;
 option domain-name-servers 1.1.1.1, 8.8.8.8;
 next-server 192.168.88.23;
 filename "efi64/syslinux.efi";
}

subnet 192.168.89.0 netmask 255.255.255.0 {
 range 192.168.89.110 192.168.89.120;
 option routers 192.168.89.2;
 option domain-name-servers 1.1.1.1, 8.8.8.8;
 next-server 192.168.89.23;
 filename "bios/lpxelinux.0";
}

7、本此演示的pxe安装,不包含自动安装

 

演示效果:

uefi

bios

 

后记:ubuntu-server版自动安装

posted on 2025-06-27 10:02  赛博狗尾草  阅读(661)  评论(0)    收藏  举报

导航