链接从Windows重新启动到Ubuntu
我有标准的双启动系统:Ubuntu和Windows。 Grub配置为默认启动Windows。
有没有办法在Windows中创建某种链接,这将:
- 重启Windows
- 启动到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脚本(由您所需的快捷方式执行),它将:
- 备份OLD GRUB(默认为Windows)
- 复制修改过的GRUB(默认为Ubuntu)而不是OLD(默认为Windows)
- 重启电脑
- 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
/y
– copy
命令选项,禁止提示您确认是否要覆盖现有目标文件
/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=saved
和GRUB_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