My goal is to just have a GRUB bootloader (without a Linux instalation) on a USB Flash Drive to:
- Boot OS with Bootloaders without entering the BIOS
- Boot OS with Broken Boot Loaders
- Boot Linux Live CDs
Installing the GRUB Boot Loader
Run a live CD like Ubuntu, a boot i without installing it.
First list your disks in order to identify you USB Flash Drive
sudo fdisk -l
if you have trouble identifying you USB Flash Drive just run the command above without the USB Flash Drive, the insert it and list again, compare the outputs, and the extra disk is you USB Flash Drive.
My USB Flash Drive is “sdb1” (b=second HD | 1=first partition), now let’s make a folder to mount the usb flash drive (my Flash Drive was formated with the ext4 filesystem), and mount it:
sudo mkdir /mnt/USB
sudo mount /dev/sdb1 /mnt/USB
Now let’s just install the the bootloader
sudo grub-install --force --removable --boot-directory=/mnt/USB/boot /dev/sdb
boot code goes on /dev/sdb and grub files on /mnt/USB/boot.
Set Up the Grub Configuration FIle
Now just create/edit the grub config file
nano /mnt/USB/boot/grub/grub.cfg
and input the following configuration:
grub.cfg
_____________________________________________
set timeout=10
set default=0
menuentry "#### Boot OS with Bootloaders without entering the BIOS ####" {set root=(hd1)}
menuentry "HD0 (First HD – This USB Flash Drive)" {
set root=(hd0)
chainloader +1
}
menuentry "HD1 (Second HD)" {
set root=(hd1)
chainloader +1
}
menuentry "HD2 (Third HD)" {
set root=(hd2)
chainloader +1
}
menuentry "HD3 (Fourth HD)" {
set root=(hd3)
chainloader +1
}
menuentry "#### Boot OS with Broken Boot Loaders ####" {set root=(hd1)}
menuentry "Ubuntu 16.04 (HD1 - First HD)" {
insmod part_msdos
insmod ext2
set root=(hd1,msdos1)
echo 'Loading Linux Kernel...'
linux /boot/vmlinuz-4.4.0-24-generic root=/dev/sda1
echo 'Loading Initial Ramdisk ...'
initrd /boot/initrd.img-4.4.0-24-generic
boot
}
menuentry "Windows XP/7/10 (HD1 - First HD)" {
insmod part_msdos
insmod ntfs
set root=(hd1,msdos1)
drivemap -s (hd0) ${root}
chainloader +1
}
menuentry "#### Boot Linux Live CDs ####" {set root=(hd1)}
menuentry "Ubuntu 16.04 ISO (On This USB PEN Drive)" {
set isofile="/ubuntu-16.04-desktop-amd64.iso"
loopback loop (hd0,msdos1)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}
This is what it looks like:
You migth need to adjust some things if you have more disks, partitions or diferent linux distro. To make it easyer I have put the things you migth need to change in bold.
The above config was for the following setup
- One USB Flash Drive (with Grub Installed)
- hd0,msdos1 - First HD | First Partition – MBR Geometry
- This is was my USB Flash Drive
- One Hard Drive for OS
- hd1,msdos1 – Second HD | First Partition – MBR Geometry
- This is the Disk with the OS
If you have trouble Identifying you disks and partion you can press ‘c’, on the grub menu, to get the GRUB command line and run “ls” :
this was very hepfull, specially identifying the the name for the MBR partitions aka “msdos” .
Related Links