TL;DR:You need to install the
ntfs-3g package, in order for
os-prober to detect Windows installations. This allows
grub2-mkconfig to automatically generate an entry for dual-booting into Windows.
Doing a lot more hardware hacking these days, I've felt constrained running Linux in a VM all the time. I was especially disappointed that VirtualBox doesn't expose nested Intel VT-x features to its guests. So I've decided to try dual-booting again, going with the very stable CentOS 7.
Not willing to sacrifice any space on my Windows SSD, I put another Crucial SSD in my machine - this time the 256 GB version of their newer MX100 series. Downloading the NetInstall ISO and pointing at a relatively close mirror gave a very satisfying install experience. Having the whole drive made things quite easy as well - except for the actual Dual-Booting part.
I wasn't terribly surprised that the setup process didn't automatically add a GRUB 2 entry for booting to my Windows 7 drive. Everything I read indicated that simply running
grub2-mkconfig should set up the GRUB config script to include Windows. Yet, it wasn't working for me. Supposedly GRUB 2 uses
os-prober to automatically detect other OSes and generate boot entries for them. However, running
os-prober showed no Windows install, even though my drive was clearly visible.
After stumbling across this post on LinuxQustions.org, it turns out that the NTFS-3g package (for mounting NTFS volumes) isn't installed by default, and
os-prober needs this the mount the drive and detect the installed OS. After installing
ntfs-3g (from the EPEL repository), I was able to run
grub2-mkconfig -o /boot/grub2/grub.cfg and successfully add an entry for Windows 7.