Talk:BIOS update without optical disk

From ThinkWiki
Jump to: navigation, search

Freeze when booting from USB drive

I attempted a BIOS upgrade on a ThinkPad X200s using the steps described on this page. Since no Linux is installed on the ThinkPad (only Vista 64-bit), I used a USB drive I prepared on another computer. The drive was formatted as plain FAT and contains nothing but GRUB, the memdisk executable and the image extracted with isobar. The laptop boots fine from the USB drive, GRUB loads and runs memdisk, which takes over and prints some debug information about memory addresses, disk layout and interrupts. Finally the following lines appear:

Loading boot sector... booting...
Lenovo Group Limited

Starting PC DOS...

Unfortunately, nothing happens after that. I attempted this with BIOS 3.01 (6duj30uc.iso) and BIOS 2.06 (6duj08uc.iso, the exact one used in the instructions). GRUB and syslinux are both up to date, obtained from the repositories of the recently released Ubuntu 9.04. I also tried the isobar32.exe from the OMIBAR32 package on the SHSUCD website, again to no avail (however, the resulting images had a different checksum). Any ideas?

--Nor 21:26, 15 May 2009 (UTC)

I also had no luck booting memdisk from a USB stick (may be because of the way memdisk works: it hijacks the HD-access interrupt in BIOS. But no-emulation boot of syslinux from a USB stick works OK). As for the different checksums for isobar32.exe and isobar-for-linux -- the images also have different sizes. I found and fixed a bug in the original isobar32.exe that might potentially corrupt the image (instead of "offset"+"size of the first partition" it dumps only "size of the first partition", so if there is a useful info in the last 32 sectors or so -- isobar32.exe will loose it). For now, I would suggest you

  • boot from a linux "live-CD", e.g sysresccd (of course, the whole point is that you dont have an optical drive, but you can easily make a bootable USB stick out of it. Since it uses no-emulation syslinux, it will boot OK).
  • backup (with dd if=/dev/sda) the first 100Mb of your internal harddisk to an external disk (e.g. to the USB stick you are booting from)
  • run "fdisk /dev/sda", delete all partitions, make a new primary partition /dev/sda1 of size 50Mb, format it in ext2 and mount to /media/sda1
  • install grub, memdisk and bios.img you've extracted with isobar to /media/sda1
  • reboot and update the BIOS
  • reboot from the linux "live-CD" and restore your first 100Mb (with dd of=/dev/sda)

P.S. hypothetically, it could be done in a little simpler way (just dd=bios.img of=/dev/sda, bypassing installation of grub & memdisk), but in my testings it it gave "Missing operating system" error.

--newhren 14:22, 16 May 2009 (UTC)

I have found the same problem where memdisk fails to boot an image, whereas qemu has no problem to boot memdisk+image. Other people have reported the same problem with other systems (and this issue is known since at least 2004, but unresolved). I have had success reports from a T400 user, as well as the original author on a X200.

It was believed to be caused by a buggy BIOS, however the X200 and the X200s use the same BIOS. (And even the BIOS on a T400 is not completely different). We also ruled out the memdisk build, so it is related to either a BIOS setting or the hardware configuration of the system.

We need more people with success stories and fail stories to find the root-cause of this problem. It certainly is a bug in memdisk triggered by 'something', we just have to find what that 'something' is in order to fix it. (Or someone has to send such a device to the syslinux/memdisk developer so he can debug this issue :-))

More information from:

   http://syslinux.zytor.com/archives/2009-May/012508.html

and (many) older reports:

   http://syslinux.zytor.com/archives/2004-January/002999.html
   http://syslinux.zytor.com/archives/2004-October/004099.html

--dag- 15:39, 24 May 2009 (CET)

dag, I think we have some misunderstanding. For me, the "original author" of "BIOS_update_without_optical_disk" page, memdisk works if you boot it from the harddisk, but it fails if you boot it from a USB stick (the payload does not seem to matter, FreeDOS fails too). When you talk about qemu, memdisk boots from the qemu's "harddisk", so there is no disagreement here. Just in case, I compiled the latest memdisk 3.80 from source, and it successfully boots my X200 from the harddisk. And until we here at least one success story about booting memdisk from a USB stick, I would not call it "a buggy BIOS", right now it smells more like "a buggy memdisk" :).

--newhren 16:04, 24 May UTC 2009 (UTC)

newhren, thanks for your assistance. Since I had some time on my hands today, I created a small FAT32 partition at the end of my hard-disk and copied the images extracted with isobar, the memdisk utility and the GRUB staging files there. Then, using the USB stick I initially used, I installed GRUB to the hard-disk's MBR. The BIOS update went through just fine. I also attempted a hard-disk firmware update and it loaded flawlessly, but since my drive's firmware does not need updating, I can't tell if it works.

--Nor 19:02, 11 June 2009 (UTC)

Another error

For me the attempt to boot results in: Error 28: Selected item cannot fit into memory. I've got 4gb of ram, so I doubt that's the problem. the bios img is: [Linux-initrd @ 0xbbc91000, 0x1700000 bytes]

ls -l /boot
-rw-r--r-- 1 root root  24117248 May 28 19:25 bios.img

The thing is about 24mb, should have no problems being an initrd. --dkowis

I've got to be more specific if you need help. Did you use memdisk, which options did you use? May be 4Gb is too much for memdisk, did you try to remove one memory stick?

--newhren 01:55, 29 May 2009 (UTC)