如何在GRUB2启动阶段自动执行Wake On Lan命令实现多设备唤醒
如何在GRUB2启动阶段自动执行Wake On Lan命令实现多设备唤醒
没问题,这个需求完全可以实现!咱们不用在你的Windows主PC上装Ubuntu,只需要用Ubuntu Live USB来配置独立的GRUB2引导分区,就能实现启动时的WOL自动化,还能做两个选项:唤醒其他设备/不唤醒。下面是详细步骤:
一、准备工作
- 制作一个Ubuntu Live USB启动盘(随便哪个新版本都可以,比如22.04 LTS),插到你的TACENS10上,从它启动进入试用Ubuntu模式。
- 提前记好另外两台设备的MAC地址(FREEBNT和XAUDIOSERVER),格式比如
AA:BB:CC:DD:EE:FF。
二、根据你的启动模式(UEFI/BIOS)安装GRUB2
情况1:你的TACENS10是UEFI启动(绝大多数新PC都是)
Windows 10已经自带一个EFI系统分区(ESP,通常是FAT32格式,100MB左右),咱们直接用这个分区来装GRUB:
- 打开终端,先找到ESP分区:输入
lsblk,找类型为vfat、大小100MB左右的分区,比如/dev/sda1。 - 挂载ESP分区:
sudo mount /dev/sda1 /mnt - 安装GRUB到ESP,同时设置GRUB为默认引导项:
(注意这里sudo grub-install --efi-directory=/mnt --bootloader-id=GRUB /dev/sda/dev/sda是你的硬盘设备名,不是分区号,别写错!) - 生成基础的GRUB配置文件:
sudo grub-mkconfig -o /mnt/grub/grub.cfg
情况2:你的TACENS10是BIOS/MBR启动
需要创建一个小的GRUB引导分区:
- 打开磁盘工具(Disks),在你的Windows硬盘上划分一个512MB的FAT32分区(不用格式化也可以,之后终端里格式化)。
- 终端里格式化这个分区(假设分区是
/dev/sda3):sudo mkfs.fat -F32 /dev/sda3 - 挂载这个分区:
sudo mount /dev/sda3 /mnt - 安装GRUB到硬盘:
sudo grub-install --root-directory=/mnt /dev/sda - 生成基础配置文件:
sudo grub-mkconfig -o /mnt/boot/grub/grub.cfg
三、编辑GRUB配置,添加带WOL的启动选项
现在咱们要修改GRUB的配置文件,添加两个Windows启动条目:一个自动唤醒设备,一个直接启动。
- 打开配置文件(UEFI和BIOS的路径略有不同):
- UEFI:
sudo nano /mnt/grub/grub.cfg - BIOS:
sudo nano /mnt/boot/grub/grub.cfg
- UEFI:
- 先找到原来的Windows启动条目(类似下面这样):
menuentry 'Windows Boot Manager (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-efi-XXXX-XXXX' { insmod part_gpt insmod fat set root='hd0,gpt1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 XXXX-XXXX else search --no-floppy --fs-uuid --set=root XXXX-XXXX fi chainloader /EFI/Microsoft/Boot/bootmgfw.efi } - 复制这个条目,粘贴两次,然后修改成下面两个自定义条目:
条目1:自动唤醒其他设备的Windows启动项
menuentry "Windows 10 - 自动唤醒NAS&音频服务器" { # 加载网络模块(UEFI用efinet,BIOS用net) insmod net insmod efinet insmod dhcp # 自动获取IP地址(确保GRUB能连上网发送WOL包) dhcp --client-id=mac # 发送WOL魔术包到两台设备,替换成你的MAC地址 wakeonlan AA:BB:CC:DD:EE:FF # FREEBNT的MAC wakeonlan GG:HH:II:JJ:KK:LL # XAUDIOSERVER的MAC # 下面是原Windows引导的内容,直接复制你之前找到的条目里的对应部分 insmod part_gpt insmod fat set root='hd0,gpt1' search --no-floppy --fs-uuid --set=root XXXX-XXXX chainloader /EFI/Microsoft/Boot/bootmgfw.efi }
条目2:不唤醒设备的Windows启动项
menuentry "Windows 10 - 仅启动本机" { # 直接引导Windows,内容和原条目一致 insmod part_gpt insmod fat set root='hd0,gpt1' search --no-floppy --fs-uuid --set=root XXXX-XXXX chainloader /EFI/Microsoft/Boot/bootmgfw.efi }
- 保存退出(nano里按
Ctrl+O,回车,再按Ctrl+X)。
四、测试验证
- 重启TACENS10,现在会进入GRUB菜单,你能看到刚才添加的两个选项。
- 先选“自动唤醒”选项,看看另外两台设备能不能正常开机。如果没成功,可以进入GRUB命令行(按
c),手动执行命令排查:
确认WOL命令能生效后再检查配置文件的内容是否正确。insmod net insmod efinet dhcp wakeonlan 你的MAC地址
五、设置默认启动项(可选)
如果你想默认进入“自动唤醒”选项,可以编辑GRUB配置文件,找到GRUB_DEFAULT=0(或者其他数字),改成对应条目在菜单里的顺序(第一个是0,第二个是1,以此类推)。
备注:内容来源于stack exchange,提问作者charlesfreejazz
相关产品推荐
相关产品推荐

