[HOWTO] Install Grub to a USB drive
Posted: 10 Jan 2011, 20:25
Note, this HOWTO relates to Grub (legacy), not Grub2 or Grub4dos.
I found this thread useful:
http://ubuntuforums.org/showthread.php?t=1163686
I used 2 USB drives to accomplish this (all commands were used on the first drive, running Porteus, to install grub on the second drive), but this could also be accomplished from a linux OS running on a hard drive. Steps 1 and 2 are not necessary if you are installing from a linux system that already uses Grub, as these files should already be on your system.
1) Download the grub .txz package, here:
http://pkgs.org/slackware-13.1/slackwar ... 9.txz.html
I placed this file on my KDE desktop.
2) Right click on the .txz package you downloaded, and select “install”. This will install all of the necessary grub files to the system you are running, but it will not overwrite the MBR of the active drive (it will continue to boot as usual).
3) Insert the second USB drive, and mount it. I mounted mine like this:
Replace sdc1 with whatever partition you are installing to. In my case, sdb1 was my active Porteus USB drive (which was already mounted), and sdc1 was the target drive.
4) Create a new directory to hold grub on the target drive:
5) Copy all of the files from /usr/lib/grub/i386-pc to /mnt/sdc1/boot/grub.
6) In your terminal, type ‘grub’ and hit enter. This will open a grub shell.
7) Enter the following into the grub shell:
This searches all partitions on your system, and will return a list of each instance where this file was found along the path /boot/grub. In my case, two entries were returned:
It is very important that you know which of these drives is the target drive. Note that Grub starts counting from 0, not one for both drives and partitions. In my case, I knew that hd 0,0 was my hard drive, with windows installed (it was not shown, because it does not contain the /boot/grub/stage1 file). The second drive (hd 1,0) was the USB drive running porteus, and the third drive (hd2,0) was the target drive.
8 ) enter the following:
but replace hd1,0 with the device/partition to which you want to install grub. This tells grub to look in this partition (your target partition) for the files necessary to boot. On my first install, I didn't include this, and grub would hang on boot-up, because it was looking for the files on another device.
9) enter the following:
Again, replace hd1 with the device to which you want to install grub. This will overwrite the MBR of this device, so again, it is highly important that you know which device you are dealing with, or you could mess up your ability to boot your computer! Note--if you are looking to install grub to the bootsector of a partition (rather than to the MBR), enter, for example, 'setup (hd1,1) to install to the second partition of the second drive.
If you receive an error message from the setup command, try running it again, with the same parameters.
10) create a file in /mnt/sdc1/boot/grub named menu.lst (MENU.LST, not MENU.1ST)
This file will direct grub to boot your OS. Ignore this step if you already have a menu.lst file here.
11) copy (or replace) the following into menu.lst:
You can make additional entries to the menu.lst to boot from other partitions, iso image files, etc. for example:
Thanks to Ponce, for helping me with the menu.lst entries!
12) I already had slax-remix installed to this drive, so /boot and /slax were already in place. If you've already upgraded to Porteus v09, you'll need to adjust your menu.lst entries to point to the appropriate directories, as their names may be different.
Now, reboot and see if you get into grub!
I’ve not yet sorted out bootsplash images, etc. I was just trying to get grub installed so that I could see how it works, in case we use it as a bootloader in v1.
Thanks, and if you see any errors in the above, feel free to let me know and I'll correct them. I'm not exactly a grub expert
I found this thread useful:
http://ubuntuforums.org/showthread.php?t=1163686
I used 2 USB drives to accomplish this (all commands were used on the first drive, running Porteus, to install grub on the second drive), but this could also be accomplished from a linux OS running on a hard drive. Steps 1 and 2 are not necessary if you are installing from a linux system that already uses Grub, as these files should already be on your system.
1) Download the grub .txz package, here:
http://pkgs.org/slackware-13.1/slackwar ... 9.txz.html
I placed this file on my KDE desktop.
2) Right click on the .txz package you downloaded, and select “install”. This will install all of the necessary grub files to the system you are running, but it will not overwrite the MBR of the active drive (it will continue to boot as usual).
3) Insert the second USB drive, and mount it. I mounted mine like this:
Code: Select all
mkdir /mnt/sdc1
mount /dev/sdc1 /mnt/sdc1
4) Create a new directory to hold grub on the target drive:
Code: Select all
mkdir /mnt/sdc1/boot/grub
6) In your terminal, type ‘grub’ and hit enter. This will open a grub shell.
7) Enter the following into the grub shell:
Code: Select all
find /boot/grub/stage1
Code: Select all
(hd 1,0)
(hd 2,0)
8 ) enter the following:
Code: Select all
root (hd1,0)
but replace hd1,0 with the device/partition to which you want to install grub. This tells grub to look in this partition (your target partition) for the files necessary to boot. On my first install, I didn't include this, and grub would hang on boot-up, because it was looking for the files on another device.
9) enter the following:
Code: Select all
setup (hd1)
If you receive an error message from the setup command, try running it again, with the same parameters.
10) create a file in /mnt/sdc1/boot/grub named menu.lst (MENU.LST, not MENU.1ST)
This file will direct grub to boot your OS. Ignore this step if you already have a menu.lst file here.
11) copy (or replace) the following into menu.lst:
Code: Select all
# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.
color blue/green yellow/red white/magenta white/magenta
timeout 30
default /default
title Porteus, no changes, copy to RAM
root (hd0,0)
kernel /boot/vmlinuz copy2ram autoexec=xconf;startx
initrd /boot/initrd.xz
title Porteus w/changes
root (hd0,0)
kernel /boot/vmlinuz changes=/porteus/ autoexec=xconf;startx
initrd /boot/initrd.lz
title commandline
commandline
title floppy (fd0)
chainloader (fd0)+1
rootnoverify (fd0)
title back to dos
quit
title reboot
reboot
title halt
halt
Code: Select all
title Slax remix v0.9 i486
map (hd0,0)/ISO/slax-remix-v09-i486.iso (hd33)
map --hook
chainloader (hd33)
boot
12) I already had slax-remix installed to this drive, so /boot and /slax were already in place. If you've already upgraded to Porteus v09, you'll need to adjust your menu.lst entries to point to the appropriate directories, as their names may be different.
Now, reboot and see if you get into grub!
I’ve not yet sorted out bootsplash images, etc. I was just trying to get grub installed so that I could see how it works, in case we use it as a bootloader in v1.
Thanks, and if you see any errors in the above, feel free to let me know and I'll correct them. I'm not exactly a grub expert