LinuxでThinkPad X220のBIOSをアップデートする

概要

Linuxを使ってThinkPad X220のBIOSをアップデートできたので方法を説明します。

ThinkPadBIOSをアップデートしようと調べると、Windows用の説明が多く、非Windowsな環境での方法についての説明が少なかったので、参考資料として記録します。

ThinkPad X220 + Arch Linuxでの説明になりますが、他のThinkPadや他のLinuxディストリビューションBSD系でも同様の方法でできると思います。

大まかな流れは次のようになります。

  1. 起動CD用BIOSアップデートユーティリティを入手する
  2. CD用イメージからUSBメモリー用イメージに変換する
  3. USBメモリーで起動してBIOSをアップデートする

1. 起動CD用BIOSアップデートユーティリティを入手する

アップデートしたいBIOSをダウンロードします。このとき必ず「起動CD用」と書かれているものを選んでください。現時点でのThinkPad X220用最新BIOSBIOS アップデート ユーティリティ (起動CD用) (Windows 8 32bit, 64bit/ 7 32bit, 64bit/ Vista 32bit, 64bit/ XP) - ThinkPad X220, X220i, X220 Tablet になります。

2. CD用イメージからUSBメモリー用イメージに変換する

入手したイメージはCD用なので、これをUSBメモリーから起動できるイメージに変換します (CDに書き込んで使う場合はこのままで構いません)。

2-1. 変換する

ここでは変換するためのツールとして geteltrorito.pl を使います。Arch Linuxの場合は次のコマンドでインストールできます。

yaourt -S geteltorito

ダウンロードしたBIOSアップデートユーティリティのファイルが 8duj28jp.iso だとします。これを bios.img というUSB用イメージに変換するには次のように指定します。

geteltorito.pl -o bios.img 8duj28jp.iso

すると次のように表示され、bios.img が作成されます。

Booting catalog starts at sector: 20 
Manufacturer of CD: NERO BURNING ROM
Image architecture: x86
Boot media type is: harddisk
El Torito image starts at sector 27 and has 63488 sector(s) of 512 Bytes

Image has been written to file "bios.img".

2-2. USBメモリーのデバイス名を調べる

USBメモリーを差し込みます。もし自動マウント(中身が表示できる状態)になったらマウントを解除してください。

USBメモリーのデバイス名を調べます。たとえばUSBメモリーを差し込んだすぐ後にシェルから次のように入力すると表示されていることがあります。

dmesg | tail

結果

[  314.012890] scsi host6: usb-storage 2-1:1.0
[  314.013209] usbcore: registered new interface driver usb-storage
[  314.022851] usbcore: registered new interface driver uas
[  315.016847] scsi 6:0:0:0: Direct-Access     Generic  Flash Disk       8.07 PQ: 0 ANSI: 4
[  315.019114] sd 6:0:0:0: [sdb] 62566400 512-byte logical blocks: (32.0 GB/29.8 GiB)
[  315.019789] sd 6:0:0:0: [sdb] Write Protect is off
[  315.019796] sd 6:0:0:0: [sdb] Mode Sense: 23 00 00 00
[  315.020531] sd 6:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[  315.024735]  sdb: sdb1
[  315.026904] sd 6:0:0:0: [sdb] Attached SCSI removable disk

この場合、デバイス名は sdb です。

バイス名を間違えると使用中の HDD の内容を壊したりしてしまいますので十分に注意してください。

2-3. USBメモリーに書き込む

dd コマンドで先ほど作成した bios.img をUSBメモリーに書き込みます。管理者権限で以下を実行します。

dd if=bios.img of=/dev/デバイス名 bs=512k

私の環境ではデバイス名は sdb だったので以下のように実行しました。

dd if=bios.img of=/dev/sdb bs=512k

結果

62+0 レコード入力
62+0 レコード出力
32505856 bytes (33 MB, 31 MiB) copied, 4.40096 s, 7.4 MB/s

3. USBメモリーで起動してBIOSをアップデートする

USBメモリーを挿入したままで再起動します。

ThinkPadの初期画面でF1キーを押してBIOS設定画面に入ります。Startupタブで以下を設定します。

  • UEFI/Legacy Boot: Both
  • UEFI/Legacy Boot Priority: Legacy First

F10キーを押して保存して再起動します。

再びThinkPadの初期画面が表示されるのでF12キーを押してBoot Menuを表示させます。USBメモリーを選んで起動します。USBメモリーは、たとえば「USB HDD: Generic Flash Disk」のように表示されます。

無事にUSBメモリーから起動できるとメニューが表示されますので「システム・プログラムの更新」を選択します。電源ケーブルをつないでいるかなどいくつかの質問がありますので確認しながら進めるとBIOSアップデートが開始されます。

以上でBIOSをアップデートできるはずです。