Eu percebi isso. drivers/hv/hv_util.c
chama orderly_poweroff()
de kernel/reboot.c
que subsequentemente não consegue encontrar /sbin/poweroff
e faz apenas uma limpeza mínima.
Qual mecanismo o Hyper-V usa para sinalizar um convidado Linux para desligar?
De alguma forma, o CoreOS encerra normalmente, mas outro Linux não (é apenas abruptamente desligado)
Se não estou enganado, o Hyper v integration é o que causa isso. Eu não usei o CoreOS, mas normalmente é isso que faz com que o seu servidor virtual seja desligado corretamente.
No terminal, emita o comando lsmod. No CoreOS você vai (se eu estiver certo) ver que ele lista serviços de Hyperv (hv_vmbus, hv_netvsc, etc) por outro não. Algumas distribuições Linux vêm com ele embutido e outras que você pode adicionar. Se não for isso, comente abaixo e eu vou deletar essa resposta.
Isso não responde à sua pergunta como detalhado, como você pode querer saber. Eu quero adicionar isso como uma resposta, no entanto, como as respostas técnicas detalhadas vem perto de ser off-topic (ambiente não suportado).
Você deseja examinar a documentação das Máquinas virtuais Linux e FreeBSD no Hyper-V em quais distribuições são suportadas. Verifique a seção da distribuição e versão individual e veja se o Core é suportado.
Core
Integrated shutdown:
With this feature, an administrator can shut down virtual machines from the Hyper-V Manager. For more information, see Operating system shutdown.
Source: Feature Descriptions for Linux and FreeBSD virtual machines on Hyper-V
Se a distribuição não for suportada, não é aconselhável usá-los na produção. Mesmo que haja maneiras de implementar suporte em uma distribuição não listada.