web-dev-qa-db-ja.com

BIOSウェイクアップからUbuntuを起動する方法、またはWindowsを起動する方法

私はデュアルブートシステムを持っています。私のUbuntuパーティションは、BIOSでスケジュールされたウェイクアップ(および可能であればwakeonlan)で自動的に起動する必要があります。それ以外の場合は、デフォルトでWindowsを起動します。 (電源スイッチ)

BIOSのウェイクアップまたはwakeonlanの後にのみUbuntuを起動するようにシステムを構成し、それ以外の場合はデフォルトでWindowsに設定するにはどうすればよいですか?これを行うためにgrubを構成またはスクリプト化することは可能ですか?

3
user66309

2つ(または3つ)の異なる方法

PXEサーバーを介したネットワークブートの使用。

私は、ユーザーが夜間に不在のときに、バックアップWindowsステーション(ntfscloneまたはpartcloneを使用)にこのようなトリックを使用しました。

  1. ネットワーク経由で起動するためのPXEブートサーバー(dhcpd + tftpd)を作成します(ネットワーク上の各コンピューターまたはmakeグループに特定のブートメニューを作成できます。ネットワークブートメニューはローカルハードドライブを指すことができます。)

  2. このサーバーで2つの異なるブートメニューを準備します。1つはデフォルトでubuntuになり、もう1つはデフォルトでwindowになります。

  3. Pxeサーバーによって提供されるウィンドウをデフォルトとするリンクブートメニュー。

  4. wakeupスクリプトを準備します

    1. )pxeサーバーによって提供されるubuntuにデフォルト設定されているリンクブートメニュー。
    2. wake-on-lan信号を送信して、コンピューターをウェイクアップします
    3. )TFTPログでブートメニュー要求を待ちます(例外を想定するために、タイムアウトと制限に注意してください)。
    4. )pxeサーバーによって提供されるウィンドウをデフォルトとするブートメニューをリンクします。
  5. 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実装を提供します

1
F. Hauri

これは、満足のいく答えなしに、何年にもわたって何度も尋ねられてきました:

OSがウェイクアップの理由を検出できることが知られています。 grubのようなものでも同じことができるはずですが、現在はそうではありません。

私が見つけた唯一の「解決策」は、Linuxをデフォルトとしてデュアルブート用にgrubを設定することです。いつものように目を覚まします。コンピューターに(リモートまたはその他の方法で)ログインし、Sudo grub-reboot Windowsなどを使用してWindowsを手動で再起動します。セットアップと使用は ここで説明 です。

0
Ouroborus