I did not want to reply to your previous, but now I can not hold back any longer.
where exactly is your current grub.cfg...please show the full pathway from
sudo find /mnt -name grub.cfg
2) If I understand you currently, you are claiming grub installs into the Partition Boot Record of sda5 pointing to a dir that does not exist.....and on reboot....your menu appears and you can boot it.
3) Your grub.cfg seems to have changed slightly from post 1. Does that mean it no longer works from post 1?
And....I am gobsmacked your setup works.....I must try that out for my sda3 when I get time.
Normally.....grub2 is told.....set root=(hd0,5) .....to look for the balance of the grub2 files at first drive fifth partition
and normally expects to find either
/boot or
/grub as the directories and not /tce.
so I am still gobsmacked
Ok. Now, I am slowly understanding GRUB2. GRUB2 (according to me) is an overlay over the GRUB4DOS. It boots GRUB2 when the overlay GRUB2 files are available in boot directory and it boots GRUB4DOS when those files are not available. I saw somewhere on the web saying that by default, GRUB2 looks for its own files in (hdX,Y)/boot/grub. And hence, I think this works.
1) My grub.cfg is here (copied as it is from command you said)
sudo find /mnt -name grub.cfg
2)I think there is some confusion. I made the grub-install point to that non-existent directory. Then, the grub created that grub directory itself.
I don't think the --boot-directory option of grub-install. From help of grub-install :
--boot-directory=DIR install GRUB images under the directory DIR/grub
instead of the boot/grub directory
And hence I typed --boot-directory=/mnt/sda5/boot .
3) Yes. The post #1 is made for GRUB4DOS and I made it coz I saw GRUB4DOS name above the grub console. It doesn't work for GRUB2. Now, as GRUB2 was booting fine, I changed the "kernel" command as "linux" and the "root" command as a variable. The commands "kernel" and "root" do not exist in GRUB2.