我在 ubuntu 服务器中运行文件服务器,与 windows 7 双启动,现在我想要一个可以在午夜重启服务器并启动 windows 7 的脚本,我已经在 windows 7 中放了一些自定义脚本,这样它可以在晚上从 windows 7 执行,早上当我启动服务器时,它会自动从 ubuntu 服务器启动
请指导我通过脚本执行它
提前致谢。
答案1
这是一个您应该能够使用的解决方案。它并不完美,需要一些工作,并且可能因您使用的 Ubuntu 版本而异。我使用 16.04 想出了这个。我还测试了它以启动到不同的内核,因为我没有在此框上安装 Windows。由于您有双启动,我必须假设您已经有一个显示的 grub 菜单,并且希望主菜单中有一个 Windows 条目,而不是子菜单中的条目,因为我稍后会介绍。
首先你需要编辑你的/etc/default/grub
文件
查找条目,GRUB_DEFAULT="#"
它可能是 0。将其更改为GRUB_DEFAULT="saved"
在其下添加一行,内容为GRUB_SAVEDEFAULT="true"
它看起来应该像这样:
GRUB_DEFAULT="saved"
GRUB_SAVEDEFAULT="true"
...and so on...
保存文件并在终端运行sudo update-grub
现在到了我猜测的部分。当你启动计算机时,它出现在 GRUB 菜单上...在我用来测试的 VM 框上,它显示以下条目
Ubuntu
Advanced options for Ubuntu
Memory test (memtest86+)
Memory test (memtest86+,serial console)
Test1
我必须创建Test1 entry
才能使其工作,但我感觉你Windows entry
在这个列表中的某个地方有一个,但我不知道它在哪里。你需要计算该菜单项在列表中的位置。例如,如果你的菜单项Windows entry
位于我的菜单项所在的位置Test1 entry
,那么它将位于位置 4(Ubuntu 位于位置 0 而不是 1)
现在我们需要创建一个文件..我将startwin
在此示例中使用startwin
您最喜欢的编辑器打开它并输入以下内容:
#!/bin/bash
grub-reboot 4
reboot now
(当然 4 是你确定的位置的数字Windows entry
)保存文件并打开终端。切换到所在startwin
的目录并确保其设置为可执行。
sudo chmod +x startwin
现在您可以尝试一下了。打开终端,切换到文件所在的目录,然后输入“sudo ./startwin
当然,保存所有工作”并关闭所有打开的内容,因为这将重新启动计算机。它应该在 Windows 中启动,当您告诉 Windows 重新启动时,它应该再次返回到 Ubuntu。
如果它有效,您所要做的就是设置一个 cron 作业,让它在午夜运行。
编辑/etc/crontab
在底部添加条目
00 00 * * * root path/to/startwin/startwin
并创建一个 Windows 任务,当您希望它切换回 Ubuntu(例如早上 7 点)时重新启动。
现在,早上 7 点您的 Windows 任务将自动重新启动到 Ubuntu,午夜您的 Ubuntu 脚本将自动重新启动到 Windows。