web-dev-qa-db-ja.com

ハードウェアスイッチを使用してロードするOSを選択することはできますか?

Grubが提供するメニューを使用するよりも、起動するOSをよりエレガントに選択する方法を探しています。ケースをオンにして、2つの状態(UbuntuとWindowsなど)でどちらを決定するかを決めるのが良いと思いますOSがロードされます。私はいくつか考えていましたが、スイッチをPWMジェネレーターに接続し、ジェネレーターをファン速度入力ピンに接続することで解決できるはずです。次に、grubからファンの速度を読み取り、ロードするOSを決定する条件付きテストを実行します。

擬似コードの場合:

if (fan.speed > threshold) then
  load Windows;
else
  load Ubuntu;
end

したがって、私の2つの質問は次のとおりです。

  1. Grubを使用したテストをどのように使用して、起動するOSを決定しますか?
  2. 起動時にgrubからファン速度をどのように読み取ることができますか?

もちろん、他の解決策やアイデアも歓迎します:)

5
gris_martin

独自のgrub2モジュールを作成し、BIOSとインターフェイスして生のファン速度情報を取得し、それを使用して結果を解釈および処理する必要があります。明らかにGRUBはファンの速度を知らないか気にしないので、コードを書かずにネイティブにそれを行うことはできません。

より良い解決策は、ブートローダー(ブートローダーのみ、それ以上)をUSBスティックにインストールすることです。 GRUB2またはBOOTMGRを使用できます-それは問題ではありません。

次に、PCは最初にUSBからロードするように構成され、このUSBスティックがPCに挿入されると、Ubuntuで起動します。一方、ローカルディスクはWindowsで起動するように構成されています。つまり、USBの有無によって、PCが起動するOSが決まります。

その時点で、VCCラインの1つにスイッチが付いた変更されたUSBケーブルを使用するのは簡単なことです。アクティブな場合、USBスティックはBIOSに表示され、USBのコピーから起動しますGRUB Ubuntuで起動します。スイッチがオフの場合、PCは「通常」からロードされます。ローカルディスク、Windowsで起動します。

もちろん、ボックス内のUSBスティック、変更されたUSBケーブル、およびVCCスイッチを単一のスタンドアロンユニットとして自由に偽装できます。文字通りUSBポートに差し込むだけで、準備が整っているので、PWMのアイデアよりもはるかにクールです。

4

BIOS/EFIが起動しようとしている場所に適切なHDDを配置して、HDDを切り替えることができるハードスイッチ。

0
iAdjunct

Grubを使用したテストをどのように使用して、起動するOSを決定しますか?

標準のGRUBでは、そうではありません。技術的には、GRUBを変更してこれを行うことができますが、これは1種類のマザーボードでのみ機能する可能性があり、より簡単な方法があります。

より簡単なのは、実際に3番目のOSをロードすることです。例えば。関連するすべてのドライバーを含む小さなLinuxインストール。次に、そこからどちらかのチェーンがこのトリックを試してください。

  • 小さなOS(「chooserOS」と呼びましょう)をデフォルトで起動するように設定します。
  • セレクタで起​​動したら、ファンのステータスを読み取ります(この時点で、ファンの速度やシリアルポートなどに関連するドライバを含む、完全なOSがロードされているため、これは実行可能です)。
  • 起動する次のOSを選択し、ブートローダーを調整します。
  • リブート。

次に、他の両方のOSに、ローダーをチューザーOSにリセットする起動スクリプトを追加します。

0
Hennes