Burn bootable iso image to USB stick using dd: Won't boot (despite USB first in boot sequence)

7,428

Solution 1

https://wiki.archlinux.org/index.php/ThinkPad_Edge has the process:

  1. Grab and unpack https://gna.org/projects/grub4dos/ (the wiki has an old link)
  2. In the grub4dos directory, sudo ./bootlace.com /dev/sdb
  3. cp grldr /media/USBSTICK
  4. cp menu.lst /media/USBSTICK
  5. cp /path/to/7yuj40uc.iso /media/USBSTICK

Finally you have to add the following code to the menu.lst on your pendrive to make the USB-Stick boot the PC DOS program made by lenovo:

title Thinkpad-BIOS-UPDATE
find --set-root /7yuj40uc.iso
map /7yuj40uc.iso (0xff) || map --mem /7yuj40uc.iso (0xff)
map --hook
chainloader (0xff)
boot

And that's about it.

Solution 2

The ansewer of chx did not work when I tried to make a bootable USB-stick from the iso of a bootable CD from Lenovo, to flash the BIOS of a Thinkpad X1 Carbon. Unetbootin, multiusb etc. also did not work, as stated in the question. What worked was to grab the script geteltorito.pl, extract the so-called bootable image and dd that image to a USB flash stick. There may be a plethora of other tools to extract the bootabe image from an CD, e.g., genisoimage for ubuntu contains a binary geteltorito.

./geteltorito.pl -o g.img gruj08us.iso
dd if=g.img of=/dev/sdX bs=1M
# use lsblk to get the device, e.g., sdb; Not the partition, e.g., sdb1
# bs=1M is not necessary, just for speed

To have a look into the image, get the offset of the filesystem contained in it, e.g., using fdisk, and mount the image with that offset,

fdisk g.img
> p
# if the sector size is 512, the start of the filesystem at sector 32,
# 32 x 512 = 16384
mount -o loop,offset=16384 g.img /mount/point/
Share:
7,428

Related videos on Youtube

Nicolas Raoul
Author by

Nicolas Raoul

I am Nicolas Raoul, IT consultant in Tokyo. Feel free to copy/paste the source code from my StackExchange answers, I release it to the public domain.

Updated on September 18, 2022

Comments

  • Nicolas Raoul
    Nicolas Raoul over 1 year

    I have installed Ubuntu on a Lenovo Thinkpad R500 2732, and I must update the BIOS.

    On the Lenovo website, I am offered this:

    BIOS Update Bootable CD for Windows 7 (32-bit, 64-bit), Vista (32-bit, 64-bit), XP - ThinkPad R500

    I guess a bootable CD that would do a BIOS update is indeed what I need. (still wondering why it says "Windows" though... if it is bootable should not it be OS-agnostic?)

    Not wanting to waste a CD, I copied the image to my USB stick:

    sudo dd if=/home/nico/7yuj40uc.iso of=/dev/sdb1 bs=1M
    

    And rebooted, after making sure USB is first in the boot sequence.

    PROBLEM: It does not boot. Did I forget one step?

    Details about the iso image (readme):

    ls -lh 7yuj40uc.iso
    25M
    file 7yuj40uc.iso
    /home/nico/7yuj40uc.iso: # ISO 9660 CD-ROM filesystem data '7YUJ40US                       ' (bootable)
    

    (Scroll to the right: it says "bootable")

    • UNetbootin does not work because it is not a Linux image.
    • Some people on the Internet advise to copy the content of the ISO and do other steps. This ISO has zero ISO content so it would not work. If I mount the ISO, I can see it contains zero files.
  • ljrk
    ljrk about 7 years
    Exactly what's needed -- no additional bootloader and much fiddling required!