私はデュアルブートシステムを持っています。私のUbuntuパーティションは、BIOSでスケジュールされたウェイクアップ(および可能であればwakeonlan)で自動的に起動する必要があります。それ以外の場合は、デフォルトでWindowsを起動します。 (電源スイッチ)
BIOSのウェイクアップまたはwakeonlanの後にのみUbuntuを起動するようにシステムを構成し、それ以外の場合はデフォルトでWindowsに設定するにはどうすればよいですか?これを行うためにgrubを構成またはスクリプト化することは可能ですか?
私は、ユーザーが夜間に不在のときに、バックアップWindowsステーション(ntfsclone
またはpartclone
を使用)にこのようなトリックを使用しました。
ネットワーク経由で起動するためのPXEブートサーバー(dhcpd + tftpd)を作成します(ネットワーク上の各コンピューターまたはmakeグループに特定のブートメニューを作成できます。ネットワークブートメニューはローカルハードドライブを指すことができます。)
このサーバーで2つの異なるブートメニューを準備します。1つはデフォルトでubuntuになり、もう1つはデフォルトでwindowになります。
Pxeサーバーによって提供されるウィンドウをデフォルトとするリンクブートメニュー。
wakeupスクリプトを準備します
BIOS wakupによって同期されるようにcrontabを介して同じように実行することもできますが、crontabの場合は、4.
で定義されたスクリプトを実行するだけで済みます。
これでうまくいきます。
(ただし、pxeブートサーバーは軽量であり、ハッキングされたNASまたはDD-WRTルーターなど)のRaspberryPiにもインストールできます。).
dmidecode
情報の使用電源スイッチから起動するときに、dmidecodeを使用してgrub-reboot windows
を実行できます。
次のようなものを含むスクリプトを作成するだけです。
/bin/sh
dmidecode | grep -q 'Wake-up Type: Power Switch' && echo grub-reboot windows
reboot
このスクリプトは、@reboot
ディレクティブを使用してcrontabに追加することにより、起動のたびに実行できます。
(注:grub-reboot
については、/etc/default/grub
を編集する必要がある場合があります。man grub-reboot
を参照してください)
これは機能しますが、Windowsの起動時間が大幅に増加します!
これを回避するために、このジョブを実行できる特別なinitramdisk
を作成できますが、これはそれほど単純ではありません。
ipxe
の使用(多分)わかりません このツール ですが、良いフィードバックがありました。
iPXE は、主要なオープンソースネットワークブートファームウェアです。追加機能で強化された完全なPXE実装を提供します
これは、満足のいく答えなしに、何年にもわたって何度も尋ねられてきました:
OSがウェイクアップの理由を検出できることが知られています。 grub
のようなものでも同じことができるはずですが、現在はそうではありません。
私が見つけた唯一の「解決策」は、Linuxをデフォルトとしてデュアルブート用にgrub
を設定することです。いつものように目を覚まします。コンピューターに(リモートまたはその他の方法で)ログインし、Sudo grub-reboot Windows
などを使用してWindowsを手動で再起動します。セットアップと使用は ここで説明 です。