DevHeads.net

Booting CentOS 6 with Grub from CentOS 7

I had CentOS 6 installed on an MBR hard disk. I converted the disk to
GPT (with UEFI) and installed CentOS 7 on a new partition.

CentOS 7 itself seems to work properly.

Grub from CentOS 7 automatically created an entry for CentOS 6, but I
get an error if I try to boot CentOS 6.

The menu entry is:

menuentry 'CentOS release 6.10 (Final) (on /dev/sda7)' --class
gnu-linux --class gnu --class os $menuentry_id_option
'osprober-gnulinux-simple-92dcc576-4e61-41f3-ae42-d06b3aec01ae' {
insmod part_gpt
insmod ext2
set root='hd0,gpt7'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt7
--hint-efi=hd0,gpt7 --hint-baremetal=ahci0,gpt7
92dcc576-4e61-41f3-ae42-d06b3aec01ae
else
search --no-floppy --fs-uuid --set=root
92dcc576-4e61-41f3-ae42-d06b3aec01ae
fi
linux /boot/vmlinuz-2.6.32-754.3.5.el6.centos.plus.x86_64 ro
root=UUID=92dcc576-4e61-41f3-ae42-d06b3aec01ae rd_NO_LUKS
KEYBOARDTYPE=pc KEYTABLE=cf rd_NO_MD LANG=fr_FR.UTF-8
SYSFONT=latarcyrheb-sun16 rd_NO_LVM rd_NO_DM crashkernel=auto
initrd /boot/initramfs-2.6.32-754.3.5.el6.centos.plus.x86_64.img
}

When I try to boot, I get a message that "linux" and "initrd" aren't
valid commands. If I change them to "linuxefi" and initrdefi", I get
this error:

error: kernel too old
error: you need to load the kernel first

The information in the entry seems correct (partition, UUID, etc.).

I've searched on Google quite a bit, but didn't find anything useful.
Are there any suggestions?

Comments

Re: (Solved) Booting CentOS 6 with Grub from CentOS 7

By Yves Bellefeuille at 10/10/2018 - 22:50

It turns out that Grub2 checks the version of the kernel and refuses
to proceed if it thinks that the kernel is too old. I don't know how
old is considered too old, but the latest centosplus kernel for CentOS
6, vmlinuz-2.6.32-754.3.5.el6.centos.plus.x86_64, apparently
qualifies.

The solution was to install the latest kernel-ml kernel from ELRepo,
<a href="https://elrepo.org/" title="https://elrepo.org/">https://elrepo.org/</a> , to change grub.cfg to reflect the new versions,
and to change linux and initrd to linuxefi and initrdefi.

I'm surprised this has apparently never arisen before. Am I really the
first person to dual-boot CentOS 6 and 7?

Thanks to Lingzhu Xiang for his bug report,
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=894300" title="https://bugzilla.redhat.com/show_bug.cgi?id=894300">https://bugzilla.redhat.com/show_bug.cgi?id=894300</a> , which put me on
the right track.

Re: (Solved) Booting CentOS 6 with Grub from CentOS 7

By Peter at 10/11/2018 - 00:36

On 11/10/18 15:50, Yves Bellefeuille wrote:
I think you'll find that in order to use linuxefi and initrdefi you need
a kernel that is new enough to have efi support. If you have an older
kernel (such as that which comes with CentOS 6) then you need to use
linux16 and initrd16.

Peter