Talk:BIOS update without optical disk

From ThinkWiki
Revision as of 15:49, 24 May 2009 by Dag- (Talk | contribs) (Freeze when booting from USB drive)
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 :-))

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