一、基础环境
1、PXE服务器设备
有网卡用于提供pxe/tftp/nfs服务
uos桌面操作系统
2、PXE客户端设备
支持网络启动
确保能正常连接网络,有MAC地址
如果是龙芯的设备,其固件版本必须在4.00.0024以上
注意:PXE客户端 bios设置如下(昆仑固件)
高级-网络栈配置-网络栈-启用
3、PXE工作原理
注意:
(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