I have a situation where a system is running Debian 8 (GRUB2.02~beta2-22) on btrfs. I then switch to a snapshot running Debian 10.3 (GRUB2.02+dfsg1-20) and run grub-install and update-grub before rebooting - it boots 10.3 just fine. When I switch back to the Deb8 snapshot, grub cannot find the kernel because it is still looking for the Deb10 kernel (4.19.0-8) instead of the Deb8 one (3.16.0-6). But, when switching back to Deb8, if I run the grub-install/upgrade-grub commands before rebooting (after properly mount--binding and chrooting), it boots Deb8 just fine.
I was under the impression that the Stage 2 loader read /boot/grub/grub.cfg to see what kernel to load. Each snapshot has /boot/grub/grub.cfg in a properly symlinked location, so it should 'just work'. Does the Stage 2 loader have some sort of caching that is causing it to not read the grub.cfg when I switch snapshots and reboot? This email and any attachments may be confidential and/or legally privileged. It has been sent for the sole use of the intended recipient(s). If the reader of this message is not an intended recipient, you are hereby notified that any unauthorized review, use, disclosure, dissemination, distribution, or copying of this communication or any of its contents is strictly prohibited. If you are not the named recipient, or have otherwise received this communication in error, please delete it from your inbox, notify the sender immediately, and do not disclose the contents to any other person or use them for any purpose, or store them in any medium. Thank you for your cooperation.