由于PXE引导会使用电脑内存作为暂存盘,一般建议8GB或以上内存的电脑参考该教程进行引导。
- 参考文档
- NAS配置
- Active Backup for Business Windows 还原精灵
- Windows PE 运行还原精灵
- Active Backup for Business Linux 还原精灵
- Ubuntu 22.04 运行还原精灵
- note
参考文档
群晖官方文档:
https://kb.synology.com/en-global/UG/ABB_Recovery_Media_Creation_Guide/3
Windows 官方文档:
https://learn.microsoft.com/zh-tw/windows/deployment/configure-a-pxe-server-to-load-windows-pe
Ubuntu PXE 引导文档:
https://hmli.ustc.edu.cn/doc/linux/ubuntu-autoinstall/ubuntu-autoinstall.html
SLAX PXE 文档:
https://www.slax.org/blog/20662-How-PXE-
ipxe 相关:
https://github.com/ipxe/wimboot
NAS配置
需要先安装 DHCP Server 以及 Web Station 套件:
配置TFTP
新建一个共享文件夹用于存放TFTP引导文件,这边建立的是pxe:
在 控制面板 -> 文件服务 -> 高级设置 启用TFTP服务并选择pxe共享文件夹:
在高级设置中启用TFTP传输日志以了解具体传输情况:
配置测试引导文件
在以下地址中下载 ipxe.efi 并存放到pxe共享文件夹:
https://boot.ipxe.org/
在pxe共享文件夹内新建一个 autoexec.ipxe 文件用于配置ipxe引导:
autoexec.ipxe 文件内容如下:
#!ipxe
set boot-url http://192.168.200.1:26100
dhcp
echo cwduri............: ${cwduri}
echo cwuri.............: ${cwuri}
echo platform..........: ${platform}
echo chip .............: ${chip}
echo mac...............: ${mac}
echo ip................: ${ip}
echo netmask...........: ${netmask}
echo gateway...........: ${gateway}
echo dns...............: ${dns}
echo dhcp-server.......: ${dhcp-server}
echo next-server.......: ${next-server}
echo filename..........: ${filename}
sleep 5
menu
item --gap -- ---------------- iPXE boot menu ----------------
item shell iPXE shell
item exit Exit to BIOS
choose --default exit --timeout 5000 option && goto ${option}
:shell
shell
:exit
exit
配置DHCP Server
请确保NAS提供TFTP网口没有其他的DHCP服务器。
编辑TFTP网口手动配置IP:
在 DHCP Server -> 网络接口 编辑对应网络接口配置启用DHCP服务器、选择网关是NAS的网口IP(192.168.200.1)、新增子网列表并勾选启用。
在DHCP Server -> PXE 中勾选启用 PEX 并选择ipxe.efi文件作为启用加载器:
配置Web Station
由于TFTP下载速度感人,所以这边需要额外建立http服务器,让ipxe可以通过http方式来加载及下载引导文件。
在 web 共享文件夹下新建一个子文件夹(tftpboot)用于存放配置以及引导文件:
在 Web Station -> 网页服务 新增一个 静态网站:
起一个网站名称和描述(pxe),并选择文档根目录为存放配置以及引导文件的文件夹(web/tftpboot):
在 Web Station -> 网络门户 新增一个 网页服务门户:
选择服务为之前建立的静态网站(pxe),选择类型为基于端口,选择一个自定义端口(26100):
对应的是autoexec.ipxe文件中的boot-url:
set boot-url http://192.168.200.1:26100
测试ipxe
使用UEFI引导启用电脑,查看是否可以正常获取到IP以及跳转出ipxe菜单:
Active Backup for Business Windows 还原精灵
获取引导文件
下载Synology Active Backup for Business 还原媒体建立工具Windows版:
https://www.synology.cn/zh-cn/support/download
运行并建立ISO引导镜像:
将ISO引导镜像中的以下文件放到NAS配置以及引导文件的文件夹(web/tftpboot/ABBwin),这边为了方便区分又新建了一个子文件夹ABBwin:
\EFI\Boot\bootx64.efi
\sources\boot.wim
\Boot\boot.sdi
使用管理员权限运行CMD命令行,然后输入以下命令生成BCD:
bcdedit /createstore C:\BCD
bcdedit /store C:\BCD /create {ramdiskoptions} /d "Ramdisk options"
bcdedit /store C:\BCD /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /store C:\BCD /set {ramdiskoptions} ramdisksdipath \boot.sdi
bcdedit /store C:\BCD /create /d "winpe boot image" /application osloader
这边会提示项 {*****} 成功创建。
请将以下{GUID1}
替换为命令提示的{*****}
并继续命令:
bcdedit /store C:\BCD /set {GUID1} device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit /store C:\BCD /set {GUID1} osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit /store C:\BCD /set {GUID1} systemroot \windows
bcdedit /store C:\BCD /set {GUID1} detecthal Yes
bcdedit /store C:\BCD /set {GUID1} winpe Yes
bcdedit /store C:\BCD /create {bootmgr} /d "boot manager"
bcdedit /store C:\BCD /set {bootmgr} timeout 30
bcdedit /store C:\BCD -displayorder {GUID1} -addlast
将生成的BCD放到NAS配置以及引导文件的文件夹(web/tftpboot/ABBwin)。
在以下链接下载wimboot引导程序放到NAS配置以及引导文件的文件夹(web/tftpboot)。
https://github.com/ipxe/wimboot/releases
调整ipxe配置档
修改pxe共享文件夹内的autoexec.ipxe。
在menu下添加以下内容:
item ABBwin ABBwin
在choose下添加以下内容:
:ABBwin
chain ${boot-url}/ABBwin.ipxe
如果需要调整默认启动项也可以将default调整为ABBwin
调整后配置文件如下:
在NAS配置以及引导文件的文件夹(web/tftpboot)新建ABBwin.ipxe
配置档,ABBwin.ipxe文件内容如下:
#!ipxe
kernel ${boot-url}/wimboot
initrd ${boot-url}/ABBwin/bootx64.efi bootx64.efi
initrd ${boot-url}/ABBwin/BCD BCD
initrd ${boot-url}/ABBwin/boot.sdi boot.sdi
initrd ${boot-url}/ABBwin/boot.wim boot.wim
boot || goto failed
测试ipxe引导启动
确认web/tftpboot目录中有以下文件:
使用UEFI引导启用电脑,查看是否可以正常进入Windows 还原精灵:
Windows PE 运行还原精灵
获取引导文件
这边还是使用的是USBOS:
https://www.itsk.com/thread/365351
将USBOS镜像中的以下文件放到NAS配置以及引导文件的文件夹(web/tftpboot/winPE),这边为了方便区分又新建了一个子文件夹winPE:
\EFI\BOOT\BOOTX64.EFI
\BOOT\BOOT.SDI
使用管理员权限运行CMD命令行,然后输入以下命令生成BCD:
bcdedit /createstore C:\BCD
bcdedit /store C:\BCD /create {ramdiskoptions} /d "Ramdisk options"
bcdedit /store C:\BCD /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /store C:\BCD /set {ramdiskoptions} ramdisksdipath \boot.sdi
bcdedit /store C:\BCD /create /d "winpe boot image" /application osloader
这边会提示项 {*****} 成功创建。
请将以下{GUID1}
替换为命令提示的{*****}
并继续命令:
bcdedit /store C:\BCD /set {GUID1} device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit /store C:\BCD /set {GUID1} osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit /store C:\BCD /set {GUID1} systemroot \windows
bcdedit /store C:\BCD /set {GUID1} detecthal Yes
bcdedit /store C:\BCD /set {GUID1} winpe Yes
bcdedit /store C:\BCD /create {bootmgr} /d "boot manager"
bcdedit /store C:\BCD /set {bootmgr} timeout 30
bcdedit /store C:\BCD -displayorder {GUID1} -addlast
将生成的BCD放到NAS配置以及引导文件的文件夹(web/tftpboot/winPE)。
在以下链接下载wimboot引导程序放到NAS配置以及引导文件的文件夹(web/tftpboot)。
如果已经添加过了不需要重复添加
https://github.com/ipxe/wimboot/releases
修改引导boot.wim
由于USBOS原生并不支持PXE引导启动,所以需要手动修改并加入Windows 还原精灵。
下载Activebackup For Business Windows 还原精灵:
https://archive.synology.cn/download/Utility/ActiveBackupforRecoveryTool
选择最新版本下载64x版本的zip:
这边修改的是win10的PE,将USBOS镜像中\BOOT\NT10PEX64.WIN提取到Windows电脑本地,然后下载WimKitx64或者其他wim编辑软件进行编辑。
链接: https://pan.baidu.com/s/1RXO2xZdmFA6P2HFYf3jbvQ?pwd=gdkh
提取码: gdkh
使用管理员运行WimKitx64,在应用中选择NT10PEX64.WIN,并选择一个空的文件夹点击应用进行解压缩:
在解压目录下新建一个BOOT,并将USBOS镜像中的BOOT\EXTAPP复制到解压目录的BOOT中:
然后将Activebackup For Business Windows 还原精灵放到解压目录的根目录下:
使用管理员运行WimKitx64,在捕获中选择源文件夹为之前的解压目录,WIM文件选择为新的WIM文件名称,点击创建:
选择压缩为最大,并且勾选添加可引导标记:
将生成的BOOT.WIM放到NAS配置以及引导文件的文件夹(web/tftpboot/winPE)。
调整ipxe配置档
修改pxe共享文件夹内的autoexec.ipxe。
在menu下添加以下内容:
item winPE winPE
在choose下添加以下内容:
:winPE
chain ${boot-url}/winPE.ipxe
如果需要调整默认启动项也可以将default调整为winPE
调整后配置文件如下:
在NAS配置以及引导文件的文件夹(web/tftpboot)新建winPE.ipxe
配置档,ABBwin.ipxe文件内容如下:
#!ipxe
kernel ${boot-url}/wimboot
initrd ${boot-url}/winPE/BOOTX64.EFI bootx64.efi
initrd ${boot-url}/winPE/BCD BCD
initrd ${boot-url}/winPE/BOOT.SDI boot.sdi
initrd ${boot-url}/winPE/BOOT.WIM boot.wim
boot || goto failed
测试ipxe引导启动
确认web/tftpboot目录中有以下文件:
使用UEFI引导启用电脑,查看是否可以正常进入Windows PE:
在系统盘根目录找到并解压缩Windows 还原精灵:
运行还原精灵:
Active Backup for Business Linux 还原精灵
获取引导文件
下载Synology Active Backup for Business 还原媒体建立工具Linux版:
https://www.synology.cn/zh-cn/support/download
将ISO引导镜像中的以下文件放到NAS配置以及引导文件的文件夹(web/tftpboot/ABBlinux),这边为了方便区分又新建了一个子文件夹ABBlinux:
\slax\boot\initrfs.img
\slax\boot\vmlinuz
由于Active Backup for Business Linux 还原精灵使用的是SLAX系统,需要将额外组件也放到引导文件夹(web/tftpboot/ABBlinux):
\slax下的所有*.sb
\slax\modules下的所有*.sb
由于SLAX在PXE引导时需要一个文件目录以下载所有需要的组件,这边需要在引导文件的文件夹(web/tftpboot)新建PXEFILELIST
配置档,PXEFILELIST文件内容如下(需要UTF-8字符集):
ABBlinux/01-core.sb
ABBlinux/01-firmware.sb
ABBlinux/02-xorg.sb
ABBlinux/03-desktop.sb
ABBlinux/04-apps.sb
ABBlinux/06-install.sb
ABBlinux/07-config.sb
ABBlinux/08-abb_wizard.sb
调整ipxe配置档
修改pxe共享文件夹内的autoexec.ipxe。
在menu下添加以下内容:
item ABBlinux ABBlinux
在choose下添加以下内容:
:ABBlinux
chain ${boot-url}/ABBlinux.ipxe
如果需要调整默认启动项也可以将default调整为ABBlinux
调整后配置文件如下:
在NAS配置以及引导文件的文件夹(web/tftpboot)新建ABBlinux.ipxe
配置档,ABBlinux.ipxe文件内容如下:
其中ip=192.168.200.200:192.168.200.1::255.255.255.0:26100
需要按实际情况调整。
字符串分别为ip=<client-ip>:<boot-server-ip>:<gw-ip>:<netmask>:<http-port>
#!ipxe
kernel ${boot-url}/ABBlinux/vmlinuz vga=normal ip=192.168.200.200:192.168.200.1::255.255.255.0:26100 load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 slax.flags=perch
initrd ${boot-url}/ABBlinux/initrfs.img
boot || goto failed
测试ipxe引导启动
确认web/tftpboot目录中有以下文件:
使用UEFI引导启用电脑,查看是否可以正常进入Linux 还原精灵:
Ubuntu 22.04 运行还原精灵
获取引导文件
这边选择使用的是Ubuntu 22.04 LTS desktop
https://cn.ubuntu.com/download/desktop
下载Activebackup For Business Linux 还原精灵:
https://archive.synology.cn/download/Utility/ActiveBackupforRecoveryTool
选择最新版本下载64x版本的tar.gz:
使用UltraISO(软碟通)打开将Activebackup For Business Linux 还原精灵以及所需的额外驱动放入后并保存后写入到ISO中:
保存后将Ubuntu ISO也放入到引导文件的文件夹(web/tftpboot/Ubuntu),这边为了方便区分又新建了一个子文件夹Ubuntu。
并将ISO引导镜像中的以下文件放到引导文件的文件夹(web/tftpboot/Ubuntu):
/casper/vmlinuz
/casper/initrd
调整ipxe配置档
修改pxe共享文件夹内的autoexec.ipxe。
在menu下添加以下内容:
item Ubuntu Ubuntu
在choose下添加以下内容:
:Ubuntu
chain ${boot-url}/Ubuntu.ipxe
如果需要调整默认启动项也可以将default调整为ABBlinux
调整后配置文件如下:
在NAS配置以及引导文件的文件夹(web/tftpboot)新建Ubuntu.ipxe
配置档,Ubuntu.ipxe文件内容如下:
#!ipxe
kernel ${boot-url}/Ubuntu/vmlinuz initrd=initrd ip=dhcp url=${boot-url}/Ubuntu/ubuntu-22.04.3-desktop-amd64.iso root=/dev/ram0 file=${boot-url}/Ubuntu/ubuntu.seed boot=casper quiet splash
initrd ${boot-url}/Ubuntu/initrd
boot || goto failed
测试ipxe引导启动
确认web/tftpboot目录中有以下文件:
使用UEFI引导启用电脑,查看是否可以正常进入Ubuntu:
在应用中打开“Terminal”
使用以下命令切换到root用户并建立还原应用文件夹将程序解压缩。
切换root:
sudo -i
查看挂载情况:
df -h
创建还原应用文件夹:
mkdir -p /opt/Synology/ActiveBackupRecovery
将还原程序从引导目录复制到还原应用文件夹内:
cd /opt/Synology/ActiveBackupRecovery
cp /cdrom/Synology\ Recovery\ Tool-x64-2.7.0-3221.tar.gz .
解压缩还原程序:
tar -zxvf Synology\ Recovery\ Tool-x64-2.7.0-3221.tar.gz
使用以下命令调整临时系统的环境并启动还原程序
调整临时系统环境变量:
export LD_LIBRARY_PATH="/opt/Synology/ActiveBackupRecovery/ui"
调整临时系统主机名:
hostnamectl set-hostname synology-restore-media
启动还原程序:
./ui/recovery
note
Centos PXE引导安装
将光盘下所有文件解压到linuxinstall
TFTP根目录需要以下路径所有文件:
\EFI\BOOT*
\images\pxeboot*
grub.cfg调整为远程装载
menuentry 'Install Oracle Linux 9.4.0' --class fedora --class gnu-linux --class gnu --class os {
linuxefi vmlinuz inst.stage2=http://192.168.200.1/linuxinstall quiet
initrdefi initrd.img
}
Ubuntu PXE引导安装
获取bootx64.efi
apt download shim-signed
dpkg-deb --fsys-tarfile shim-signed*deb | tar x ./usr/lib/shim/shimx64.efi.signed -O > /zhugh/bootx64.efi
获取grubx64.efi
apt download grub-efi-amd64-signed
dpkg-deb --fsys-tarfile grub-efi-amd64-signed*deb | tar x ./usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed -O > /zhugh/grubx64.efi
获取字体
apt download grub-common
dpkg-deb --fsys-tarfile grub-common*deb | tar x ./usr/share/grub/unicode.pf2 -O > /zhugh/unicode.pf2
TFTP根目录需要以下路径文件:
/boot/grub/x86_64-efi/command.lst
/boot/grub/x86_64-efi/crypto.lst
/casper/initrd
/casper/vmlinuz
/grub/grub.cfg调整为远程装载
menuentry "Try or Install Ubuntu" {
set gfxpayload=keep
linux /vmlinuz ip=dhcp url=http://192.168.200.1/linuxinstall/abb.iso root=/dev/ram0 ds=nocloud-net\;s=http://192.168.200.1/linuxinstall/ ---
initrd /initrd
}
查看Windows bcd 内容
bcdedit /store C:\Users\zhugh\Downloads\boot\BCD /enum all
创建Windows mbr bcd
bcdedit /createstore c:\BCD
bcdedit /store c:\BCD /create {ramdiskoptions} /d "Ramdisk options"
bcdedit /store c:\BCD /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /store c:\BCD /set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
bcdedit /store c:\BCD /create /d "winpe boot image" /application osloader
// The last command will return a GUID, for example:
// The entry {a4f89c62-2142-11e6-80b6-00155da04110} was successfully created.
// Copy the returned GUID to use it in the next command. Substitute
bcdedit /store c:\BCD /set {GUID1} device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit /store c:\BCD /set {GUID1} path \windows\system32\winload.exe
bcdedit /store c:\BCD /set {GUID1} osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit /store c:\BCD /set {GUID1} systemroot \windows
bcdedit /store c:\BCD /set {GUID1} detecthal Yes
bcdedit /store c:\BCD /set {GUID1} winpe Yes
bcdedit /store c:\BCD /create {bootmgr} /d "boot manager"
bcdedit /store c:\BCD /set {bootmgr} timeout 30
bcdedit /store c:\BCD -displayorder {GUID1} -addlast
创建Windows uefi bcd
bcdedit /createstore c:\BCD
bcdedit /store c:\BCD /create {ramdiskoptions} /d "Ramdisk options"
bcdedit /store c:\BCD /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /store c:\BCD /set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
bcdedit /store c:\BCD /create /d "winpe boot image" /application osloader
// The last command will return a GUID, for example:
// The entry {a4f89c62-2142-11e6-80b6-00155da04110} was successfully created.
// Copy the returned GUID to use it in the next command. Substitute 'GUID1' with the copied GUID in the commands below:
// Create a new boot record for the Windows PE image:
bcdedit /store c:\BCD /set {GUID1} device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit /store c:\BCD /set {GUID1} path \windows\system32\winload.efi
bcdedit /store c:\BCD /set {GUID1} osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit /store c:\BCD /set {GUID1} systemroot \windows
bcdedit /store c:\BCD /set {GUID1} detecthal Yes
bcdedit /store c:\BCD /set {GUID1} winpe Yes
bcdedit /store c:\BCD /create {bootmgr} /d "boot manager"
bcdedit /store c:\BCD /set {bootmgr} timeout 30
bcdedit /store c:\BCD -displayorder {GUID1} -addlast