Convert MBR Partition in CentOS/RHEL/AlmaLinux 8

By default when installing CentOS 8, the BIOS will be MBR. This can be changed while installing by adding the inst.gpt to the vmlinuz line during the installing process.  However, if you forget to do so, it is not too late.  For fun, I followed this process that I found online and it worked without damaging the virtual machine.  I would rather restart the installation process, but this should work in a bind.

vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS->8-BaseOS-x86_64 rd.live.check quiet inst.gpt

The process was painless.  The commands.

gdisk /dev/sda
# print
p
# new
n
# Create a new bootable partition. As the first sector, enter 34 and the last sector is 2047. Partition code is ef02.
# save changes
w
# do you want to proceed
y
partprobe
grub2-install /dev/sda
gdisk /dev/sda
# see if takes
reboot

The commands with output

[root@localhost ~]# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************


Command (? for help): ?
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu

Command (? for help): p
Disk /dev/sda: 67108864 sectors, 32.0 GiB
Model: Virtual disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): E5B166D3-3135-47F0-A140-42A4A41E545D
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 67108830
Partitions will be aligned on 2048-sector boundaries
Total free space is 14659517 sectors (7.0 GiB)

Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB 8300 Linux filesystem
2 6144 2103295 1024.0 MiB 8300 Linux filesystem
3 2103296 52451327 24.0 GiB 8E00 Linux LVM

Command (? for help): n
Partition number (4-128, default 4): 34
First sector (34-67108830, default = 52451328) or {+-}size{KMGTP}: 2047
Last sector (2047-2047, default = 2047) or {+-}size{KMGTP}: ^C
[root@localhost ~]# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************


Command (? for help): p
Disk /dev/sda: 67108864 sectors, 32.0 GiB
Model: Virtual disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): C2C9ED82-14B1-4AAE-B1C2-0E60D4DDB0DD
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 67108830
Partitions will be aligned on 2048-sector boundaries
Total free space is 14659517 sectors (7.0 GiB)

Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB 8300 Linux filesystem
2 6144 2103295 1024.0 MiB 8300 Linux filesystem
3 2103296 52451327 24.0 GiB 8E00 Linux LVM

Command (? for help): n
Partition number (4-128, default 4):
First sector (34-67108830, default = 52451328) or {+-}size{KMGTP}: 34
Last sector (34-2047, default = 2047) or {+-}size{KMGTP}: 2047
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef02
Changed type of partition to 'BIOS boot partition'

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
[root@localhost ~]# partprobe
[root@localhost ~]# grub2-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
[root@localhost ~]# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): ^C
[root@localhost ~]# reboot now

After the reboot, I decided to clean this up a little by using the unused space /dev/sda1 as GPT and deleting the new partition /dev/sda4. Here's what I did after the reboot.

gdisk /dev/sda 
# print 
p 
# delete /dev/sda1. Make note of the start and end sector
d
1
## Create a new bootable partition. As the first sector, enter 2048 and the last sector is 6143. Partition code is ef02. 
# create /dev/sda1 using same start and end sector
n
1
2048
6143
ef02
# Delete /dev/sda4
d
4clear
# save changes 
w 
# do you want to proceed 
y 

partprobe 
grub2-install /dev/sda 
gdisk /dev/sda 

# see if takes 
reboot

It works.

[root@localhost ~]# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/sda: 67108864 sectors, 32.0 GiB
Model: Virtual disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): C2C9ED82-14B1-4AAE-B1C2-0E60D4DDB0DD
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 67108830
Partitions will be aligned on 2048-sector boundaries
Total free space is 14659517 sectors (7.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            6143   2.0 MiB     EF02  BIOS boot partition
   2            6144         2103295   1024.0 MiB  8300  Linux filesystem
   3         2103296        52451327   24.0 GiB    8E00  Linux LVM

Command (? for help):

Source(s)

  • https://techjogging.com/convert-mbr-partition-into-gpt-in-centosrhel-7.html