I found myself in quite the predicament over the Christmas break. I was visiting my family in New York, and wanted to upgrade Mom's old Ubuntu system.
This particular PC did not boot from USB, something I am to blame for. I built the PC before I ran Linux, and didn't know what an important factor that is. Flash forward, and the Xubuntu disk I downloaded was too big to burn to a CD and couldn't be booted from a USB drive.
I even tried the venerable Plop boot CD, but even that wouldn't bypass this computer's refusal to boot from a USB drive. What was I supposed to do?
Instead of copying the ISO to a disc or USB drive, I used dd to copy it to a SATA hard drive (more information under notes). I made sure I had backed up all relevant data beforehand, and issued the following command as root:
dd if=xubuntu-13.10-desktop-i386.iso of=/dev/sdb bs=4096
My device was
/dev/sdb, but make sure you know what you're doing before pointing a stream of data at one of your block devices!
Once the data had finished writing to the drive, I rebooted and pointed the BIOS at the drive with the live ISO data on it. Huzzah, it booted to the drive! I selected the "Try before you buy" option, and... was thrown into busybox. For some reason, the system could not handle being loaded onto a SATA drive - it couldn't seem to find any of it's filesystem past the first screen.
I was able to find two boot flags that made things work correctly. After hitting
F6 at the main boot menu, and adding in the following flags, I was able to boot:
bootfrom=/dev/disk/by-id/[ ID of hard drive with ISO ]-part1
Beyond that, it was a very normal *buntu install. Mom's PC was upgraded, and Christmas was saved.
This post was composed from notes taken months ago, and scribbled on a sheet of paper. I actually found the boot options on some Debian documentation, as the Ubuntu documentation on boot flags is a circular redirect to nowhere. If these aren't working for you, I may be slightly off with the syntax.
Also, I'm not sure if I was required to use that crazy ID mapping or if that was just the first combination of options that worked, so your mileage may vary. I discovered that particular dev point while traversing the directory structure in busybox, and it seemed like an easy way to identify my odd hardware setup. Your ordinary
/dev/sdb1 may work just as well.
Speaking of odd hardware setup: I didn't use a conventional SATA hard drive for this process. I have a SD to SATA adapter that I bring with my laptop on trips, just in case I have my conventional drive fail. It made writing the ISO a bit easier, and it was also nice and light - which counts when it's hanging out of a computer case. It may have added to my troubles in some unseen way, but it seemed to do the trick in the end.