Difference between revisions of "BIOS update without optical disk"

From ThinkWiki
Jump to: navigation, search
(new page)
 
Line 1: Line 1:
 
For recent models, such as Thinkpad {{X200}}, Lenovo provides both win32 ''"BIOS update utility"'' and iso-image of ''"BIOS Update (Bootable CD)"''. If you don't have Windows installed, the first option is obviously unavailable for you. If you have an optical drive of some kind (internal, or built into the docking station, or an external USB drive) you can burn the iso-image and proceed with the BIOS update. In case if you don't have any optical drive things get a little tricky.
 
For recent models, such as Thinkpad {{X200}}, Lenovo provides both win32 ''"BIOS update utility"'' and iso-image of ''"BIOS Update (Bootable CD)"''. If you don't have Windows installed, the first option is obviously unavailable for you. If you have an optical drive of some kind (internal, or built into the docking station, or an external USB drive) you can burn the iso-image and proceed with the BIOS update. In case if you don't have any optical drive things get a little tricky.
  
A quick look at the ''BIOS Update (Bootable CD)'' iso-image shows that its <tt>iso9660</tt> filesystem is empty and its bootimage is of <tt>boottype=4</tt>, i.e. it is a harddisk emulation. There are many Linux tools which extract bootimages from iso-images, but after a search over the net, I didn't any which works correctly with <tt>boottype=4</tt> (e.g. <tt>geteltorito</tt> form '''genisoimage''' package messes things up). I found, however, a free open-source DOS utility '''isobar''' from [http://shsucdx.adoxa.cjb.net/ shsucd] package. So, I just [http://colimit.googlepages.com/isobar.c ported] it to linux.
+
A quick look at the ''BIOS Update (Bootable CD)'' iso-image shows that its <tt>iso9660</tt> filesystem is empty and its bootimage is of <tt>BootMediaType=4</tt>, i.e. it is a [http://www.phoenix.com/NR/rdonlyres/98D3219C-9CC9-4DF5-B496-A286D893E36A/0/specscdrom.pdf harddisk emulation]. Therefore non of the methods discussed in [[BIOS_Upgrade/X_Series]] would work. There are many Linux tools which extract bootimages from iso-images, but after a search over the net, I didn't any which works correctly with <tt>BootMediaType=4</tt> (e.g. <tt>geteltorito</tt> form '''genisoimage''' package messes things up). I found, however, a free open-source DOS utility '''isobar''' from [http://shsucdx.adoxa.cjb.net/ shsucd] package. So, I just [http://colimit.googlepages.com/isobar.c ported] it to linux.
  
 
Now, to update the BIOS,
 
Now, to update the BIOS,
Line 16: Line 16:
  
 
  ./isobar 6duj08uc.iso -o bios.img
 
  ./isobar 6duj08uc.iso -o bios.img
  sudo cp bios.img /boot/bios.img
+
  cp bios.img /boot/bios.img
  
 
* copy <tt>memdisk</tt> loader to the boot partition
 
* copy <tt>memdisk</tt> loader to the boot partition
  
  sudo cp /usr/lib/syslinux/memdisk /boot/memdisk
+
  cp /usr/lib/syslinux/memdisk /boot/memdisk
  
 
* append the following lines to /boot/grub/menu.lst
 
* append the following lines to /boot/grub/menu.lst

Revision as of 02:24, 8 April 2009

For recent models, such as Thinkpad X200, Lenovo provides both win32 "BIOS update utility" and iso-image of "BIOS Update (Bootable CD)". If you don't have Windows installed, the first option is obviously unavailable for you. If you have an optical drive of some kind (internal, or built into the docking station, or an external USB drive) you can burn the iso-image and proceed with the BIOS update. In case if you don't have any optical drive things get a little tricky.

A quick look at the BIOS Update (Bootable CD) iso-image shows that its iso9660 filesystem is empty and its bootimage is of BootMediaType=4, i.e. it is a harddisk emulation. Therefore non of the methods discussed in BIOS_Upgrade/X_Series would work. There are many Linux tools which extract bootimages from iso-images, but after a search over the net, I didn't any which works correctly with BootMediaType=4 (e.g. geteltorito form genisoimage package messes things up). I found, however, a free open-source DOS utility isobar from shsucd package. So, I just ported it to linux.

Now, to update the BIOS,

  • make sure that you have to make sure that you have syslinux installed (we will need memdisk from this package)
apt-get install syslinux
gcc isobar.c -o isobar
  • extract the bootimage from the BIOS Update (Bootable CD) iso-image and copy it to the boot partition
./isobar 6duj08uc.iso -o bios.img
cp bios.img /boot/bios.img
  • copy memdisk loader to the boot partition
cp /usr/lib/syslinux/memdisk /boot/memdisk
  • append the following lines to /boot/grub/menu.lst
title           BIOS update
root            (hd0,0)
kernel          /memdisk
initrd          /bios.img
  • reboot, and in the grub menu choose the BIOS update option