ThinkPad T460sのBIOSを更新する

ThinkPad T460sのBIOSを更新しました。通常はWindows用アプリケーションで更新するようですが、macOSでBIOS更新用USBメモリーを作りました。Windowsを使わずに更新できました。

ThinkPadのBIOS

ThinkPad T460sで作ったhackintoshの続きです。

BIOS設定画面で見ると、BIOSバージョンが古いことが気になっていました。2016年11月30日版の1.20です。

Lenovoのサポートサイトで配布されているBIOSは2019年12月13日版の1.47です。

BIOSが古くても動いていれば問題なしです。むしろ新しくすることでOSが動かなくなる可能性もあります。サポートサイトに「問題なく動いているならBIOSは更新しなくても良い」と書いているマザーボードメーカもあります。でもソフトウェアには必ずバグがあって、それをバージョンアップで直してます。なので、アプリケーションも、OSも、BIOSもとにかく最新版にしたいと常々思っています。ということでThinkPadのBIOSを最新版にバージョンアップしました。

上記のサイトによるとBIOSバージョンアップには次の3通りの方法があるようです。

  1. Windowsのツールをダウンロードして起動する
  2. CD-ROM用isoファイルをダウンロードしてCD-ROMを焼いてそれで起動する
  3. 新BIOSのデータをダウンロードしてLinuxのツールを使う

です。通常のマザーボードだと、BIOSのメニューからUSBメモリに入れた新BIOSデータを指定して更新できます。でもThinkPadのBIOSにはそのようなメニューがありません。ユーザがうっかりBIOSを書き換えられないようにしてあるのだと思います。

1番のWindowsのツールは使いません。Windowsは使わないので、入手してすぐに内蔵SSDを初期化して消してしまったからです。残しておけば良かったと若干後悔していないわけではないですが、新たにインストールするのは面倒です。

3番のLinuxのを使う方法は試しました。UbuntuのLive CDイメージをUSBメモリーに焼いて起動して、ダウンロードしたBIOSイメージを指示されたLinuxコマンドで書き込もうとしました。しかしハードウェアを認識できないというメッセージが出て、更新できませんでした。Live CDなのでダメだったのかもしれません。でも新たにインストールするのは面倒なので、断念しました。

そこで、2番目の起動CD-ROMイメージを使う方法を採用しました。ただ、CD-ROMを焼くのも、ThinkPadにUSB接続CD-ROMドライブを接続するのも面倒なので、これもUSBメモリーから起動させるようにします。手順は以下です。

BIOS更新手順

Step 1: 起動CD-ROM用isoファイルを入手する

上記のLenovoのサイトから、「BIOS アップデートユーティリティ (起動CD用)」をダウンロードします。n1cur34w.isoという名前の24.5MBのファイルを入手できました。

Step 2: isoファイルをUSBメモリイメージファイルに変換する

起動用CD-ROMのデータと起動用USBメモリのデータは多少違うようです。ブートのためのファイルの配置場所などが違うのではないかと思います。なので、isoファイルを、起動用USBメモリー用のファイルに変換します。このツールとして、geteltorito.plというツールを以下のサイトから入手します。

これはperlで書かれたプログラムなのでmacOSでも動きます。これを使い、ターミナルで以下のようにタイプします。

% ./geteltorito.pl -o bios.img n1cur34w.iso 

ここでは、n1cur34w.isoからbios.imgというファイルを作っています。この結果、以下のように表示され、bios.imgが生成されました。

% ./geteltorito.pl -o bios.img n1cur34w.iso 
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 47104 sector(s) of 512 Bytes

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

Step 3: imgファイルをUSBメモリーに書き込む

USBメモリーを用意します。容量は24MBあれば良いです。手元にあった8GBのメモリーを使いました。一応、マスターブートレコードスキーム、FAT32でフォーマットして、アンマウントしておきました。次にddコマンドを使うので、このようなフォーマット作業は不要だったかもしれません。

次にターミナルからddコマンドで、USBメモリーにimgファイルを書き込みます。ddコマンドはファイルシステムなどは無視して、物理的に書き込んでいくコマンドです。USBメモリの場所がdisk2でしたので、以下のコマンドで書き込みます。disk2ではなくrdisk2にしたのは、その方が少し高速らしいからです。容量が小さいので/dev/disk2でも問題ありません。

% sudo dd if=bios.img of=/dev/rdisk2

そこ結果、以下のような表示が出て、USBメモリーが完成します。

% sudo dd if=bios.img of=/dev/rdisk2
47104+0 records in
47104+0 records out
24117248 bytes transferred in 15.043802 secs (1603135 bytes/sec)

Step 4: USBメモリーで起動してBIOSを書き換える

このUSBメモリーをThinkPadに挿し、起動します。その際にF12を連打します。すると起動ドライブ選択画面になるので、USBメモリーを選択します。BIOSでLegacy bootに設定しなければならないというネット上情報もありましたが、UEFI bootのままで大丈夫でした。USBメモリーで起動すると、以下のような画面になります。

1.のRead this first…は一応目を通しておいた方が良いです。2.のUpdate system programを選択すると、いろいろと警告が出てから、BIOS更新が行われます。

新BIOSを試す

BIOS画面でバージョンを確認します。最新バージョンになっていました。

macOSの起動にも問題ありませんでした。BIOSが更新されたから何が良くなったというわけではないので、単なる気持ちの問題です。

苦労したところ

起動用CD-ROMデータであるisoファイルから、起動用USBメモリーデータであるimg(またはdmg) ファイルに変換する際に、hdiutilというコマンドがお馴染みでした。例えば、今回のようにn1cur34w.isoという名前のファイルでしたら、

% hdiutil convert -format UDRW -o n1cur34w n1cur34w.iso

のコマンドで、n1cur34w.dmgというファイルが出来上がります。dmgとimgは同じもののようで、改名しても良いようです。また、UDRWというのは、read/writeできる光ディスクのフォーマットのようです。こうして作った結果のファイルを、ddコマンドでUSBメモリーに書き込めば、起動USBメモリーが作れるはずです。

しかし、ThinkPadでは起動しませんでした。BIOS設定を色々試したのですがダメでした。ところがこのUSBメモリーを、ASUSマザーボードの自作デスクトップで起動したら、メニュー画面が現れます。他のisoファイルで試しましたが、同様に、自作PCでは起動するものの、ThinkPadでは起動しません。そこで色々試行錯誤して、ネットを検索したところ、ThinkPadで起動させるためには、上で使用したgeteltorito.plが使えることがわかりました。

まとめ

ThinkPad T450sのBIOSが古かった (2016年版) ので最新版 (2019年版) に更新しました。サポートサイトで配布されている起動用CDのデータを変換してUSBメモリーに書き込みました。変換には通常のhdiutilコマンドではなく、ネットで配布されていたperlプログラムを使いました。BIOSが新しくなって変化した点はありませんが、以前と同じようにmacOSが起動しています。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です