Какой механизм использует Hyper-V, чтобы сообщить гостю Linux о необходимости корректного завершения работы?
Каким-то образом CoreOS корректно завершает работу, а другой Linux - нет (он просто резко выключается)
Я понял. drivers/hv/hv_util.c
звонки orderly_poweroff()
из kernel/reboot.c
который впоследствии не может найти /sbin/poweroff
и выполняет только минимальную очистку.
Если я не ошибаюсь, причиной этого является интеграция Hyper v. Я не использовал CoreOS, но обычно именно это приводит к правильному завершению работы виртуального сервера.
В терминале введите команду lsmod. В CoreOS вы увидите (если я прав), что в нем перечислены службы Hyperv (hv_vmbus, hv_netvsc и т. Д.), А на другом - нет. В некоторые дистрибутивы Linux он встроен, а в другие его можно добавить. Если это не так, прокомментируйте ниже, и я удалю этот ответ.
Это не ответ на ваш вопрос так подробно, как вы, возможно, хотели бы знать. Тем не менее, я хочу добавить это в качестве ответа, поскольку подробные технические ответы почти не соответствуют теме (неподдерживаемая среда).
Вы хотите посмотреть документацию Виртуальные машины Linux и FreeBSD на Hyper-V на каких дистрибутивах поддерживаются. Проверьте раздел индивидуального дистрибутива и версии и посмотрите, есть ли Ядро поддерживается.
Ядро
Комплексное отключение:
С помощью этой функции администратор может выключать виртуальные машины из диспетчера Hyper-V. Для получения дополнительной информации см. Завершение работы операционной системы.
Источник: Описание функций виртуальных машин Linux и FreeBSD на Hyper-V
Если дистрибутив не поддерживается, не рекомендуется использовать их в продакшене. Даже если есть способы реализовать поддержку для дистрибутива, не указанного в списке.