tested with thinkpad and openbsd 7.8
download a bios updater for your thinkpad. for example, x1 or t14.
populate variables with a path to your gif, bios id, and its sha256, for example, for t14:
# logo_gif=path/to/logo.gif # bios=n3bur22w # sha=a76f5bc06857ca44026b1630b727ba2f202fd5ab #
install geteltorito:
# pkg_add geteltorito quirks-7.147 signed on 2026-03-14T08:37:19Z geteltorito-0.6: ok #
download the iso:
# cd /tmp # server=https://download.lenovo.com # ftp -V "$server/pccbbs/mobiles/$bios.iso" n3bur22w.iso 100% |*******| 83308 KB 00:02 #
verify its checksum:
# echo "SHA1 ($bios.iso) = $sha" >"$bios.sha" # sha256 -C "$bios.sha" "$bios.iso" (SHA1) n3bur22w.iso: OK #
convert .iso image to .img:
# geteltorito -o "$bios.img" "$bios.iso" Booting catalog starts at sector: 20 Manufacturer of CD: NERO BURNING ROM VER 12 Image architecture: x86 Boot media type is: harddisk El Torito image starts at sector 27 and has 165888 sector(s) of 512 Bytes Image has been written to file "n3bur22w.img". #
warning! all data on sd2 will be erased.
plug in a usb drive as sd2, write the bios updater on to it:
# disk=sd2
# dd if="$bios.img" of="/dev/r${disk}c" bs=1m
81+0 records in
81+0 records out
84934656 bytes transferred in 10.084 secs (8422714 bytes/sec)
#
copy your gif to /FLASH/LOGO.GIF:
# mkdir -p "/mnt/${disk}i"
# mount "/dev/${disk}i" "/mnt/${disk}i"
# cp "$logo_gif" "/mnt/${disk}i/FLASH/LOGO.GIF"
# umount "/dev/${disk}i"
#
warning! next step may brick your thinkpad.
boot the usb drive and follow prompts.
see also