Help us understand the problem. What is going on with this article?

ノートパソコンのBIOS復旧

はじめに

これはBIOS復旧をする際に行ったことの記録を兼ねています。
復旧までの最短距離などではありませんのでご注意ください。

状況

ちょっと前から調子の悪かったノートパソコンがBIOSすら立ち上がらない状態になってしまったので復旧することにしました。立ち上げるとレイアウトが崩れたBIOSが立ち上がり、一切画面が動かなくなるというものでした。

BIOSとは?

自作erなら何気なく使ってるかもしれませんが、BIOSは主にハードウェアの差異を吸収しOS-ハードウェア間の情報伝達を行うプログラムです。
最近のマザーボードではほとんどの場合SPI(Serial Peripheral Interface)という規格を利用した2MB程度のフラッシュメモリに書き込まれています。
今回の症例ではどう考えてもBIOSが悪いのでこれを復旧します。

使ったもの

  • 壊れたノートPC
  • OrangePi(armbian)
    • raspberry piでも可
  • 新しいSPIフラッシュ
    • 壊れてない場合も多いらしいのでいらない場合もある。状況に応じて
  • ブレッドボード、ジャンパワイヤなど

手順

1-1 症状を確認する

今回は前述のような症状が発生したため、BIOSが原因であると判断しました。
メモリの可能性も考えましたが、2スロットに入っていたメモリを片方だけにしても全く同じ結果だったためメモリの可能性は排除しました。

1-2 分解してみる

なにか問題が発生するとすぐ試しに分解してみる人なので分解しました。
以下の写真によると、これはW25Q16DVというフラッシュらしいです。
データシートはここにありました。
また、この先使うツールのflashromへ対応しているか確認しておきます。
対応するハードウェアはここにリストアップされています。このフラッシュは運良く対応していました。
P_20181006_125733_vHDR_Auto.jpg

1-3 BIOSイメージを入手する

富士通の古いノートPCだったので地味に大変でした。
公式のサポートページからBIOSアップデートプログラムをダウンロードし、書き込む直前まで移動するとホームディレクトリあたりのパスが書いてあったのでそのパスの周辺を眺めるとBIOS1.WPHという2MBのファイルがあったため、それを利用しました。

2-1 半田付けする

この時には、フラッシュ本体が壊れたのでなくデータが破損しただけの可能性があったためOrangePiのSPIとflashromというツールを利用し復旧を試みます。
linux-sunxiのページにOrangePi PC2のGPIOピンのピンアサインが載っていました。
このピンアサインと1-2のデータシートを参考にエナメル線を用い半田付けを行いました。
OrangePi側<--------->フラッシュ側
PA13 (SPI1_CS/UART3_TX/PA_EINT13)<----->CS#
PA14 (SPI1_CLK/UART3_RX/PA_EINT14)<----->SCLK
PA15 (SPI1_MOSI/UART3_RTS/PA_EINT15)<----->MOSI
PA16 (SPI1_MISO/UART3_CTS/PA_EINT16)<----->MISO
3.3v<----->Vcc, WP#, HOLD#
GND<----->Vss

P_20181008_093939_vHDR_Auto.jpg

以下の画像はピンを刺す場所を思いっきり間違えています。
もしかしたら2-2で判明するフラッシュの故障はこれが原因だったかもしれません・・・。
P_20181014_102400_vHDR_Auto.jpg

私は半田付け後OrangePiの電源を入れたところOrangePiが落ちたためこの後フラッシュを基板から剥がして再度半田付けしました。おそらく、フラッシュ以外にも電力を供給しようとして制限を超えたためだと思われます。
テスターで半田付けが間違っていないことを確認して、次に進んでください。

2-2 今のデータのバックアップ、新データの書き込みを試みる ---- だめだった

OrangePiにflashromをインストール、読み出しを試みます。
結果から言うと、私はフラッシュ自体が壊れていたため無理復旧は無理でした。

まず、armbian-configからsystem/Hardware/spi-spidevを有効化し再起動してください。その後/dev/spidev1.0が存在することを確認し次に進んでください。

$ apt install flashrom
$ flashrom -p linux_spi:dev=/dev/spidev1.0 -r backup
flashrom v0.9.9-r1954 on Linux 4.14.70-sunxi64 (aarch64)
flashrom is free software, get the source code at https://flashrom.org

Calibrating delay loop... OK.
No EEPROM/flash device found.
Note: flashrom can never write if the flash chip isn't found automatically.

駄目ですね・・・
この後、自動検出されなかったならばと-cオプションでチップ名を指定して実行しました。その際のスクショなどを取り忘れましたが、読み込みには一応成功しました。
しかし、バイナリを見た様子では落としてきたBIOSとほぼ一致せず、2-2で確認した様子では接続ミスもないためこの時点でチップは壊れていると判断しました。

3-1 フラッシュを新調する

型番の後ろの方はチップの形状(表面実装とかスルーホール、その他など)を示すことが多そうだったので、前半部分がだいたい合っていてメーカーと容量が同じだったら動くだろうという考えのもと、arrow.comでそのようなものを探して注文しました。
1つからでも注文できて送料無料なので電子工作erの強い味方です。
W25Q16JVSNIQがそれらしかったためこれを購入しました。10%割引が効いたのと元々現在より少し安かったため42円でした・・・。(fedexで2,3日でアメリカから届くのに送料無料)
赤字にならないか心配になるお値段ですね・・・。

3-2 新しいフラッシュに書き込む

3日後、フラッシュたった1つが仰々しい梱包で届きました。
2-1と同じように半田付けした後、書き込んでみます。

$ flashrom -V -p linux_spi:dev=/dev/spidev1.0 -f -c W25Q16.V -w ./bios.bin

例の如くスクショを取り忘れていたため結果は無いですが書き込みは無事成功しました。

3-3 新しいフラッシュを取り付ける

フラッシュがちょっとスリムになっていたため、抵抗の足で接ぎ木してランドに半田付けしました。
念の為テスターで半田ブリッジが起きていないか確認しておいたほうがいいと思います。
安物のコテ先を使ってしまい物凄く使いづらくて酷い有様になっているためあまり見ないでください・・・。

P_20181216_111336_vHDR_Auto.jpg

3-4 電源を入れてみる!

電源を入れてみた結果、無事BIOS画面が立ち上がりlinuxも動きました。

終わりに・課題

ノートPCに限らずBIOSを書き込んだりしたことが無かったのと、その過程でPCの起動プロセスなどが知れたので結構面白かったです。
途中で完全にやる気が無くなった期間があり、終わるまで2ヶ月掛かりましたが・・・。
これで急にPCが動かなくなっても復旧できますね!
課題としては、BIOSに一緒に書き込まれていたmacアドレスなどが初期値?に戻っていたことです。
衝突が怖いので早めに直したいのですが、元のmacアドレスが分からず、また分解するのは億劫なのでそのままになっています。
P_20181216_113619_vHDR_Auto.jpg

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away