デュアルブート用スクリプト

デュアルブート用スクリプト

私はWindows 7とのデュアルブートでUbuntuサーバーでファイルサーバーを実行しています。今、真夜中にサーバーを再起動して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 は位置 1 ではなく 0 です)

これで、ファイルを作成する必要があります。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

午前 7 時など Ubuntu に戻したいときに再起動する Windows タスクを作成します。

これで、午前 7 時に Windows タスクが自動的に Ubuntu を再起動し、深夜に Ubuntu スクリプトが自動的に Windows を再起動します。

関連情報