さて、私はいくつかの非常に古いフープをジャンプして、通常のベンダー固有の方法でいくつかのファームウェアをアップグレードするには古すぎると感じています。それから実際に起動し、最後にファームウェアのアップグレードをフラッシュします。
これは1980居住地域です。
Corebootプロジェクト から linux flash tool に出くわしました。様々なフラッシュチップをサポートしているようです。しかし、それは実際にはどのように機能しますか?
ベンダー提供のファームウェアアップグレードを正しい形式に変換する際にいくつかの落とし穴があると思います。または、正しい宛先チップを特定するのはどうですか?
現在、例えば私はおそらくアップグレードする必要があります:
Linuxシステムでデバイスのファームウェアをどのようにアップグレードしますか?
grub-pc
_パッケージがインストールされているかどうかを確認してください)syslinux-common
_をインストールすると、memdiskは_/usr/lib/syslinux/memdisk
_に配置されますSudo -s
_mkdir -p /mnt/floppy
_mount -o loop -t msdos fdboot.img /mnt/floppy
_cp -via FLASH.EXE BIOS.IMG /mnt/floppy/
_(_FLASH.EXE
_および_BIOS.IMG
_は例です)umount /mnt/floppy
_linux16 (hd
_と入力します。次にタブを押します。ハードディスクのリストが表示されます。linux16 (hd0,
_となるようにハードディスクの選択を完了します。/usr/lib/syslinux
_がマウントされているパーティションを見つける必要があります。linux16 (hd0,msdos3)/usr/lib/syslinux/memdisk
のようにパスを完成させることができます。 Enterキーを押します。fdboot.img
_を検索しますが、_initrd16
_ではなく_linux16
_コマンドを使用します。次のような行になります:initrd16 (hd0,msdos3)/home/janus/fdboot.img
。 Enterキーを押します。boot
と入力して、Enterキーを押します。FLASH.EXE
_)。 Enterキーを押します。画像に十分なスペースがない場合は、 chtaube.e の最小の画像を使用します。画像を解凍し、xxd
でフィルタリングします。 55aa を検索します。 _0x1fe
_にあるはずです。追加のマウントフラグとしてoffset=$((0x200))
を使用してイメージをマウントできます。 $(())
構文はBash固有ですが、Zshでも機能することに注意してください。
または、 https://www.fladi.at/posts/large-freedos-boot-image/ を参照してください
アップグレード可能なファームウェアを備えたすべてのデバイスには、おそらくそれを行うための独自の方法があるでしょう。特にマザーボードは、この点で互換性がないことで有名です。
ハードドライブに関しても、これは専有事項です。 Seagate 提供する liveCDとWindowsをダウンロードしてファームウェアを更新しますが、LinuxまたはUnixツールは実行しません。
GRUBから起動できるThinkpad BIOSアップデート用に 起動可能なイメージ をビルドできます。
それ以外の場合は、ツールについてメーカーに確認する必要があります。
一方、マイクロコントローラーを使用している場合は、かなり普遍的なツールを使用してそれらをプログラムできますが、それでもまだ限定的です(たとえば、Atmelチップは通常avrdude
を使用してプログラムできます)。
seagate 3TBビデオ(ST3000VX000-9YW1)の場合:
sg_write_buffer -v -m 5 -I <FW file> <dev>
Seagate Barracuda 7200.12 ST31000528AS(1TB SATA)ドライブを次の方法で正常にフラッシュしました:(自己責任で使用してください!)
PH-CC49.ima
.isoファイルからdd if=./PH-CC49.ima of=/dev/sdX bs=512k
それでおしまい! Windowsなし、かさばるCDなし、Grub編集なし、FreeDosなし、不安定なWindows .exeなし(試してみましたが、不明瞭なエラーメッセージで失敗しました)
クレジットはソースに送られます: http://ubuntuaddicted.blogspot.ca/2014/10/seagate-firmware-flash-using-usb.html (PH-CC49.imaを検索して見つけました)
flashrom を使用して、マザーボードのBIOSを更新できます。
例(Abit KN9 Ultra):
ボードは、2006年にリリースされたAMD Athlon 64ボード、AM2ソケット、Nvidiaチップセットです。交換可能な256 KBのフラッシュチップが搭載されています。 BIOSには、フェニックスの商標のように見える「賞」というラベルが付いています。
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.
更新によっては、次回の再起動のために [〜#〜] cmos [〜#〜] をクリアする必要がある場合があります-そうしないと、BIOSが起動しない場合があります。そのボードではCMOSはジャンパー設定でクリアできます。ソフトウェアでのクリアも可能です(例: CmosPwd ))。
一意のデフォルト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
落とし穴:
GRUBで起動したDOSアップグレードフロッピーを使用すると、前述のように大部分のハードウェアで機能します。場合によっては、ネイティブツールを見つけることができます。デルは、ディストリビューションパッケージシステムと統合するリポジトリも用意しています。
http://linux.Dell.com/wiki/index.php/Repository/firmware
悲しいことに、ほとんどのアップデートは完了するためにマシンの再起動を必要とします。
試してください:
hdparm --fwdownload
(そして非常に注意してください!)
ただし、注意してください。