我正在寻找一个一键快捷方式来注销、重启并在相反的操作系统中启动。我在网上找到的唯一信息是在 Windows 和 Windows 之间,我不确定它是否不同。
答案1
笔记:这个答案还在进行中。
可以这样做。我不确定你正在运行什么桌面环境,但步骤应该相对接近。这些步骤将创建一个可以从命令行运行的脚本,以及一个可以通过单击启动的桌面启动器。无论哪种方式,最好让它在重新启动之前要求输入密码。
首先要创建一个脚本,其中包含基于我的另一个答案在这里使用grub-reboot
它来设置 GRUB 的默认启动项,仅用于下次启动。这样做的原因是不需要编辑该/etc/default/grub
文件或/boot/grub/grub.cfg
文件。
我调用了我的脚本win_reboot.bsh
,但在将内容添加到脚本之前,运行sudo os-prober
以获取更精确的 Windows 10 名称,以防万一有多个条目可以在具有恢复功能的 OEM 系统中找到,等等。
我不使用 GPT 也不在 OEM 系统上运行,所以我只有一个条目。
$ sudo os-prober
/dev/sdh1:Windows 10 (loader):Windows:chain
记下冒号之间的 Windows 名称:
。我们将使用Windows 10 (loader)
。 awk
实际上,像 这样的特殊字符会出现问题,()/
因此我们必须对像 这样的字符进行转义\
。我们将使用此行,因为如果在写入新文件之前运行的Windows 10 \(loader\)
中有多个条目,它将更加精确。os-prober
grub-update
/boot/grub/grub.cfg
为此,我们还将使用pkexec
已经安装的命令。 gksu 已弃用。
脚本内容:
#!/bin/bash
if [ ${UID} != 0 ]; then
echo "Please run as 'sudo $0'"
exit 1
fi
grub-reboot "$(awk -F"'" '/Windows 10 \(loader\)/ {print $2}' /boot/grub/grub.cfg)"
reboot
如果命令中仅有 1 个 Windows 条目,os-prober
则可以将该grub-reboot
行设置为:
grub-reboot "$(awk -F"'" '/Windows/ {print $2}' /boot/grub/grub.cfg)"
该脚本将搜索grub.cfg
文件并获取引导的完整名称Windows 10 (loader)
。我编写了一行来处理将来grub-update
执行的更改并更改该行的名称。这样做的原因是,如果您在系统中添加硬盘驱动器或在启动期间无法启动的 USB 驱动器,则驱动器名称可能会更改。您可能会看到一行内容类似于,Windows 10 (loader) (on /dev/sdh1)
然后在另一行上grub-update
它更改为Windows 10 (loader) (on /dev/sdg1)
。这些条目实际上依赖于分区的而不是 grub 条目中的名称,这是件好事UUID
。
接下来,使脚本可执行:
sudo chmod +x win_reboot.bsh
现在如果你从命令行运行它,sudo
它应该看起来像这样:
$ ./win_reboot.bsh
Please run as 'sudo ./win_reboot.bsh'
为新脚本创建一个快捷方式。我希望当您右键单击桌面时,这Create Launcher
是其中一个选项。我正在Xfce4
以桌面运行。我想您可以根据评论由 Andrew Shum 发布只要它指向 win_reboot.bsh 脚本,它就仍然可以工作。
编辑:根据我收到的下面评论,我在这里更改了启动器。 sudo -H
除非您已将选项设置为在终端中运行,否则它不起作用。 这里还要注意的一点是,此启动器正在调用 CLI 脚本而不是 GUI 应用程序。
~/Desktop
您可以在文件夹中创建一个名为的文件Boot to Windows 10.desktop
,并向其中添加以下内容:
[Desktop Entry]
Version=1.0
Type=Application
Name=Boot to Windows 10
Comment=Reboot System to Windows 10
Exec=pkexec /home/terrance/scripts/win_reboot.bsh
Icon=web-microsoft
Path=
Terminal=false
StartupNotify=false
请记住更改该Exec=
行以匹配您的文件位置。
然后,当您启动快捷方式时,您将看到类似于以超级用户身份输入密码的内容:
希望这可以帮助!