Talk:BIOS update without optical disk

From ThinkWiki
Revision as of 18:23, 16 May 2009 by Newhren (Talk | contribs)
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)