実際にLinuxでファームウェアをフラッシュする方法は?

実際にLinuxでファームウェアをフラッシュする方法は?

まあ、私は一般的なベンダー固有の方法でいくつかの面倒を超えて、いくつかのファームウェアをアップグレードするには古すぎると思います。いくつかのDOSツールをダウンロードし(無料)、DOSブートメディアの作成に時間を無駄にし、実際にBIOSが起動し、最後にファームウェアアップグレードがフラッシュされます。

これが1980年代スタイルだ。

私は少し会いました。Linuxフラッシュツール~からコアスタートアッププロジェクト。さまざまなFLASHチップをサポートしているようです。しかし、実際にはどのように機能しますか?

ベンダーから提供されたファームウェアのアップグレードを正しい形式に変換するには、いくつかのトラップがあるようです。それとも正しいターゲットチップを決定する方法は?

現在、次のようにアップグレードする必要があります。

  • 一部のSeagate 1.5TBディスク用ファームウェア
  • 既存のAbit Athlon 64マザーボード用ファームウェア(Award BIOS)
  • Thinkpad Bios/組み込みコントローラ Bios

Linuxシステムでデバイスファームウェアをアップグレードする方法は?

答え1

FreeDOSによるフラッシュ、1回の再起動、リムーバブルデバイスなし

  1. grub-pcGRUB2を使用していることを確認してください(Ubuntuにそのパッケージがインストールされていることを確認してください)。
  2. SYSLINUXのMEMDISKを入手してください。 Ubuntuからパッケージをインストールすると、syslinux-commonメモリディスクは次の場所にあります。/usr/lib/syslinux/memdisk
  3. ダウンロードfdboot.img、ホームディレクトリ、またはアメリカのキーボードレイアウトを使用して簡単に入力できる他のディレクトリに保存します。
  4. FreeDOSイメージにフラッシュソフトウェアを挿入してください。
    1. sudo -s
    2. mkdir -p /mnt/floppy
    3. mount -o loop -t msdos fdboot.img /mnt/floppy
    4. cp -via FLASH.EXE BIOS.IMG /mnt/floppy/FLASH.EXEそしてBIOS.IMG例です)
    5. umount /mnt/floppy
  5. システムを起動し、GRUB2で停止します(ESCを押す)。
  6. cを押してGRUB2コマンドラインに入ります。
  7. MEMDISKロード:
    1. 入力するlinux16 (hd。次にタブをタップします。ハードドライブのリストが表示されます。
    2. linux16 (hd0,たとえば、この行が表示されるようにハードドライブの選択を完了します。
    3. Tab キーをもう一度押すと、パーティションのリストが表示されます。/usr/lib/syslinuxLinuxインストールにインストールされているパーティションを見つける必要があります。
    4. これでハードドライブとパーティションの仕様があるので、次のようにパスを完成できますlinux16 (hd0,msdos3)/usr/lib/syslinux/memdisk。 Enter キーを押します。
  8. FreeDOS ロード:
    1. 同じタブ補完を使用して検索を実行しますが、代わりにfdboot.imgコマンドinitrd16を使用してくださいlinux16。次の行が表示されますinitrd16 (hd0,msdos3)/home/janus/fdboot.img。 Enter キーを押します。
  9. 作成bootしてEnterを押します。
  10. FreeDOSブートメニューが表示されます。
  11. ドライバーは不要なので、「セーフモード」オプションを選択してください。
  12. DOSプロンプトで、ファームウェアリフレッシュ実行可能ファイルの名前を記録します(たとえば、.EnterFLASH.EXEキーを押します。
  13. 点滅が完了するまでお待ちください。
  14. ファームウェアプラッシャーはコンピュータを独自に起動したり、メッセージを表示したりできます。メッセージが再び表示されたら、Control-Alt-Deleteを押して再起動します。
  15. GRUB 構成は永久に変更されていないため、すぐにデフォルトのオペレーティングシステムに再起動します。

画像スペースが足りない場合は、最小の画像を使用してください。EUウェブサイト。画像を解凍してフィルタリングしますxxd。今検索55アミノ酸。それはする必要があります0x1feoffset=$((0x200))追加のインストールフラグでイメージをインストールできます。構文は$(())Bash にのみ適用されますが、Zsh でも機能します。

または以下を参照してください。https://www.fladi.at/posts/large-freedos-boot-image/

答え2

アップグレード可能なファームウェアを持つ各デバイスには、これを行う独自の方法があります。これに関して、マザーボードは互換性がないことが知られています。

ハードドライブの場合、これは再び排他的な問題です。シーゲート供給liveCD と Windows のダウンロードはファームウェアアップデートを実行するために使用されますが、Linux または Unix ツールは含まれません。

あなたは作ることができます起動可能なイメージGRUBから起動可能なThinkpad BIOSアップデート。

それ以外の場合は、製造元にツールを要求できます。

一方、マイクロコントローラを使用している場合は、通常はかなり一般的なツールを使用してプログラムできますが、まだいくつかの基本事項があります(たとえば、Atmelチップは通常を使用してプログラムできますavrdude)。

答え3

Seagate 3TBビデオ(ST3000VX000-9YW1):

sg_write_buffer -v -m 5 -I <FW file> <dev>

答え4

あなたはそれを使用することができますフラッシュメモリマザーボードのBIOSを更新します。

はい(ABIT KN9ウルトラ):

このマザーボードは、2006年に発売されたAMD Athlon 64マザーボード、AM2ソケット、Nvidiaチップセットです。交換可能な256KBフラッシュメモリチップがあります。 BIOSにはPhoenixの商標であるように見える「Award」という単語が表示されています。

Flashromはこのチップセットとフラッシュメモリチップをサポートしています。

次のコマンドを使用してサポートをテストできます。

# flashrom --programmer internal
Calibrating delay loop... OK.
Found chipset "NVIDIA MCP55".
Enabling flash write... OK.
Enabling full flash access for board "abit KN9 Ultra"... OK.
Found PMC flash chip "Pm49FL004" (512 kB, LPC, FWH) mapped at physical address 0x00000000fff80000.

まず、フラッシュチップの現在の内容をバックアップすることをお勧めします。

# flashrom --programmer internal -c Pm49FL004 -r backup.bin

その後、ベンダーから提供された通常のイメージファイルと比較できます(例:xxdおよび使用vimdiff)。

若干の違いが予想されます。一部のBIOSは、追加情報(DMIなど)と設定(MACアドレスなど)もフラッシュメモリに保存するためです。 ABIT KN9 Ultraも同様です。 DMIデータは最初の1872バイトに保存され、起動中にBIOSによって簡単に再生成できます。 MACアドレスはオフセット0x74E30に保存されます。

awdflash.exeベンダーファームウェアファイルは、ファイルBIN(たとえば)を含むzipアーカイブにパッケージ化されていますM520A_23.BIN。この例では、binファイルにはBIOSイメージがそのまま含まれています。つまり、次のコマンドを使用してフラッシュチップに直接書き込むことができます。

# flashrom --programmer internal -c Pm49FL004 -w M520A_23.BIN

Calibrating delay loop... OK.
Found chipset "NVIDIA MCP55".
Enabling flash write... OK.
Enabling full flash access for board "abit KN9 Ultra"... OK.
Found PMC flash chip "Pm49FL004" (512 kB, LPC, FWH) mapped at physical address 0x00000000fff80000.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

更新によっては削除する必要があります。相互補完酸化鉄半導体次の再起動のために - それ以外の場合は、BIOSが起動しない可能性があります。このボードでは、ジャンパ設定でCMOSをクリアできます。ソフトウェアからも消去できます(例:CMOSパスワード)。

一意のプライマリMACアドレスを維持するには、更新する前に新しいベンダーイメージをパッチします。たとえば、次のようになります。

dd if=backup.bin of=mac.bin bs=1 count=16 skip=$(echo 16 i 74E30 p | dc)
dd if=mac.bin of=M520A_23_with_mac.bin bs=1 seek=$(echo 16 i 74E30 p | dc) \
   conv=notrunc

罠:

  • マザーボードの特定の理由でフラッシュ書き込みが失敗することがあるボードの有効化(つまり、書き込み禁止を無効にする)まだフラッシュロームで実装されていないコードです。

関連情報