searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

PXE单机部署

2025-02-06 03:02:13
11
0

一、基础环境

1、PXE服务器设备

有网卡用于提供pxe/tftp/nfs服务
uos桌面操作系统

2、PXE客户端设备

支持网络启动
确保能正常连接网络,有MAC地址
如果是龙芯的设备,其固件版本必须在4.00.0024以上
注意:PXE客户端 bios设置如下(昆仑固件)
高级-网络栈配置-网络栈-启用

3、PXE工作原理

image.png
注意:

(1)设置拥有pxe功能的客户端主机开机启动项为网络启动,一般默认都此选项,如果没有可自行设置bios启动项。
(2)客户端开机之后进入网络启动,此时客户端没有IP地址需要发送广播报文(pxe网卡内置dhcp客户端程序),dhcp服务器相应客户端请求,分配给客户端相应的IP地址与掩码等信息。
(3)客户端得到IP地址之后,与tftp通信,下载bootnetaa64.efi文件,根据grub.cfg指定的vmlinuz,initrd.img启动系统内核。
(4)根据grub启动菜单选择共享服务器nfs上面下载系统安装包开始安装系统。

二、软件准备

1、服务端

通过apt-get install命令从仓库安装,需root权限:

软件列表 软件功能
debian-installer-10-netboot-arm64 提供 grub引导 ⽂件及 pxe 图形菜单模块
dnsmasq 提供dhcp、dns、tftp功能
nfs-kernel-server 提供nfs功能
net-tools 提供 ifconfig 命令
uos@uos-PC:~$ useradd -s /usr/sbin/nologin dnsmasq 
uos@uos-PC:~$ groupadd dnsmasq

三、NFS配置

创建⽬录并添加该⽬录到 exports ⽂件,然后重启nfs服务

sudo mkdir /var/nfs
echo '/var/nfs *(ro,sync,no_subtree_check)' |sudo tee -a /etc/exports
sudo systemctl restart nfs-kernel-server

拷⻉光盘内容到nfs⽬录并修改对应权限

1、Arm配置

sudo mkdir /var/nfs/deepin

# 假设光盘挂载⽬录 /media/cdrom
sudo cp -r /media/cdrom/* /var/nfs/deepin/
sudo cp -r /media/cdrom/.disk /var/nfs/deepin/
sudo chown root:root /var/nfs/deepin -R
find /var/nfs/deepin -type d -exec sudo chmod 755 {} \;

2、Mips配置

sudo mkdir -p /var/nfs/mips64el
挂载光盘镜像文件并拷贝镜像文件:
uos@uos-PC:~$ mount oem-lx.iso /mnt/
uos@uos-PC:~$ sudo cp -r /mnt/* /var/nfs/mips64el/
uos@uos-PC:~$ sudo cp -r /mnt/.disk/ /var/nfs/mips64el/
uos@uos-PC:~$ sudo chown -R root:root /var/nfs/mips64el/
uos@uos-PC:~$ find /var/nfs/mips64el/ -type d -exec sudo chmod 755 {} \

3、X86配置

挂载x86镜像并将镜像文件拷贝到/var/nfs/amd64:
uos@uos-PC:~$ sudo mkdir -p /var/nfs/amd64
uos@uos-PC:~$ sudo mount ./oem-amd64/oem-amd64.iso /mnt/
uos@uos-PC:~$ sudo  cp -r /mnt/* /var/nfs/amd64/
uos@uos-PC:~$ sudo cp  -r /mnt/.disk/ /var/nfs/amd64/
uos@uos-PC:~$ sudo chown -R root:root /var/nfs/
uos@uos-PC:~$ find /var/nfs/amd64/ -type d -exec sudo chmod 755 {} \;

修改/var/nfs/平台名称/oem/settings.ini
DI_FULLDISK_MULTIDISK_DEVICE=“/dev/sda”
这个值请根据客户端的真实磁盘名称填写。

四、TFTP配置

建⽴TFTP根⽬录,拷⻉⽂件并修改权限
sudo mkdir /var/tftp

1、Arm配置

1.安装debian-installer-10-netboot-arm64
2.将/usr/lib/debian-installer/images/10/arm64/text/debian-installer 拷贝到 /var/tftp
3. 修改/var/tftp/debian-installer/arm64/grub目录下的grub.cfg文件为(192.168.0.1 是dhcp服务器的ip):
set menu_color_normal=white/black

set menu_color_highlight=black/light-gray

insmod gzio

menuentry "Install uos" {
    set gfxpayload=keep
    linux   /debian-installer/deepin/live/vmlinuz console=tty boot=live netboot=nfs nfsroot=192.168.0.1:/var/nfs/deepin/ components union=overlay locales=zh_CN.UTF-8 livecd-installer --
    initrd  /debian-installer/deepin/live/initrd.img
}
menuentry "Try uos without installing" {
    set gfxpayload=keep
    linux   /debian-installer/deepin/live/vmlinuz console=tty boot=live union=overlay quiet splash --
    initrd  /debian-installer/deepin/live/initrd.img
}


从光盘(ISO⽂件)拷⻉内核⽂件到TFTP⽬录并修改权限
sudo mkdir /var/tftp/debian-installer/deepin
sudo cp /media/cdrom/live /var/tftp/debian-installer/deepin/
sudo cp /var/tftp/debian-installer/arm64/grubaa64.efi /var/tftp/
sudo chown dnsmasq:dnsmasq /var/tftp -R

2 、Mips64el配置

创建efi目录与live目录
sudo mkdir -p /var/tftp/debian-installer/efi-mips64el
sudo mkdir -p /var/tftp/debian-installer/live-mips64el

将pxe.zip解压,core.efi文件放入/var/tftp/debian-installer/efi-mips64el/目录
将grub2目录放入/var/tftp目录下并修改grub2/grub.cfg
将镜像挂载到/mnt并拷贝其中的live目录到/var/tftp/debian-installer/live-mips64el

将/mnt/boot下面的vmlinuz和initrd.img文件都拷贝到/var/tftp/debian-installer/live-mips64el/live目录下

修改/var/tftp/debian-installer/efi-mips64el/grub/grub.cfg
set default=0
set timeout=5

search --no-floppy --set=root -l 'Fedora-MATE'

echo -e "\nWelcome to UOS installer!\n\n"

menuentry 'PXE Install UOS' {
  echo 'Loading kernel ...'
  linux /debian-installer/live-mips64el/live/vmlinuz root=/dev/nfs nfsroot=192.168.0.1:/var/nfs/mips64el rw console=tty livecd-installer locales=zh_CN.UTF-8 boot=live
 
  echo 'Loading initrd ...'
  initrd /debian-installer/live-mips64el/live/initrd.img
}

修改tftp目录权限:
sudo chown dnsmasq:dnsmasq /var/tftp -R

3、X86配置

安装debian-installer-10-netboot-amd64:
uos@uos-PC:~$ sudo apt install debian-installer-10-netboot-amd64
将/usr/lib/debian-installer/images/10/amd64/text/debian-installer 拷贝到 /var/tftp:
3. 修改/var/tftp/debian-installer/amd64/grub目录下的grub.cfg文件为(192.168.0.1 是dhcp服务器的ip):
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
insmod gzio

menuentry "Install uos" {
    set gfxpayload=keep
    linux   /debian-installer/amd64/live/vmlinuz console=tty boot=live netboot=nfs nfsroot=192.168.0.1:/var/nfs/amd64/ components union=overlay locales=zh_CN.UTF-8 livecd-installer --
    initrd  /debian-installer/amd64/live/initrd.lz
}
menuentry "Try uos without installing" {
    set gfxpayload=keep
    linux   /debian-installer/amd64/live/vmlinuz console=tty boot=live union=overlay quiet splash --
    initrd  /debian-installer/amd64/live/initrd.lz
}


从光盘(ISO⽂件)拷⻉内核⽂件到TFTP⽬录并修改权限
sudo mkdir /var/tftp/debian-installer/amd64
sudo cp -r /media/cdrom/live /var/tftp/debian-installer/amd64
sudo cp /var/tftp/debian-installer/amd64/grubx64.efi /var/tftp/
sudo chown dnsmasq:dnsmasq /var/tftp -R

五、Dnsmasq配置

1、配置网络

需要指定⼀张⽹卡给dnsmasq使⽤,本⽂档中使⽤enp0s8
修改 /etc/network/interfaces ⽂件,配置 enp0s8 ⽹卡的IP地址及其他信息,在⽂件中添加如下内容(IP信息需根据实际网络情况进行配置):
auto enp0s8
iface enp0s8 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.1
重启 networking 服务以使设置⽣效:
sudo systemctl restart networking

2、DNSMASQ配置

安装好 dnsmasq 之后,将下⾯内容添加到 /etc/dnsmasq.conf ⽂件最后(IP信息需根据实际网络情况进行配置):
listen-address=192.168.0.1
Arm配置
dhcp-boot=/debian-installer/arm64/bootnetaa64.efi,boothost,192.168.0.1
Mips64el配置
dhcp-boot=/debian-installer/efi-mips64el/core.efi
X86配置
dhcp-boot=/debian-installer/amd64/bootnetx64.efi
# 注意以上三个条目不可共存
# 绑定的⽹卡
interface=enp0s8
bind-interfaces
# 此项⾮必须
domain=pxe.local
# IP分配范围 192.168.0.50,192.168.0.150, dhcp租期1⼩时
dhcp-range=192.168.0.50,192.168.0.150,1h
# ⽹关
dhcp-option=3,192.168.0.1
# DNS
dhcp-option=6,192.168.0.1
# 转发dns请求到上级服务器
server=114.114.114.114
# ⼴播地址
dhcp-option=28,192.168.0.255
# NTP服务器,0.0.0.0 指向⾃⼰
dhcp-option=42,0.0.0.0
# 启⽤dnsmasq内置tftp服务
enable-tftp
# tftp根⽬录
tftp-root=/var/tftp
然后重启dnsmasq服务:
sudo systemctl restart dnsmasq
0条评论
作者已关闭评论
李****堃
44文章数
7粉丝数
李****堃
44 文章 | 7 粉丝
原创

PXE单机部署

2025-02-06 03:02:13
11
0

一、基础环境

1、PXE服务器设备

有网卡用于提供pxe/tftp/nfs服务
uos桌面操作系统

2、PXE客户端设备

支持网络启动
确保能正常连接网络,有MAC地址
如果是龙芯的设备,其固件版本必须在4.00.0024以上
注意:PXE客户端 bios设置如下(昆仑固件)
高级-网络栈配置-网络栈-启用

3、PXE工作原理

image.png
注意:

(1)设置拥有pxe功能的客户端主机开机启动项为网络启动,一般默认都此选项,如果没有可自行设置bios启动项。
(2)客户端开机之后进入网络启动,此时客户端没有IP地址需要发送广播报文(pxe网卡内置dhcp客户端程序),dhcp服务器相应客户端请求,分配给客户端相应的IP地址与掩码等信息。
(3)客户端得到IP地址之后,与tftp通信,下载bootnetaa64.efi文件,根据grub.cfg指定的vmlinuz,initrd.img启动系统内核。
(4)根据grub启动菜单选择共享服务器nfs上面下载系统安装包开始安装系统。

二、软件准备

1、服务端

通过apt-get install命令从仓库安装,需root权限:

软件列表 软件功能
debian-installer-10-netboot-arm64 提供 grub引导 ⽂件及 pxe 图形菜单模块
dnsmasq 提供dhcp、dns、tftp功能
nfs-kernel-server 提供nfs功能
net-tools 提供 ifconfig 命令
uos@uos-PC:~$ useradd -s /usr/sbin/nologin dnsmasq 
uos@uos-PC:~$ groupadd dnsmasq

三、NFS配置

创建⽬录并添加该⽬录到 exports ⽂件,然后重启nfs服务

sudo mkdir /var/nfs
echo '/var/nfs *(ro,sync,no_subtree_check)' |sudo tee -a /etc/exports
sudo systemctl restart nfs-kernel-server

拷⻉光盘内容到nfs⽬录并修改对应权限

1、Arm配置

sudo mkdir /var/nfs/deepin

# 假设光盘挂载⽬录 /media/cdrom
sudo cp -r /media/cdrom/* /var/nfs/deepin/
sudo cp -r /media/cdrom/.disk /var/nfs/deepin/
sudo chown root:root /var/nfs/deepin -R
find /var/nfs/deepin -type d -exec sudo chmod 755 {} \;

2、Mips配置

sudo mkdir -p /var/nfs/mips64el
挂载光盘镜像文件并拷贝镜像文件:
uos@uos-PC:~$ mount oem-lx.iso /mnt/
uos@uos-PC:~$ sudo cp -r /mnt/* /var/nfs/mips64el/
uos@uos-PC:~$ sudo cp -r /mnt/.disk/ /var/nfs/mips64el/
uos@uos-PC:~$ sudo chown -R root:root /var/nfs/mips64el/
uos@uos-PC:~$ find /var/nfs/mips64el/ -type d -exec sudo chmod 755 {} \

3、X86配置

挂载x86镜像并将镜像文件拷贝到/var/nfs/amd64:
uos@uos-PC:~$ sudo mkdir -p /var/nfs/amd64
uos@uos-PC:~$ sudo mount ./oem-amd64/oem-amd64.iso /mnt/
uos@uos-PC:~$ sudo  cp -r /mnt/* /var/nfs/amd64/
uos@uos-PC:~$ sudo cp  -r /mnt/.disk/ /var/nfs/amd64/
uos@uos-PC:~$ sudo chown -R root:root /var/nfs/
uos@uos-PC:~$ find /var/nfs/amd64/ -type d -exec sudo chmod 755 {} \;

修改/var/nfs/平台名称/oem/settings.ini
DI_FULLDISK_MULTIDISK_DEVICE=“/dev/sda”
这个值请根据客户端的真实磁盘名称填写。

四、TFTP配置

建⽴TFTP根⽬录,拷⻉⽂件并修改权限
sudo mkdir /var/tftp

1、Arm配置

1.安装debian-installer-10-netboot-arm64
2.将/usr/lib/debian-installer/images/10/arm64/text/debian-installer 拷贝到 /var/tftp
3. 修改/var/tftp/debian-installer/arm64/grub目录下的grub.cfg文件为(192.168.0.1 是dhcp服务器的ip):
set menu_color_normal=white/black

set menu_color_highlight=black/light-gray

insmod gzio

menuentry "Install uos" {
    set gfxpayload=keep
    linux   /debian-installer/deepin/live/vmlinuz console=tty boot=live netboot=nfs nfsroot=192.168.0.1:/var/nfs/deepin/ components union=overlay locales=zh_CN.UTF-8 livecd-installer --
    initrd  /debian-installer/deepin/live/initrd.img
}
menuentry "Try uos without installing" {
    set gfxpayload=keep
    linux   /debian-installer/deepin/live/vmlinuz console=tty boot=live union=overlay quiet splash --
    initrd  /debian-installer/deepin/live/initrd.img
}


从光盘(ISO⽂件)拷⻉内核⽂件到TFTP⽬录并修改权限
sudo mkdir /var/tftp/debian-installer/deepin
sudo cp /media/cdrom/live /var/tftp/debian-installer/deepin/
sudo cp /var/tftp/debian-installer/arm64/grubaa64.efi /var/tftp/
sudo chown dnsmasq:dnsmasq /var/tftp -R

2 、Mips64el配置

创建efi目录与live目录
sudo mkdir -p /var/tftp/debian-installer/efi-mips64el
sudo mkdir -p /var/tftp/debian-installer/live-mips64el

将pxe.zip解压,core.efi文件放入/var/tftp/debian-installer/efi-mips64el/目录
将grub2目录放入/var/tftp目录下并修改grub2/grub.cfg
将镜像挂载到/mnt并拷贝其中的live目录到/var/tftp/debian-installer/live-mips64el

将/mnt/boot下面的vmlinuz和initrd.img文件都拷贝到/var/tftp/debian-installer/live-mips64el/live目录下

修改/var/tftp/debian-installer/efi-mips64el/grub/grub.cfg
set default=0
set timeout=5

search --no-floppy --set=root -l 'Fedora-MATE'

echo -e "\nWelcome to UOS installer!\n\n"

menuentry 'PXE Install UOS' {
  echo 'Loading kernel ...'
  linux /debian-installer/live-mips64el/live/vmlinuz root=/dev/nfs nfsroot=192.168.0.1:/var/nfs/mips64el rw console=tty livecd-installer locales=zh_CN.UTF-8 boot=live
 
  echo 'Loading initrd ...'
  initrd /debian-installer/live-mips64el/live/initrd.img
}

修改tftp目录权限:
sudo chown dnsmasq:dnsmasq /var/tftp -R

3、X86配置

安装debian-installer-10-netboot-amd64:
uos@uos-PC:~$ sudo apt install debian-installer-10-netboot-amd64
将/usr/lib/debian-installer/images/10/amd64/text/debian-installer 拷贝到 /var/tftp:
3. 修改/var/tftp/debian-installer/amd64/grub目录下的grub.cfg文件为(192.168.0.1 是dhcp服务器的ip):
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
insmod gzio

menuentry "Install uos" {
    set gfxpayload=keep
    linux   /debian-installer/amd64/live/vmlinuz console=tty boot=live netboot=nfs nfsroot=192.168.0.1:/var/nfs/amd64/ components union=overlay locales=zh_CN.UTF-8 livecd-installer --
    initrd  /debian-installer/amd64/live/initrd.lz
}
menuentry "Try uos without installing" {
    set gfxpayload=keep
    linux   /debian-installer/amd64/live/vmlinuz console=tty boot=live union=overlay quiet splash --
    initrd  /debian-installer/amd64/live/initrd.lz
}


从光盘(ISO⽂件)拷⻉内核⽂件到TFTP⽬录并修改权限
sudo mkdir /var/tftp/debian-installer/amd64
sudo cp -r /media/cdrom/live /var/tftp/debian-installer/amd64
sudo cp /var/tftp/debian-installer/amd64/grubx64.efi /var/tftp/
sudo chown dnsmasq:dnsmasq /var/tftp -R

五、Dnsmasq配置

1、配置网络

需要指定⼀张⽹卡给dnsmasq使⽤,本⽂档中使⽤enp0s8
修改 /etc/network/interfaces ⽂件,配置 enp0s8 ⽹卡的IP地址及其他信息,在⽂件中添加如下内容(IP信息需根据实际网络情况进行配置):
auto enp0s8
iface enp0s8 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.1
重启 networking 服务以使设置⽣效:
sudo systemctl restart networking

2、DNSMASQ配置

安装好 dnsmasq 之后,将下⾯内容添加到 /etc/dnsmasq.conf ⽂件最后(IP信息需根据实际网络情况进行配置):
listen-address=192.168.0.1
Arm配置
dhcp-boot=/debian-installer/arm64/bootnetaa64.efi,boothost,192.168.0.1
Mips64el配置
dhcp-boot=/debian-installer/efi-mips64el/core.efi
X86配置
dhcp-boot=/debian-installer/amd64/bootnetx64.efi
# 注意以上三个条目不可共存
# 绑定的⽹卡
interface=enp0s8
bind-interfaces
# 此项⾮必须
domain=pxe.local
# IP分配范围 192.168.0.50,192.168.0.150, dhcp租期1⼩时
dhcp-range=192.168.0.50,192.168.0.150,1h
# ⽹关
dhcp-option=3,192.168.0.1
# DNS
dhcp-option=6,192.168.0.1
# 转发dns请求到上级服务器
server=114.114.114.114
# ⼴播地址
dhcp-option=28,192.168.0.255
# NTP服务器,0.0.0.0 指向⾃⼰
dhcp-option=42,0.0.0.0
# 启⽤dnsmasq内置tftp服务
enable-tftp
# tftp根⽬录
tftp-root=/var/tftp
然后重启dnsmasq服务:
sudo systemctl restart dnsmasq
文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
1
0