Synology NAS 使用 PXE 引导启动Active Backup for Business 还原精灵

由于PXE引导会使用电脑内存作为暂存盘,一般建议8GB或以上内存的电脑参考该教程进行引导。

参考文档

群晖官方文档:

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://boot.ipxe.org/

https://ipxe.org/docs

https://github.com/ipxe/ipxe

https://ipxe.org/wimboot

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