SMBIOS情報の読み取り

SMBIOS情報の読み取り

Windows では、UEFI/BIOS を保存するためにコンピューターにインストールされている ROM チップの容量をどのように確認できますか? 他のアプリケーションをインストールせずに、Windows ツールまたはコマンドを使用する方法をお勧めします。

答え1

SMBIOS情報の読み取り

Wikipediaより:

コンピューティングシステム管理 BIOSSMBIOS) 仕様は定義するデータ構造(およびアクセス方法)を使用して、BIOSコンピューター1999年頃、それは分散管理タスクフォース(DMTF)。[...] ほぼ同じ時期にマイクロソフトそれを要求し始めたOEMBIOSベンダーは、Microsoftが認証

ソース:システム管理 BIOS

SMBIOS情報は異なるデータテーブルに保存されます。最初のテーブル(タイプ0)には、ベンダー、バージョン、リリース日などの基本的な詳細が含まれます。BIOSを含む物理デバイスのサイズは、次の場所にある1バイトに対応します。オフ 0x9当該表の。

実際のサイズは次のように計算できます。

64K * (value + 1)

の値は0サイズが64であることを意味しますキビ1128 KiB を意味します。

私の知る限り、WindowsにはROMサイズなどの特定のSMBIOSデータを取得できる組み込みユーティリティはありません。ただし、スクリプトを自分で書くことはできます。以下に動作例を示します。代わりに、サードパーティのプログラムを使用することもできます。dmidecodeWindows 移植版


バッチスクリプト

@echo off
setlocal enabledelayedexpansion

set key=HKLM\SYSTEM\CurrentControlSet\services\mssmbios\Data

for /f "tokens=3" %%G in (
'reg query "%key%" /v "SMBiosData" ^| findstr /i /c:"REG_"'
) do (
set "size=%%~G"
set /a size=64 * 0x!size:~34,2! + 64
)

echo ROM Size: %size% KiB
PAUSE
exit /b

VBスクリプト

Set tables = GetObject("winmgmts:\\.\root\wmi").ExecQuery _
    ("SELECT * FROM MSSmBios_RawSMBiosTables")

For Each obj In tables
    WScript.Echo "ROM Size: " & (64 * obj.SMBiosData(9) + 64) & " KiB"
Next

パワーシェル

$tables = Get-WmiObject -ComputerName . -Namespace root\wmi -Query "
    SELECT * FROM MSSmBios_RawSMBiosTables"

foreach ($obj in $tables)
{
    echo $("ROM Size: " + (64 * $obj.SMBiosData[9] + 64) + " KiB")
}

備考

Windows Management Instrumentation (WMI) は、Windows で SMBIOS 情報を読み取るための推奨される方法です。

ソース:デバイス\物理メモリ オブジェクト

[SMBIOS] ドライバーは、この情報を のレジストリにも保存しますHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mssmbios\Data。SMBIOS 情報はこの場所のレジストリに保存されますが、ユーザーは引き続き WMI またはGetSystemFirmwareTable()API を使用して SMBIOS データを取得する必要があります。この情報が、Windows の今後のリリースごとにこのレジストリ サブキーに保存されるという保証はありません。

ソース:Windows での SMBIOS サポート

参考文献

答え2

それはできないと思うよ少なくとも一般的な意味ではそうではありません。

基本的にそれはBIOSコードのサイズは有用な情報を提供しないユーザーであるあなたへ。IBM PC互換機のBIOSいくつかの主な責任があり、そのほとんどは他のプラットフォームにも適用されますが、実装が異なる場合があります。

  • 電源投入時のセルフテスト(POST)を実行します。
  • 基本的なハードウェアの検出と初期化を行います
  • 基本的な実行環境を設定します。その詳細はオリジナル IBM 5150 PC1981年から(CPUはリアルモードいくつかのCPUレジスタは既知の値に初期化され、いくつかのCPUフラグは既知の値に設定されます)
  • これは、オペレーティングシステムに(非常に原始的な)ハードウェアアクセスと検出機能を提供します。これらは、CPUの技術的な制限(簡単に切り替えられない)のため、現代のオペレーティングシステムでは使用されていません。ロングモード、例えば)またはパフォーマンスの制約(実数と実数の切り替え)のためです。V86モード16 ビット BIOS コードの実行には長い時間がかかるため、保護モードまたはロング モードのままにして、代わりに OS 内で自分で実行する方が高速です)
  • オペレーティングシステムの第1段階のブートローダーをRAM内の既知の固定位置にロードし、そこに実行を転送します。
  • 基本的なシステム設定を行うためのユーザーインターフェースを提供します。厳密に言えばこれはオプションであり、1980年代のBIOSは、そのようなインターフェースを提供する代わりに、ソフトウェアは別送またはハードウェアDIPスイッチグラフィックカードの種類や搭載されているRAMの量などの基本的なシステム設定を構成するために

これらのタスクを実行するためにどれだけのコードが使われているかを知ることは、ユーザーにとって何のメリットもありません。初期の頃(ここではWindows 3.0から3.1以前のDOS、つまり1980年代初頭から1990年代初頭)は、基本的な機能を実行するためにBIOSが頼りにされることが多かったため、BIOSコードのサイズは潜在的にBIOSは少なくとも部分的にはパフォーマンスに関係しているが、現代のコンピュータでは、BIOSは基本的にオペレーティングシステムの役割に追いやられている。ブートストラッパーおよび低レベルのハードウェア構成インターフェイス。また、当時のコンピュータでは、BIOS コードを交換できる場合、マザーボード上の ROM チップを物理的に取り外して再インストールする必要がありました。フラッシュアップグレード可能なBIOSはずっと後になってから発明されたものです。

これをストレージデバイスやRAMのサイズの調べ方と比較すると、違いは次のようになります。それらのサイズがわかるということは、ユーザーにとって実際に知っておく価値のある情報です。デバイスごとまたは合計で利用可能なストレージ容量は、コンピューターに保存できるデータの量を決定する要因であり、RAM のサイズは、同時に処理できるデータの量とそのデータの処理速度を決定する要因の 1 つです。

あなたできる、原則として、特定のマザーボード製造元のWebサイトにアクセスし、ダウンロード可能なBIOSアップデートイメージを探します。これらのイメージファイルのサイズは、BIOSコードを保持するフラッシュROMチップのサイズと非常に高い確率で一致します。その特定のマザーボード上で。今日の一般的なサイズは数メガバイト程度だと思います。オリジナルのIBM 5150 PC BIOSは8KBだったXT (IBM 5160) 以降、IBM ではこれが 32 KB に引き上げられました。初期のクリーンルーム IBM PC BIOS クローンでは、大幅に少ないコードで実行できたため、関係者が何かが欠けているのではないかと少なくとも一度は思ったという逸話をどこかで読んだことがあります。

そしてもちろん、それはシステムに他のファームウェアが存在するPC BIOSのほか、グラフィックカード、ネットワークカード、ディスクコントローラカード、その他さまざまな周辺機器独自のBIOSを提供する実装の観点から見ると、Web ブラウザがオペレーティング システムから完全に分離されている (または分離されているべきである) のと同じように、これらはマザーボード上の PC BIOS から完全に分離されています。

答え3

Linux では、フラッシュ ROM の容量をさまざまな方法で確認できます。dmidecode コマンドは、チップ容量など、BIOS に関する多くの有用な情報を提供します。最終的に、1 MB であることがわかりました。マザーボードを確認するか、Linux のライブ CD を試すことをお勧めします。

関連情報