Simple way to boot an ISO in Windows or Ubuntu without the need for external media

Post date: Mar 11, 2016 2:3:40 PM

Traditionally booting an ISO first requires the preparation of external media such as a USB using software before it can be used to boot from. But how simple would it be just to download the ISO and then be able to boot from it immediately? Although this is possible using virtualization or a hypervisor it still requires a virtual machine package to be installed.

Another issue that mini PCs users have encountered is that running a 64-bit kernel from a 32-bit UEFI bootloader doesn't work.

So I've created a simple bootloader that resolves these issues and only requires a minimal initial set-up and can then be used to boot ISOs directly after downloading them to the mini PC. And it works on both Windows and Ubuntu including dual-boot systems.

Initial set up for Windows users

Open a 'Command Prompt' as 'Administrator' and create a folder 'iso' under the C:\ drive:

mkdir c:\iso

Now download my bootloader (linuxium.zip) from https://drive.google.com/file/d/0B99O3A0dDe67OXBKakhuSUdVdFk and unzip the file under C:\iso

Next make a note of the first free drive letter e.g. 'T:' and enter:

mountvol t: /s

Then make a new folder under the existing 'EFI' folder:

mkdir t:\EFI\iso

Finally copy the file from 'C:\iso' corresponding to the UEFI bootloader being used ('linuxiumia32.efi' is for 32-bit and 'linuxiumx64.efi' is for 64-bit), e.g.

copy c:\iso\linuxiumia32.efi t:\EFI\iso

If you want you can now clean up 'C:\iso' e.g.

del c:\iso\*

And/Or Initial set up for Ubuntu users

Open a terminal session and create a directory 'iso' under the root directory '/':

sudo mkdir /iso

Download my bootloader (linuxium.zip) from https://drive.google.com/file/d/0B99O3A0dDe67OXBKakhuSUdVdFk and unzip the file to /iso

Check that your EFI partition is already mounted and mount if necessary (typically it will be mounted under /boot/efi)

Make a new directory under the existing 'EFI' directory:

sudo mkdir /boot/efi/EFI/iso

Copy the file from /iso corresponding to the UEFI bootloader being used ('linuxiumia32.efi' is for 32-bit and 'linuxiumx64.efi' is for 64-bit), e.g.

sudo cp /iso/linuxiumia32.efi /boot/efi/EFI/iso/

You can now clean up '/iso' e.g.

sudo rm /iso/*

Download an ISO ready for booting

Download an Ubuntu ISO (e.g. ubuntu-14.04.4-desktop-amd64.iso) and save it in the ISO directory ('c:\iso' or '/iso') as 'ubuntu-desktop-amd64.iso'

Although any ISO can be used it must be saved as a file called 'ubuntu-desktop-amd64.iso' so the bootloader can find it. I've included 'amd64' in the name as a reminder that it is better to use 64-bit ISOs.

Booting the ISO

Reboot your mini PC and bring up the boot menu (typically F7 or F11 on mini PCs)

Select the option to boot called 'UEFI: Built-in EFI Shell'

Hit escape to get to the 'shell' prompt and enter the following command to start my bootloader (either 'linuxiumia32.efi' or 'linuxiumx64.efi' depending on above):

fs0:\efi\iso\linuxiumia32.efi

You should now see a message saying 'Booting from (hdX, gptY)/iso/ubuntu-desktop-amd64.iso ...'

Shortly after you'll see various messages as the kernel starts up (I've deliberately removed 'quiet' so you can see what is happening) before the desktop appears. And that's it; all ready to use.

Because this is an ISO there is no persistence of data. And depending on the mini PC not everything like wifi and sound will work on a standard ISO.

If you are feeling adventurous, you could create a permanent entry in the boot menu using 'efibootmgr' rather than boot using the UEFI EFI shell. First you'll need to install 'efibootmgr' (e.g. 'sudo apt-get install -y efibootmgr') and then the syntax for creating the boot entry for a mini PC with eMMC will be something like:

efibootmgr -c -d /dev/mmcblk0 -p 1 -l "\EFI\iso\linuxiumia32.efi" -L "Boot from ISO"

or for a mini PC with SSD:

efibootmgr -c -d /dev/sda -p 1 -l "\EFI\iso\linuxiumia32.efi" -L "Boot from ISO"

depending on your installation so please make sure the syntax of the command is correct for your mini PC.

And if you can I'd appreciate a donation through http://goo.gl/nXWSGf