私は8時間ほど探していましたが、まだ完全に理解していないポイントをクリアしたいと思います。
(TLDRバージョン:すべてのBIOS設定(仮想化の有効化/無効化、GPUのターボ周波数の有効化/無効化、ログ表示時間の設定など)にどのようにアクセス(読み取りおよび書き込み)できますか? CLI?)
これがその話です。
まず、古いBIOSがありました これなど 。
そして今、私たちは新世代のBIOS これのような を持っています。そして、私たちはそれらをUEFI BIOSと呼んでいますが、私は正しいですか?
次に、以下の記事を読みました(そしてテストしました)。
その後、BIOS設定(仮想化、IGDターボの有効化/無効化、USB設定の変更など)を数回変更し、各起動時に次のファイル/コマンドの内容全体をダンプしました。
結果?ダンプ結果をMeldとwoalaと並べて比較しました。何も変わっていません!一体何ですか?!
これが私の質問のリストです(私はエレクトロニクスエンジニアですので、詳細を確認したり、ためらわずにテクニカルリーディングを参照したりできます)。
すべての回答は大歓迎です。
今からありがとう。
OSがシステムBIOSにアクセスできる一般的な方法はありません。これは、製造業者が詳細な情報を提供し、これがどのように行われるかに関して確立された基準が存在する場合にのみ可能です。これは事実ではなく、とにかくそれが良い考えだとは思いません。
一部の製造元は、少なくともWindows用に、自社システム用のソフトウェアを作成しています。このソフトウェアは、BIOSの特定のバージョン用に設計する必要があります。
問題は、BIOSが各メーカーに固有であるということです。通常、設定はCMOS=に保存されますが、これは必須ではありません。メーカーは、どこにでも設定を自由に保存できます。これらの詳細についてのドキュメントはありません。
これにはセキュリティ上の影響があります。正当なソフトウェアがBIOSにアクセスできれば、悪意のあるソフトウェアが同じことをするのを止めることはできません。これにより、マルウェアの可能性のまったく新しい世界が開かれ、作成者はそれを最大限に活用します。もちろん、セーフガードを開発することもできますが、回避することもできます
BIOSとは(少なくとも)3つの異なるものです。
後者の2つは明確に定義された一連のAPIを公開しますが、前者は公開しません。これは、セットアップユーティリティが提供するすべての設定を操作するベンダー中立の普遍的な方法がないことを意味します。
設定の保存場所について:ほとんどのベンダーは、バッテリバックアップ式の静的なRAM(古代の命名法では「CMOS-RAM」)を使用しています。これが、メインボード上のCR2032セルの場合、面倒な理由です。死ぬ。
HPEサーバーでは、conrepと呼ばれるユーティリティを使用して設定を変更できます。これは、hp-scripting-tools RPMの一部です。使用方法は次のとおりです。
h20566.www2.hpe.com/hpsc/doc/public/display?sp4ts.oid=5249594&docLocale=en_US&docId=emr_na-c05182235
とても簡単です。 -s(保存)パラメータを使用して、次のように構成を保存します。
conrep -s -f BL460Gen8.dat
そして-l(load)パラメータを使用して、構成をロードすることを指定します。
conrep -l -f BL460Gen8.dat
Datファイルは実際にはXMLコードです。したがって、たとえばハイパースレッディング設定を有効/無効にする場合は、それぞれの行を見つけて値を変更します。 G6以降の世代の例を参照してください。
<Section name="Intel_Hyperthreading" helptext="Toggles hyperthreading on Intel based G6 and greater systems">Enabled</Section>
デスクトップからのものを有効にして、BIOSで再起動する必要があると、はるかに便利です。デスクトップから変更できる設定がいくつかあります。 AMDデスクトップCPUはECCメモリを実行でき、ほとんどのメインボードもECCを使用できますが、多くのベンダーはそれをオンにするBIOSオプションを提供していません。それでも、自分で切り替えることができます。これを実行したところ、ECCメモリがオンになりました。ただし、通常のメモリを実行しているときにオンにすると問題が発生する可能性があるため、実行しないでください。
Sudo modprobe -v AMD64_edac_mod ecc_enable_override=1
コマンドがあります。そして以下は、それがブーツ間で持続するようにします。
Sudo echo "options AMD64_edac_mod ecc_enable_override=1" >> /etc/modprobe.d/AMD64_edac_mod.conf
私は現在、ラップトップでワイヤレスをオンにすることを検討しており、デスクトップからそれを実行できるかどうか疑問に思っています。デスクトップから設定できるオプションのリストがあると便利です。 ECCはBIOSでさえ提供されていないため、特に必要最低限のBIOSを出荷する特定のベンダーでは、そのような機能がいくつ利用できる可能性があります。
現実になり、地味になってください。
システムがUEFIファームウェアを実行している場合、すべてのBIOSセットアップの質問とそれらのそれぞれに対する利用可能な回答を体系的に列挙できるCLIツールを開発することが可能です。その後、CLIツールを使用して、特定のセットアップ質問のオプションを変更することもできます。技術的には、このツールはHIIパーサーです。今、HIIとは何ですか。 EFI仕様 を下げることができれば、HIIが詳細に説明されています。簡単に言えば、UEFI FWには、仕様で定義されたデータ構造にHIIメタデータが含まれています。 UEFI FWは、メタデータが配置されているシステムメモリアドレスを指すEFI NVRAM変数を提供します。ツール(HIIパーサー)はHIIサポートを実装する必要があります。これにより、文字通りOS上で実行されているBIOSセットアップユーティリティのように機能します。
最後の注意点が1つあります。多くの場合、UEFI FWは、OSを起動する前にBIOSセットアップ構成をロックして、OSを保護します。これにより、ツールは設定の質問のオプションを変更できなくなります。
そのため、通常、OEMはUEFIファームウェアを計測してこれを可能にし、CLIツール(HIIパーサー)も提供します。そして、パーソナリティのダンプ/ロード/移行の使用モデルに使用できます。