BIOSデータをファイルにダンプする方法

BIOSデータをファイルにダンプする方法

私のラップトップのBIOSデータをファイルにダンプしたいです。私が見つけた唯一の解決策は次のコマンドです。

dd if=/dev/mem bs=X skip=Y count=1

XYBIOSタイプが異なるため、人々はさまざまなソリューションを提案します。

BIOSデータの正確なアドレスを見つける方法はありますか/dev/memdmidecodeメモリ内のBIOSを見つけるために使用できるアドレス範囲はありますか? LinuxはすべてのBIOSデータをRAMにダンプしますか、それともその特定の部分だけをダンプしますか?

LinuxがBIOSデータをRAMにダンプできる場合、ルートもBIOSに直接アクセスできますか?

答え1

を試してみてくださいbiosdecode

これは、BIOSメモリを解析し、認識しているすべての構造(またはエントリポイント)に関する情報を印刷するコマンドラインユーティリティです。次のハードウェアに関する情報を探します。

  • IPMIデバイス
  • メモリの種類と速度
  • シャーシ情報
  • 温度プローブ
  • 冷却装置
  • 電流プローブ
  • プロセッサとメモリ情報
  • シリアル番号
  • BIOSバージョン
  • PCI/PCIeスロットと速度

など。

考慮すべき事項:

  • biosdecode分析するバイオスすべての構造に関する情報をメモリして印刷します。
  • デコードバイオスデータは破棄されたコンピュータのデータと同じです。DMI。これDMIテーブル現在、システムが何で構成されているかについて主に説明します。
  • 提供されるデータbiosdecodeは、人間が読める形式ではありません。

画面に表示される内容を見る

dmidecodeコンピュータのDMI(SMBIOS)テーブルの内容を画面にダンプするには、コマンドを使用する必要があります。

$ sudo dmidecode --type 0 

詳細については、マニュアルページを検索してください。

$ man dmidecode

はい、カーネルはBIOSに必要な情報だけをRAMに保存します。ただし、組み込みASM(アセンブリコード)などを含むCアプリケーションを使用して、rootユーザーからライブBIOS呼び出しを実行できます。

Linux 雑誌の次の記事では、Linux カーネルとシステム BIOS の詳細を読むことができます。LinuxとBIOS

答え2

私の考えであなたが探しているのはflashrom。システムがサポートされている場合は、次のコマンドを実行してBIOSの内容を読み取ることができます。

# flashrom -r <outputfile>

いわゆる保存したい場合CMOSメモリ(RTCの警告などの設定を格納する余分なバイト)カーネルのnvramドライバとデバイスは、次のように役立ちます。

config NVRAM
     tristate "/dev/nvram support"
     depends on ATARI || X86 || (ARM && RTC_DRV_CMOS) || GENERIC_NVRAM
     ---help---
       If you say Y here and create a character special file /dev/nvram
       with major number 10 and minor number 144 using mknod ("man mknod"),
       you get read and write access to the extra bytes of non-volatile
       memory in the real time clock (RTC), which is contained in every PC
       and most Ataris.  The actual number of bytes varies, depending on the
       nvram in the system, but is usually 114 (128-14 for the RTC).

       This memory is conventionally called "CMOS RAM" on PCs and "NVRAM"
       on Ataris. /dev/nvram may be used to view settings there, or to
       change them (with some utility). It could also be used to frequently
       save a few bits of very important data that may not be lost over
       power-off and for which writing to disk is too insecure. Note
       however that most NVRAM space in a PC belongs to the BIOS and you
       should NEVER idly tamper with it. See Ralf Brown's interrupt list
       for a guide to the use of CMOS bytes by your BIOS.

       On Atari machines, /dev/nvram is always configured and does not need
       to be selected.

       To compile this driver as a module, choose M here: the
       module will be called nvram.

答え3

他のツールが利用できない、または利用できない場合にダンプするメモリ領域を推測する方法は次のとおりです。

たとえば、VirtualBox VMで次のようにしてBIOSを正常にダンプしました。

$ grep ROM /proc/iomem # https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-firmware-memmap
000c0000-000c7fff : Video ROM
000e2000-000e2fff : Adapter ROM
  000f0000-000fffff : System ROM
# dd if=/dev/mem of=pcbios.rom bs=64k skip=15 count=1 # 15*64k + 64k

答え4

これはVirtualBoxで私に効果的です。

$ grep ROM /proc/iomem

結果は次のとおりです。
000c0000-000c7fff: ビデオ ROM
000e2000-000e2fff: アダプタ ROM
000f0000-000fffff: システム ROM

システムROMは000f0000(0xF0000)から始まります。

ブラウザを開き、次に進みます。http://www.hexidecimaldictionary.com/hexadecimal/0xF0000。これは10進値983040を表し、これを1024で割ると960キロバイトの値が与えられます。これは開始点と「スキップ」の値です。

終了番号は0xFFFFFで1048575で1024よりやや小さい値です。 1024〜960は64で「count」の値である。

BIOSをダンプするコマンドは次のとおりです。

dd if=/dev/mem of=pcbios.bin bs=1k skip=960 count=64

関連情報