Install GRUB to Ubuntu Partition

51,440

Solution 1

BIOS is not smart enough to ask you about partitions, in fact, it knows nothing about partitions. From the BIOS point of view, your disk is just a sequence of 512-byte sectors.

When BIOS is ready to pass the control to the bootloader, it just reads the first 512 bytes from the disk and just blindly passes the control to whatever program is located at the predefined position in that data. It is the job of that program (MBR bootloader) to load the OS (this usually involves loading a more complex bootloader program from some other location on the disk).

Point is - it is your bootloader, stored in MBR, which is aware about partitions and stuff. You may have a Windows bootloader there or GRUB. If you find a way to configure the Windows bootloader to pass control to GRUB which is installed on /dev/sdaX then your schema would work although I never heard of anyone doing this. Windows is not very concerned about being able to load other OSes, you know.

It is possible to do what you want if you have two hard drives in your machine - just install Windows on one and Ubuntu on another, and switch between them in BIOS. Or, I don't know, maybe it is possible to put GRUB on a flash drive? That actually would be cool - if the drive is unplugged Windows would boot, if you plug the drive in then Ubuntu would boot (provided that "boot from USB" comes first in the list of boot devices) .

Solution 2

I use a third party boot manager, which means I specifically want grub installed to a partition. It's easy to take care of this during installation since Ubuntu lets you put grub wherever you like. However, if you want to do it after the fact, it's as simple as:

sudo grub-install /dev/sda1 --force

where sda1 is the partition where you'd like to put it.

Solution 3

May I ask why you don't want to install GRUB in the MBR, thus replacing the Windows bootloader?


Installing GRUB in a partition is not recommended and generally considered to be a bad idea. One is usually better off letting Ubuntu install GRUB in the hard drive's MBR.

GRUB can then take care of loading either Ubuntu or Windows. This is simple, harmless, and the recommended approach.

This process is also completely reversible, should you choose to return to Windows and use its bootloader exclusively.


Should you decide to install GRUB in the MBR (as you should), Boot Repair is the way to go.

Install GRUB

To install the GRUB bootloader, follow these steps.

Open a terminal in Ubuntu, and run the following commands:

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
boot-repair

After a few seconds, Boot Repair's main window will open.

Click on Recommended repair.

You're done!

Reboot to test everything out.

Hold down the Shift key as the computer boots to display the GRUB menu, which allows you to select which OS you'd like to boot.


Glossary

Bootloader: a piece of code that runs before any operating system is running. A bootloader is used to boot other operating systems. Each operating system usually has its own bootloader.

GRUB (Grand Unified Bootloader): a bootloader package developed to support multiple operating systems and allow the user to select among them during boot-up. It is Ubuntu's default bootloader.

Command, command line: the traditional Unix environment , where you type commands to tell the computer what to do.

Terminal: an application that allows you to access the command line. Open it by hitting its keyboard shortcut, Ctrl Alt T

Solution 4

It's easy to do. Just download EasyBCD to edit the windows bootloader.

Share:
51,440
Noel
Author by

Noel

Updated on September 18, 2022

Comments

  • Noel
    Noel over 1 year

    So my computer has the following partitions:

    /dev/sda -- (I know this isn't a real partition, but more so the boot loader)

    /dev/sda1 -- (Windows 7 Boot Loader)

    /dev/sda3 -- (Windows 7)

    /dev/sda4 -- (Data partition, NTFS)

    that means i have /dev/sda2 as free space.

    I do not want to change the MBR of the computer. I would like /dev/sda2 to contain GRUB AND Ubuntu. So ideally when I turn my computer on, BIOS would ask if I'd like to boot Windows 7 or Ubuntu(or Grub or partition 2), and I could choose either one. But I would like Grub and Ubuntu to be on the same partition, so they will not interfere in any way with windows or window's boot loader/partition (sda3)

    How can I do this?

    Catch: when formatting partitions, Ubuntu does not give me the option to make them virtual partitions, so that makes things harder.

    I tried: installing Ubuntu to /dev/sda2 (which I formatted as ext4) and then told the Ubuntu installer to install the bootloader to /dev/sda2. But when I select "Ubuntu" from BIOS's boot selection, it loads a black screen and says "invalid arch independent ELF magic

    grub rescue> _" and allows me to input stuff. How can I fix this, or tell my computer where Grub is?

    • matt davis
      matt davis over 11 years
      Is there a particular reason why you do not want to change the MBR of the computer? The easiest thing to do is to allow GRUB to be installed to MBR. This will allow GRUB to detect your Windows boot files and your Ubuntu boot files and you can select which os at boot from the GRUB menu.
    • Mahesh
      Mahesh over 11 years
      IMO, you shouldn't even see a BIOS boot menu. The easiest way to fix this would be to reinstall grub, this time onto MBR, and update GRUB entries.
  • nanofarad
    nanofarad over 11 years
    Please explain how one would go about doing this safely.
  • Chris
    Chris over 11 years
    There are use cases where the mbr is not where you want to put grub, but you want to install it to a partition instead. Yes, something else will point to this partition, which will run grub. How can one accomplish this from the command line?
  • siride
    siride about 11 years
    You can boot GRUB from the Windows bootloader. I know because I've done it. There are several editors out there to do it for Vista and later. On Windows XP, you just edit boot.ini.
  • user3413723
    user3413723 over 8 years
    As far as I know, Grub won't boot Linux - it just starts the windows boot loader. This causes problems on my machine with hibernating and sleep in windows 7