純規の暇人趣味ブログ

首を突っ込んで足を洗う

Raspberry Pi(Zero)でASUS Z97-CのBIOSを焼く

      2017/09/27    HimaJyun

先日の記事「メールサーバー用にパソコン組んだら盛大に嵌った」でASUS Z97-Cのおジャンク様が1つ出ました。

症状的にBIOSのROM焼きをすれば直せるのではないかと直感が訴えてきたので、直感に従ってROM焼きをしました、その記録。

(厳密にいえばUEFIなのですが、面倒なのでBIOSと表記)

経緯

症状ですが、端的に言うと「BIOS設定画面に入れない(フリーズする」というもの。(しかしBIOSの設定画面に入れないと「Secure Boot Violation」が出て身動きが取れない)

BIOS(EEPROM)の何かの値がおかしくなって、いわゆる例外(Exception)みたいな状態になってフリーズするのでは、なんて勝手に予想。

じゃあBIOSのROM焼きすれば治るかもね!可能性の1つとしてやってみよう。

中古とはいえ8000円を無駄にするのは嫌だし、どうせ既に壊れてるから別に壊れても良いや(矛盾

という雑な考えてROM焼きする事を決定(先に結果を言っておきます、成功しました)

ROM焼き器

幸い、Z97-CはBIOSのROMが取り外せるタイプだったので、その点は考える必要なし。(直付けタイプのマザーだと接続方法を考える必要あり)

ROM焼き器は「Raspberry Piで出来る」という情報を風の噂で聞いていた+手元にPi Zeroが余っているので、これを利用する事に。

専用の道具使って直しちゃうと記事としても面白くないからね(ちなみに、手元にPiがない人はPiを買うくらいならROM焼き器を買った方が良いよ)

下準備

実際の作業よりも下準備の方が大変(やることが多い)

ROMを取り外す

ROMの足はいとも簡単にグニャっといくので注意しながら外す。(IC引抜治具を持っているならそれを使う事を推奨)

グニャった時は、(持っているなら)ピンそろったみたいな製品で整えるか、ブレッドボードに刺す時に手で綺麗にする。

それから、取り外す時に向きを写真にでもして撮影しておく。(コレ忘れると確立1/2のガチャになると思われ)

ピンアサインを調べる

大変だけど重要なステップ。

チップの型番とかからピンアサインを調べます。(目が悪い人はカメラで拡大すると楽かも?)

今回のROMは「GD25B64BPIG」で、ググるとGD25Q64として認識するという記事を発見。

「GD25Q64」でググるとデータシート(PDF)が出てきました。

ふむふむ……どうやら先人たちが実践した時のROMと同じピンアサインの模様、汎用品とかそう言うのかな?

Piに繋ぐ

先人達はみな26ピンGPIO時代のPiで作業していたので、40ピンGPIOのPi Zeroでは繋ぐ場所を注意する必要があります。

といっても、従来までの26本の横に14本増えてるだけなので違いはなし。

配線は以下のようになる(WP#、VCC、HOLDは全てまとめて3.3vに繋ぐ模様)
(どうでも良いけど、ピンアサインのイラストを描くのがこの記事を書く上で一番時間が掛かった)

という訳で実際に繋いだところ、Pi ZeroはGPIOに穴が開いてるだけ(別売りのGPIOピンヘッダを刺す仕様)なのだが、気にせず直接接続しちゃう。
(手前にある回路は無関係なのでお気になさらず)

Raspbianの準備

Raspbian側でもいくつかの準備が必要です。

まず最初に、ROMをごちゃごちゃ出来る「flashrom」とかいうソフトをインストールします。

makeでコンパイルして入れている記事が多いですが、今はaptで入れられます。

sudo apt-get install flashrom

それから、PiでSPIを扱えるようにするために設定を変更します。

raspi-configから「5 Interfacing Options」->「P4 SPI」でSPIを有効にする

早い話が以下のコマンドを実行すればSPIが有効になる

sudo raspi-config nonint do_spi 0

その後、一度再起動しておく

ROM焼き

実戦段階ドーン、間違えたらBIOSが本当の本当に死ぬかも知れないので気を引き締めていこう。

今のBIOSをバックアップ

これ重要、場合によってはこれを忘れてしまうと次のBIOS編集段階で詰む可能性すらある。

という訳で今のBIOSをバックアップする。(こうしておけば失敗してもやり直せる)

sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -r ./backup.rom

こんな感じで実行される。

読み込みが終わると指定したパス(./backup.rom)に現在のBIOSのバックアップが出来ている。

後で使うので大切に保管しよう

BIOSを編集する

ASUS UEFIの場合はBIOSを編集する必要があるらしい。

という訳で、BIOSの編集を行えるソフト「FD44Editor」を入手する。

それから、メーカーサイトから純正(更新用)のBIOSを入手してくる。

BIOSバージョンが分かるのであれば、今入っている(壊れている)BIOSと同じバージョンの方が良いかと思う。

新旧両方のBIOSをFD44Editorで開き、設定値が一致するように新BIOSにコピーする。

「Motherboard S/N」は特定のアルファベット3文字(MT7/MG7……など)+マザボのシリアルナンバーとする必要があるらしい……

のだが、「板だけの中古」として購入したのでシリアルナンバーが印字されているマザボの箱がない。

仕方ないのでダメ元で元BIOSの数字15桁をそのままコピーする事に。

ちなみに、FD44Editorは上書き保存しか出来ない謎挙動。別名保存しても実は保存されていない。

編集中のファイルを選択して上書き保存する必要がある。

BIOSを書き換える

書き込むBIOSを用意する(ファイルは./bios.romに保存したと仮定)

まずは現在のBIOSの中身を削除する(本当に必要な手順かは不明、先人たちに倣ってやっているだけなので)

sudo flashrom -E -V -p linux_spi:dev=/dev/spidev0.0

doneって出たらdoneってる。

そして、用意したBIOSを書き込む。

sudo flashrom -V -p linux_spi:dev=/dev/spidev0.0 -w ./bios.rom

書き込みにはしばらく時間が掛かる。「Verifying flash... VERIFIED.」と出たら完了。

ちなみに、接触が悪かったのか一度verifyに失敗したが、もう一度やってみたら上手く行った。

動作テスト

ROMを元通りマザーに差し込んで祈りを捧げながら起動する。

お、BIOS設定画面には入れたぞ?

最新版に更新してみる。

OSもインストール出来る

……と、言う事は?もしかして、もしかすると直った?

直った!やったー!!……って、使いもしないマザーが1枚増えてしまいましたとさ。

参考

偉大なる先人たち

 - コンピューター