As at 201804, genkernel cannot create either a kernel or an initramfs that will boot under hyperv. The ata_piix module ignores the ata emulation support ( with kernel message “Hyper-V Virtual Machine detected, ATA device ignore set” ) if CONFIG_HYPERV_STORAGE is set. Therefore either dont set it to use ata_piix, or make sure the resulting module (hv_storvsc) actually loads.
Under hyperV, kernels created via genkernel also need hyperv network support. This is enabled manually in the config file. When upgrading kernel, start with genkernel's fresh config and then add hyperV support. The –hyperv option to genkernel is meant to do this, but didnt work in my case. (see https://wiki.gentoo.org/wiki/Hyper-V ). Alternatively, Add a “Legacy Network” in hyperv and use the DEC Tulip module (100BaseFX only).
then, edit /usr/share/genkernel/arch/x86/modules_load and add
then, genkernel all
take note of where genkernel is getting its config from and overwrite it if need be.