Booting CentOS 6 with Grub from CentOS 7

General support questions
Post Reply
YBellefeuille
Posts: 319
Joined: 2012/03/06 22:30:17
Location: Ottawa

Booting CentOS 6 with Grub from CentOS 7

Post by YBellefeuille » 2018/10/10 03:00:56

(Also sent to the mailing list.)

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:

Code: Select all

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:

Code: Select all

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?

YBellefeuille
Posts: 319
Joined: 2012/03/06 22:30:17
Location: Ottawa

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

Post by YBellefeuille » 2018/10/11 02:45:43

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, 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 which put me on the right track.

Post Reply