链接从Windows重新启动到Ubuntu

我有标准的双启动系统:Ubuntu和Windows。 Grub配置为默认启动Windows。

有没有办法在Windows中创建某种链接,这将:

  1. 重启Windows
  2. 启动到Ubuntu

您不需要像Michal Hagara建议的那样修改/boot/grub/grub.cfg 。 如果您安装新内核并且不更新e:\home\user\Grubshift\ubuntudefault\grub.cfg这可能会破坏Ubuntu。

您需要做的就是使用以下内容创建/复制文件/boot/grub/grubenv

 # GRUB Environment Block next_entry=2 ########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### 

其中next_entry是下一个grub菜单项的行,应该在下次启动(从零开始)。 所以next_entry=2将是第3行。

Grub会在启动后自动删除该值,以便下次再次启动默认操作系统。

这就是grub-reboot工作原理。

以下是我的想法:

  • http://www.ext2fsd.com/ (它应该能够写入EXT分区,“挂载”并在启动时分配字母)
  • 然后我会准备修改后的GRUB文件,其中Ubuntu被设置为默认操作系统(这个也将存储在Linux分区上)
  • Windows BATCH脚本(由您所需的快捷方式执行),它将:
    1. 备份OLD GRUB(默认为Windows)
    2. 复制修改过的GRUB(默认为Ubuntu)而不是OLD(默认为Windows)
    3. 重启电脑
  • Linux BASH脚本,它将在启动(或重新引导)时修改和更新GRUB,以将Windows设置为默认操作系统

我对这种方法完全错了,但我看不出,为什么它不起作用。

编辑:

还有: http : //www.paragon-drivers.com/extfs-windows/我从未尝试过。


进展

1.Shortcut重启Windows并启动Ubuntu

好的,我们将不得不直接修改grub.cfg(/boot/grub/grub.cfg)(建议不要 – https://askubuntu.com/a/437341/402801),因为有无法从Windows运行update-grub …如果你可以进一步阅读那个阅读。

  • 正如我之前提到的,安装Ext2Fsd ,使其自动挂载并在启动时分配字母
  • 我在/home/user/Grubshift创建了我的“备份文件夹”,包含3个子目录: backup (用于备份实际的/boot/grub/grub.cfg), ubuntudefault (用于存储默认使用Ubuntu的grub.cfg), windowsdefault (你有这个想法)

安装后,Ubuntu被设置为默认值,因此将grub.cfg复制到所需的目录。 我通过grub-customizer修改GRUB(在我看来更安全),将Windows grub.cfg复制到你想要的目录后,我有“Windows默认配置”配置

之后,打开记事本并插入:

 copy e:\boot\grub\grub.cfg /ye:\home\user\Grubshift\backup copy e:\home\user\Grubshift\ubuntudefault\grub.cfg /ye:\boot\grub shutdown /r /t 0 

/ycopy命令选项,禁止提示您确认是否要覆盖现有目标文件

/r /t 0 – 关闭选项,1表示重启,2表示立即,没有丑陋的消息弹出

相应地修改路径!

  • 保存该文件(我使用过UTF-8)并将扩展名更改为*.bat
  • shift.bat创建桌面快捷方式,右键单击shorctur – >属性 – >快捷方式选项卡 – >运行:最小化(将摆脱CMD弹出)

我已经尝试了至少8次,使用grub-customizer将Windows设置为默认值…

我不是说这是安全的,但是嘿!我们正在搞乱引导程序……这不安全

当它完全正常工作时,我们可以完全摆脱GRUB菜单,因为它将始终启动到正确的OS …

这是我如何设置我的配置:

总结一下:系统重新启动默认为上次活动,使用简单的脚本从Windows重新启动到linux,反之亦然。

设置grub以始终引导最后选择:

在linux下:

  • 在/ etc / default / grub中输入GRUB_DEFAULT=savedGRUB_SAVEDEFAULT=true
  • 使用sudo update-grub更新配置

安装Paragons extfs驱动程序

见http://www.paragon-drivers.com/extfs-windows/

创建reboot-scripts:

如果/ boot / grub / grubenv不存在,请使用Germar的答案创建它

从Windows重启到Linux的批处理文件:

 @echo off "C:\Program Files (x86)\Paragon Software\ExtFS for Windows\extmounter" /mount disk1 L: :CheckForFile IF EXIST "L:\boot\grub\grubenv" GOTO FoundIt GOTO CheckForFile :FoundIt sed -i -e '/next_entry/c\next_entry=0' L:/boot/grub/grubenv "C:\Program Files (x86)\Paragon Software\ExtFS for Windows\extmounter" /umount disk1 L: echo press enter to reboot pause shutdown -r -t 00 
  • 替换/mount disk1 L:使用特定于您系统的东西。 您可以使用extmounter /list命令和驱动器号查找可用磁盘。 另外, L:一定不能被拿走。
  • 保存为例如reboot-linux.bat
  • 您可以右键单击bat并选择run as administrator身份run as administrator以执行它

用于从Linux重启到Windows的Shell脚本:

 sudo sed -i -e '/next_entry/c\next_entry=2' /boot/grub/grubenv sudo reboot 
  • 用你的windows条目替换next_entry=2
  • 保存为例如~/reboot_windows并标记为可执行文件: chmod +x ~/reboot_windows