[How To] Convert Zorin Grub EFI to MBR and reverse

There may be instances where a user must change their Zorin OS install from EFI to MBR (legacy) or MBR to EFI.
Often, this may be in order to ensure a consistent booting experience if more than one OS is installed. You want all installed OS's to preferably use the same Boot format.

To convert from MBR to EFI (Replace sdX with your actual drive I.D. like sda or nvme0n1...):

sudo grub-install --boot-directory=/boot --bootloader-id=ubuntu  --target=x86_64-efi --efi-directory=/boot/efi  /dev/sdX

To convert from EFI to MBR, you must boot on a LiveUSB. Once Booted, use Try Zorin, then open a terminal.
Run:
Replace sdX with actual root partition
sudo mount /dev/sdXn /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt

Install BIOS GRUB to MBR:
sudo grub-install --target=i386-pc /dev/sdX
Generate GRUB config:
sudo update-grub

8 Likes

Is there a difference what shall be set for sdX?
Once there is said it is the (whole) drive at MBR to EFI,
once only the root partition at EFI to MBR?

Yes. sdX is a placeholder; a stand in for the Actual Drive Identifier.
So if you are on a drive that is nvme, it would be ... --efi-directory=/boot/efi /dev/nvme0n1
Or if it is SDA:
... --efi-directory=/boot/efi /dev/sda

However, the entire drive must be entered both times and not just one partition? I wondered about "root partition".

Edit: I just see there is a "n" behind sdx. So this is only the root partition. Now everything is clear.

Perhaps better write at second case at mounting
"Replace sdXn with actual root partition."

1 Like

It is installed to the entire disk, so do not include a partition.

The n here is namespace
Partitions are noted on nvme with a p.
For example; nvme0n(namespace)1p(first partition).

Also should there be entered the same for sdX and sdXn? Both times the entire disk?

The same disk, yes. This means sdX only.

No partitions are specified as it applies to the entire disk.

The n in /dev/nvme0n1 is present for namespace not a partition, due to the naming convention of NVME drives.

Thank you for the explanation. Just wondered why there is the same Variable for entering different things:
"Replace sdX with your actual drive"
"Replace sdX with actual root partition"
That was confusing for me.

Oh!

Now I see what you are referring to and why you asked about root partition...
You are asking about:

THis instruction deals only with mounting your bare metal install drive and root for use when booted from a LiveUSB. It is a necessary step, but is not a step in the Grub Install Process of the entire Drive.

When installing Grub - you do not use sdXn, only sdX (or nvme... whatever.)

1 Like

Yes, this mounting was where I was referring to.
Now it's clear. For grub-install the entire drive should be entered into the command in both cases, and when mounting the drive only the root partition should be entered there.

1 Like