Menu

Ubuntu 12.04/11.04/11.10 - boot from ISO use grub4dos

This tutorial is for Ubuntu 11.04 (Natty Narwhal - first screenshot below) but also works for 11.10 (2nd screenshot) if you change the iso name and 12.04. You can make a persistent version (2GB+ USB stick or USB hard disk required) so that any changes you make will be remembered (e.g. wireless WEP/WPA settings, country, wallpaper, etc.). In addition, once you have created a bootable USB stick - you can use it to install Ubuntu onto a PC (or even dual boot on a PC). 





Boot from ISO

Do you want to have a persistent OS but run from an ISO file and use grub4dos and have only 4 files on your USB drive? No Problem!
  1. Download and copy the single fileubuntu-11.04-desktop-i386.iso (or 12.04) to a new folder on your hard disk (e.g. C:\Ubuntu) or if you have a USB drive already prepared, copy it to the USB drive. Version 11.10 also works fine (just change the name of the ISO file).
    IMPORTANTIf you are not making a new USB drive, make sure that the ISO file on the USB drive is contiguous. Use RMPrepUSB (latest version) and press CTRL+F2 or run WinContig on the ISO file or whole drive. If the ISO file is not contiguous, grub4dos will attempt to load the whole ISO file into memory and you may not have enough memory in your system.
  2. Make or add these lines to a new menu.lst file in the same folder, contents are as below:

    Note: if you want a persistent filesystem then keep the word 'persistent' in the command line and make a casper-rw file in step 5.
May be only for for ubuntu 32bit

menu.lst

  1. title Try Ubuntu without installing
    find --set-root /ubuntu-11.04-desktop-i386.iso
    map /ubuntu-11.04-desktop-i386.iso (0xff) || map --mem /ubuntu-11.04-desktop-i386.iso (0xff)
    map --hook
    root (0xff)
    kernel /casper/vmlinuz  file=/cdrom/preseed/ubuntu.seed noprompt boot=casper persistent iso-scan/filename=/ubuntu-11.04-desktop-i386.iso quiet splash --
    initrd /casper/initrd.lz

    title Install Ubuntu
    find --set-root /ubuntu-11.04-desktop-i386.iso
    map /ubuntu-11.04-desktop-i386.iso (0xff)  || map --mem /ubuntu-11.04-desktop-i386.iso (0xff)
    map --hook
    root (0xff)
    kernel /casper/vmlinuz  file=/cdrom/preseed/ubuntu.seed noprompt boot=casper only-ubiquity iso-scan/filename=/ubuntu-11.04-desktop-i386.iso quiet splash --
    initrd /casper/initrd.lz

    title Check disc for defects
    find --set-root /ubuntu-11.04-desktop-i386.iso
    map /ubuntu-11.04-desktop-i386.iso (0xff)  || map --mem /ubuntu-11.04-desktop-i386.iso (0xff)
    map --hook
    root (0xff)
    kernel /casper/vmlinuz  boot=casper integrity-check noprompt  iso-scan/filename=/ubuntu-11.04-desktop-i386.iso quiet splash --
    initrd /casper/initrd.lz

    title Test memory
    find --set-root /ubuntu-11.04-desktop-i386.iso
    map /ubuntu-11.04-desktop-i386.iso (0xff)  || map --mem /ubuntu-11.04-desktop-i386.iso (0xff)
    map --hook
    root (0xff)
    kernel /install/mt86plus
  2. Format your USB drive using RMPrepUSB (v2.1.605 or later) - FAT32 + HDD, set the 5 - Copy Files source to the C:\Ubuntu folder of your hard disk - click 6 Prepare Drive and wait for it to finish. If you already have a bootable USB drive with grub4dos and a menu.lst then skip this and just copy over the ISO file and add the menu entries to your existing menu.lst file.
  3. Run Install grub4dos and install a grub4dos MBR (answer='Yes') and allow it to copy the grldr file over. If you already have grub4dos installed then do this anyway as you will get the latest compatible version - older versions of grldr may not work.
  4. If you want a persistent filesystem to keep all your changes, make a new casper-rw file using the Create Ext2 FSbutton in RMPrepUSB (size of 1GB recommended if you have space).

PLEASE NOTE: Many linux versions (including Ubuntu) will not automatically mount a persistent filesystem if it is a file on an NTFS filesystem (i.e. if your casper-rw is file on an NTFS USB drive then it won't work!)

However, there is a way around this.
  • First create your casper-rw file as explained in Step 5 - you MUST create the Ext2 file as casper-rw as this also sets the volume name of the filesystem to casper-rw. 
  • Next rename the casper-rw file to a suitable name (e.g. Ubuntu1204-rw) - this step is optional but it avoids any other linux you have trying to use casper-rw - you can thus have many linux ISOs that all try to use 'casper-rw' on the same USB boot drive.
  • Ensure that the file is contiguous (run RMPrepUSB - Ctrl+F2 on the drive)
  • Now add an extra line to the beginning of your grub4dos menu as a line just under the title line, as follows:
partnew (hd0,3) 0x0 //ubuntu1204-rw

IMPORTANT: This will wipe the 4th partition entry of your boot disk! Make sure that the 4th partition table is empty (use RMPrepUSB - Drive Info - 0 to check). 

For more info see my blog post here.

The partnew command creates a partition entry which points to the persistent file. As linux just sees  a partition on a hard disk that is an ext2 partition it quite happily mounts it!


          Your usb pen should now contain these 4 files:

 Directory of E:\

16/07/2011  18:15           280,024 grldr
22/07/2011  17:43             1,128 menu.lst
22/07/2011  10:01       718,583,808 ubuntu-11.04-desktop-i386.iso
22/07/2011  18:24     1,100,003,840 casper-rw
          4 File(s)    1,818,868,800 bytes

That's it - go try it!


Note: If you want to place the ISO file in a different folder, make sure you change all the references to the iso file in menu.lst.

Tip: To access USB drives, you will need to create a /media/ubuntu folder first! This is a bug in the LiveCD build.
  • ctrl+alt+f1
  • sudo mkdir /media/ubuntu
  • clrt+alt+f7


Now double-click on USB drive icon to mount it and view a drives contents.

Link: http://www.rmprepusb.com/tutorials/ubuntu


For Ubuntu 14.04 64bit ( also may be with ubuntu 12.04 64bit )

Looking for a solution, I finally found the error and the correct code to boot it (it still works for me):
title Run Ubuntu 14.04
find --set-root /BOOT/Linux/ubuntu-14.04.1-desktop-amd64.iso
map /BOOT/Linux/ubuntu-14.04.1-desktop-amd64.iso (0xff) || map --mem /BOOT/Linux/ubuntu-14.04.1-desktop-amd64.iso (0xff)
map --hook
root (0xff)
kernel /casper/vmlinuz.efi  file=/preseed/ubuntu.seed noprompt boot=casper iso-scan/filename=/BOOT/Linux/ubuntu-14.04.1-desktop-amd64.iso quiet splash --
initrd /casper/initrd.lz
The mistake was the path to ubuntu.seed. The correct path is /preseed (rather than /cdrom).
Notes:
  • It had not worked with an Ubuntu 12.04 (non-LTS) that I had here.
  • Do not forget to change the path "/BOOT/Linux/ubuntu14.04.iso" to the path where your "ISO" file actually is.

Không có nhận xét nào :

Đăng nhận xét