我正在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 任務,當你希望它像早上 7 點一樣切換回 Ubuntu 時重新啟動。
現在,早上 7 點,您的 Windows 任務將自動重新啟動到 Ubuntu,而在午夜,您的 Ubuntu 腳本將自動重新啟動到 Windows。