<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.thinkwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Funkstille</id>
	<title>ThinkWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.thinkwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Funkstille"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/Funkstille"/>
	<updated>2026-05-06T02:43:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=BIOS_update_without_optical_disk&amp;diff=54913</id>
		<title>BIOS update without optical disk</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=BIOS_update_without_optical_disk&amp;diff=54913"/>
		<updated>2013-11-18T08:11:31Z</updated>

		<summary type="html">&lt;p&gt;Funkstille: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For recent models, such as Thinkpad {{X200}}, Lenovo provides both win32 ''&amp;quot;BIOS update utility&amp;quot;'' and iso-image of ''&amp;quot;BIOS Update (Bootable CD)&amp;quot;''. 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.&lt;br /&gt;
&lt;br /&gt;
A quick look at the ''BIOS Update (Bootable CD)'' iso-image shows that its &amp;lt;tt&amp;gt;iso9660&amp;lt;/tt&amp;gt; filesystem is empty and its bootimage is of &amp;lt;tt&amp;gt;BootMediaType=4&amp;lt;/tt&amp;gt;, 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 find any which works correctly with &amp;lt;tt&amp;gt;BootMediaType=4&amp;lt;/tt&amp;gt; (e.g. &amp;lt;tt&amp;gt;geteltorito&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
UPDATE: the [http://www.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/geteltorito latest] version of geteltorito now includes my patch and works with &amp;lt;tt&amp;gt;BootMediaType=4&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' On UEFI systems, the procedure below does not work, since memdisk is not UEFI compatible. In this case, just 'dd if=bios.img of=/dev/sdb' the extracted image (e.g., bios.img) to an usb drive (e.g., sdb) and try booting from it. There is no need to install a bootloader on the usb drive.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' I used the method, described below to update the BIOS on my {{X200}}. It may or may not work for you, even if the ''BIOS Update (Bootable CD)'' iso-image has the same structure. It is not clear what is the root of the problem, but in some cases PC-DOS, used by Lenovo, hangs when booted via &amp;lt;tt&amp;gt;memdisk&amp;lt;/tt&amp;gt;. The location from which &amp;lt;tt&amp;gt;memdisk&amp;lt;/tt&amp;gt; is loaded (harddrive, USB-stick, or cdrom) also matters (for {{X200}}, harddrive works but USB-stick hangs).&lt;br /&gt;
&lt;br /&gt;
* make sure that you have '''syslinux''' installed (we will need &amp;lt;tt&amp;gt;memdisk&amp;lt;/tt&amp;gt; from this package)&lt;br /&gt;
&lt;br /&gt;
 apt-get install syslinux&lt;br /&gt;
&lt;br /&gt;
* compile the [http://colimit.googlepages.com/isobar.c isobar] utility&lt;br /&gt;
&lt;br /&gt;
 gcc isobar.c -o isobar&lt;br /&gt;
&lt;br /&gt;
* extract the bootimage from the ''BIOS Update (Bootable CD)'' iso-image and copy it to the boot partition&lt;br /&gt;
&lt;br /&gt;
 ./isobar 6duj08uc.iso -o bios.img&lt;br /&gt;
 cp bios.img /boot/bios.img&lt;br /&gt;
&lt;br /&gt;
* copy &amp;lt;tt&amp;gt;memdisk&amp;lt;/tt&amp;gt; loader to the boot partition&lt;br /&gt;
&lt;br /&gt;
 cp /usr/lib/syslinux/memdisk /boot/memdisk&lt;br /&gt;
&lt;br /&gt;
* If you are using grub1 / grub-legacy append the following lines to /boot/grub/menu.lst&lt;br /&gt;
&lt;br /&gt;
 title           BIOS update&lt;br /&gt;
 root            (hd0,0)&lt;br /&gt;
 kernel          /memdisk&lt;br /&gt;
 initrd          /bios.img&lt;br /&gt;
&lt;br /&gt;
* If you are using grub2 (Debian squeeze/sid), append the following to /etc/grub.d/40_custom&lt;br /&gt;
&lt;br /&gt;
  menuentry &amp;quot;BIOS Update&amp;quot; {&lt;br /&gt;
        linux16 /boot/memdisk&lt;br /&gt;
        initrd16 /boot/bios.img&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
* Run update-grub to regenerate /boot/grub/grub.cfg&lt;br /&gt;
&lt;br /&gt;
* reboot, and in the grub menu choose the &amp;lt;tt&amp;gt;BIOS update&amp;lt;/tt&amp;gt; option (exe: my system hangs on &amp;quot;starting PC Dos&amp;quot; if usb flash is inserted so I have to remove it during upgrade)&lt;br /&gt;
&lt;br /&gt;
==Update on Ubuntu 10.10==&lt;br /&gt;
&lt;br /&gt;
The latest &amp;quot;eltorito&amp;quot; works fine with the images.&lt;br /&gt;
* Download the latest script : http://www.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/geteltorito&lt;br /&gt;
&lt;br /&gt;
* Grab the latest bios update&lt;br /&gt;
&lt;br /&gt;
* Extract the image :&lt;br /&gt;
 ./geteltorito -o bios.img 6duj42uc.iso&lt;br /&gt;
&lt;br /&gt;
* Move it into your /boot directory :&lt;br /&gt;
 mv bios.img /boot&lt;br /&gt;
&lt;br /&gt;
* Copy memdisk into your /boot directory :&lt;br /&gt;
 apt-get install syslinux&lt;br /&gt;
 cp /usr/lib/syslinux/memdisk /boot/&lt;br /&gt;
&lt;br /&gt;
* Add an entry for grub :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /etc/grub.d/20_bios_update &lt;br /&gt;
#!/bin/sh&lt;br /&gt;
exec tail -n +3 $0&lt;br /&gt;
# This file provides an easy way to add custom menu entries.  Simply type the&lt;br /&gt;
# menu entries you want to add after this comment.  Be careful not to change&lt;br /&gt;
# the 'exec tail' line above.&lt;br /&gt;
menuentry &amp;quot;BIOS Update&amp;quot; {&lt;br /&gt;
        insmod part_msdos&lt;br /&gt;
        insmod ext2&lt;br /&gt;
        set root='(hd0,msdos1)'&lt;br /&gt;
	linux16 /memdisk&lt;br /&gt;
	initrd16 /bios.img&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Re-generate your menu entry :&lt;br /&gt;
 update-grub&lt;br /&gt;
&lt;br /&gt;
* Reboot and select the entry&lt;br /&gt;
&lt;br /&gt;
Disclaimer : it is certainly possible to the grub &amp;quot;memdisk.mod&amp;quot; but documentation was scarce and this way is working find.&lt;br /&gt;
Please upgrade the doc if you can fix it ;-)&lt;br /&gt;
&lt;br /&gt;
==Hard drive firmware update utility==&lt;br /&gt;
&lt;br /&gt;
Besides BIOS updates, Lenovo also provides [[Hard drive firmware update]] utility in the form of a bootable iso-image. Quick check shows that in some cases it has the same structure as above, i.e. empty &amp;lt;tt&amp;gt;iso9660&amp;lt;/tt&amp;gt; filesystem and bootimage of &amp;lt;tt&amp;gt;BootMediaType=4&amp;lt;/tt&amp;gt;. So, naturally, one would think that we can boot it in the same way as above, via &amp;lt;tt&amp;gt;grub&amp;lt;/tt&amp;gt; &amp;amp; &amp;lt;tt&amp;gt;memdisk&amp;lt;/tt&amp;gt;. However, common sense tells that it is not a good idea to read the firmware from the same very harddrive whose firmware we are updating. But looking further into the structure of the bootimage we see that first it creates a &amp;lt;tt&amp;gt;RAMDRIVE&amp;lt;/tt&amp;gt;, copies the update utility there, and launches it from the &amp;lt;tt&amp;gt;RAMDRIVE&amp;lt;/tt&amp;gt;. So, it is actually OK to use &amp;lt;tt&amp;gt;grub&amp;lt;/tt&amp;gt;. Tested on my {{X200}}.&lt;br /&gt;
&lt;br /&gt;
==Related links==&lt;br /&gt;
Here is a [http://colimit.googlepages.com/geteltorito.diff patch] to &amp;lt;tt&amp;gt;geteltorito&amp;lt;/tt&amp;gt; script to make it work correctly with &amp;lt;tt&amp;gt;BootMediaType=4&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Should work with==&lt;br /&gt;
{{T400}}, {{R400}}, {{T500}}, {{R500}}, {{X200}}, {{x200s}}, {{X200_Tablet}}, {{X201s}}, {{X301}}, {{W500}}, {{W700}}, [[Hard drive firmware update]]&lt;/div&gt;</summary>
		<author><name>Funkstille</name></author>
		
	</entry>
</feed>