
私は、ハイパースレッディングを必要とする i7-4700EQ ベースの組み込みサーバー システムをいくつか持っています。まれに、CMOS のハイパースレッディング フラグが無効に設定されることを除けば、すべて正常です。ハードウェアがまだ手元にある間は、再起動して CMOS に入り、設定を修正するだけで済みます。(CMOS のその他の設定は、時間/日付を含めてすべて正常のままなので、バッテリーの問題ではないと思います。)
ただし、展開後はコンソールにアクセスできなくなります。CMOS 設定が失われた場合、機器を「修復」することはできますが、非常に単純な問題に対して、それは大変な作業のように思えます。
私の理解では、Linux カーネルはカーネル変数を初期化するためだけに BIOS を読み取ります。これは正しいですか?
それが正しい場合、BIOS の報告を無視してカーネル内でハイパースレッディングを有効にするように Linux カーネルに指示する方法はありますか?
可能であれば、これを行う簡単な方法 (例: grub コマンドライン設定) はありますか? 可能だが難しい場合は、カーネル ソースを変更して再コンパイルすることで、BIOS の内容を無視してハイパースレッディングを有効にすることはできますか?
うまくいくとは思わなかったが、/etc/default/grubですでに試してみた
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash maxcpus=8 nr_cpus=8"
続いて update-grub を使用して再起動します。(maxcpus と nr_cpus を個別に設定することも試しました。)
実行中のシステムでハイパースレッディングを無効にし、その後再度有効にする例は数多く見つかりました。しかし、カーネルが誤って人間が意図的にハイパースレッディングを無効にしたと判断した場合、ハイパースレッディングを有効にする例は見つかりませんでした。
最後に、「ハードウェアが壊れている」と主張することもできますが、それだけでは「戦争」に勝つことはできません。BIOS にもかかわらずハイパースレッディングを強制的に有効にできない場合は、それは有効な回答です。また、その回答に理由や説明が含まれていれば、私にとっては役立つでしょう。
答え1
一般的なルールとしては、これは完全に真実ではありません。
例1:スミファームウェア (別名 BIOS) 割り込みハンドラは、カーネルの起動後もカーネルよりも高い権限で実行されます。SMM と戦ってみるのもいいですが、Linux が特に助けてくれるとは思わないでください。
例 2: 「セキュア ブート」ファームウェアは自動アップグレード可能ですが、OS が任意のイメージでファームウェアを上書きできるようにするのは一般的に良いアイデアとは見なされません。そのため、OS/ブートローダーを起動する前に、ファームウェアはハードウェア フラグを設定して、ファームウェア チップへの書き込みを防止します。一度設定すると、再起動せずにフラグを解除することはできません。または、そのようなものになります。もちろん、一部のファームウェアが適切に設定を怠ったために、このような状況が発生します... 1 つの例は次のとおりです。ここ。
SMT を許可することが別の例であるかどうかはわかりません。
ファームウェアと戦うのは望ましくありません。特に、OS(Linux)があなたをサポートしようとしていない場合は、ファームウェアと戦うのは望ましくありません。(例:ACPI ATAコマンドに関するファームウェアと戦うまたは、より建設的に言えば、Linux は、すでに正確な C 状態情報を知っている Intel CPU 上で実行されている場合、ACPI BIOS からの C 状態情報を無視します。
(また、一般的なルールを適用しても、目的が達成されない可能性があります。たとえば、レイアウトを知らせるために BIOS が必要になる場合があります。また、レイアウトが静的であると想定したくない理由があるかもしれません。つまり、カーネルにパッチを適用して BIOS が提供する ACPI テーブルを無視し、代わりに必要なすべての BIOS 設定で起動したときにキャプチャした ACPI テーブルを使用するのは得策ではない理由です)。
たとえあなたの目的が実現可能だとしても、ハードウェア固有の詳細に踏み込むことになると思います。カーネルでSMTを有効にする方法を見つけたら、とても印象的でしょう。ないハードウェア固有です。一致するマザーボードとファームウェア バージョンでテストされたことが明記されておらず、それらが何であるかが明記されていない場合、この質問に対する回答が標準的であるとは完全には信頼できません。
そう考えると、Linux 開発者がここであなたをサポートしようとするとは思えません。これはあまり一般的な問題ではありません。