LENOVO T430s のBIOS更新ですが,バッテリーが弱ってアップデートできなくなっていました.中古のバッテリーを入手したので再度アップデートを試みました.光学ドライブは壊れているのでUSBメモリを使いました.環境はLinux(Debian sid amd64)です.
タグ: BIOS
ThinkPad T430s の BIOS を USB メモリ経由でアップデートする
以前ジャンクで入手したThinkPad T430s ですが,外部キーボードを使ったり,壊れたX220 の部品を使ったりで現在メインマシンとして利用しています.
今NVIDIA Optimus が利用できないかと試していますが,うまく行っていません.BIOS Update で治ったという事例を見つけたのでUpdate しました.Update イメージはCD に書き込んでそこから起動しないといけませんが,USBメモリでもうまく行ったのでメモを残しておきます.
※失敗するとマシンが動かなくなる可能性があります.
まずはBIOS のversion を確認します.date が2012年とかなので古そう.
$ sudo dmidecode -t bios|grep -E "Version:|Release Date:" Version: G7ET60WW (2.02 ) Release Date: 09/11/2012 $ sudo lshw | grep "\-firmware" -A10|grep -E "version|date" version: G7ET60WW (2.02 ) date: 09/11/2012
Lenovo のページでBIOSを確認すると, 26 Jun 2019
の Version 2.75
というものが最新のようです.
Windows用の実行ファイルと,起動CD用のisoファイル,それとそれぞれのリリースレターが用意されています.Linux マシンなのでisoファイルの方を入手します.
ダウンロードしたら,チェックサムを確認します.
Checksum Tips
MD5:aa9846fb15114ef18770cc0812188418
SHA1:ace55c1a1fa87f3ca5140ef67d565ff9f863020a
SHA-256:623dc5d0442b3b0e105186901dc403c911717d4f7998223593b93e66afdbcd93
$ sha256sum ~/Downloads/g7uj28us.iso 623dc5d0442b3b0e105186901dc403c911717d4f7998223593b93e66afdbcd93 /home/matoken/Downloads/g7uj28us.iso
$ isoinfo -d -i ./g7uj28us.iso CD-ROM is in ISO 9660 format System id: Volume id: G7ETB5US Volume set id: Publisher id: Data preparer id: Application id: NERO BURNING ROM Copyright File id: Abstract File id: Bibliographic File id: Volume set size is: 1 Volume set sequence number is: 1 Logical block size is: 2048 Volume size is: 16566 El Torito VD version 1 found, boot catalog is in sector 20 Joliet with UCS level 3 found NO Rock Ridge present Eltorito validation header: Hid 1 Arch 0 (x86) ID 'NERO BURNING ROM' Key 55 AA Eltorito defaultboot header: Bootid 88 (bootable) Boot media 4 (Hard Disk Emulation) Load segment 7C0 Sys type 6 Nsect 1 Bootoff 1B 27 $ isoinfo -l -i ./g7uj28us.iso Directory listing of / d--------- 0 0 0 2048 Jun 13 2019 [ 21 02] . d--------- 0 0 0 2048 Jun 13 2019 [ 21 02] ..
この iso ファイルを CD に書き込んで起動すればいいはずですが,メディアが手元にありません.
iso ファイルによってはUSBメモリに書き込むだけで起動USBメディアになるものもあるので試してみましたが起動できませんでした.
どうにかならないかなーと探すと以下の記事を見つけました.
geteltorito
というPerl Script でイメージを変換した後,USBメモリに書き込むことで ThinkPad の BIOS Update ができるようです.
この記事中ではScript 開発者のページから入手していますが,Debian では genisoimage
pkg に含まれているのでこれを使いました.
$ apt-file search geteltorito genisoimage: /usr/bin/geteltorito genisoimage: /usr/share/doc/genisoimage/README.geteltorito genisoimage: /usr/share/man/man1/geteltorito.1.gz $ sudo apt install genisoimage
$ geteltorito /usr/bin/geteltorito [-hv] [-o outputfilename] cd-image Script will try to extract an El Torito image from a bootable CD (or cd-image) given by <cd-image> and write the data extracted to STDOUT or to a file. -h: This help. -v: Print version of script and exit. -o <file>: Write extracted data to file <file> instead of STDOUT.
$ sudo dmesg -He|tail $ sudo fdisk -l /dev/sdb $ sudo wipefs -a /dev/sdb
$ geteltorito ./g7uj28us.iso | sudo dd of=/dev/sdb bs=1M oflag=dsync status=progress 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 65536 sector(s) of 512 Bytes [sudo] password for matoken: 33218560 bytes (33 MB, 32 MiB) copied, 10 s, 3.2 MB/sImage has been written to stdout .... 9+178 records in 9+178 records out 33554432 bytes (34 MB, 32 MiB) copied, 10.3254 s, 3.2 MB/s
Debian pkg に含まれているScript のversion とsite で配布されているversion は0.5 と0.6 と少し違ったので念の為両方で変換を掛けて比較してみましたが結果は同じでした.
$ wget http://userpages.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/geteltorito/geteltorito $ chmod u+x ./geteltorito $ ./geteltorito -v Version: 0.6 $ ./geteltorito -o ./g7uj28us.img ./g7uj28us.iso $ geteltorito -o ./g7uj28us.img-pkg ./g7uj28us.iso $ diff -s ./g7uj28us.img ./g7uj28us.img-pkg Files ./g7uj28us.img and ./g7uj28us.img-pkg are identical
ということで,書き込んだUSBメモリで起動してBIOS update はうまく行きました.
$ sudo dmidecode -t bios|grep -E "Version:|Release Date:" Version: G7ETB5WW (2.75 ) Release Date: 06/10/2019
忘れがちだけど結構脆弱性の修正やmicrocode のアップデートも入っていたのでちゃんと当てないといけないですね…….
$ dpkg-query -W genisoimage coreutils util-linux dmidecode lshw coreutils 8.30-3 dmidecode 3.2-1 genisoimage 9:1.1.11-3+b2 lshw 02.18.85-0.2 util-linux 2.33.1-0.1 $ hostnamectl | egrep 'Operating System|Architecture' Operating System: Debian GNU/Linux 10 (buster) Architecture: x86-64