17 июл. 2009 г.

Нормальная остановка и перезагрузка FreeBSD в Hyper-V

После установки FreeBSD в Hyper-V будет отсутствовать возможность корректно выключить или перезагрузить гостевую операционную систему. Для того чтобы вернуть эту замечательную возможность (даже для сервера под управлением FreeBSD бывает очень полезной опцией выключение или перезагрузка) необходимо:

1. Установить Windows PowerShell для работы с Hyper-V из командной строки (Пуск --- Настройка --- Панель управления --- Администрирование --- Диспетчер сервера --- Компоненты --- Добавить компоненты ---Windows PowerShell).
2. Выполняем скрипт для поиска и остановки подвисшей при перезагрузке после установки машины (Пуск --- Программы --- Windows PowerShell)

> Get-WmiObject -Namespace root\virtualization msvm_computersystem | Format-Table ElementName, ProcessId

> kill номер процесса


3. Запускаем заново машину штатными средствами Hyper-V
4. Устанавливаем в FreeBSD исходные тексты ядра
5. Модифицируем файл по пути: /usr/src/sys/dev/pci/pci.c

С отправной строки 6 000 ищем строки:

struct pci_devinfo *dinfo = device_get_ivars(child);
pcicfgregs *cfg = &dinfo->cfg;


и добавляем после них строки:

if (dinfo->cfg.vendor == 0x1011 && dinfo->cfg.device == 0x0009)if (reg >= 0x10 && reg

Сохраняем файл
6. Пересобираем ядро и перезапускаем систему.

После таких манипуляций нормальный функционал остановки/перезагрузки системы должен быть востановлен.

З.Ы. Отдельная благодарность за помощь Mamber'у
Отправить комментарий