Dela via


Установка и настройка Debian Linux под Hyper-V

Давайте продолжим наши упражнения в виртуализации Linux систем под Hyper-V. Сегодня мы займемся установкой и настройкой Debian 6 под Hyper-V. Все что я буду писать ниже можно применять не только к Debian 6, но и к Debian 5 и к остальным дистрибутивам основанным на Debian таким как Ubuntu, Kubuntu, Xubuntu, Ebuntu.

Debian не входит в список официально поддерживаемых Microsoft систем Linux для запуска под Hyper-V. Не смотря на это он работает в виртуальном окружении очень даже хорошо. В связи с тем, что официального пакета компонентов интеграции Hyper-V для Debian нет, мы воспользуемся драйверами Hyper-V встроенными в новейшие ядра Linux.

Установка Debian 6 под Hyper-V довольно банальна. Единственное что нужно сделать на этапе создания виртуальной машины это добавить в систему эмулируемый сетевой интерфейс Legacy. Он нам понадобится для первоначального обновления системы и установки новейшего ядра Linux.

Debian_legacy_network_hyperv

После завершения установки Debian 6 у нас будет ядро 2.6.32 конечно оно не блещет новизной, но в тоже время вполне нормально с многопроцессорными виртуальными машинами.

Debian6_4

Для того чтобы виртуальная машина смогла работать быстрее и воспользоваться всеми преимуществами Hyper-V нужно обновить ядро как минимум до 2.6.36. Перед сборкой нового ядра обновляем систему, устанавливаем исходные тексты текущего ядра и все необходимые инструменты для компиляции нового.

# apt-get update

# aptitude update

# apt-get install build-essential ncurses-dev kernel-package fakeroot install linux-headers-2.6 linux-source-2.6.32

Теперь приступим к сборке нового ядра 2.6.36 взятого с kernel.org

# cd /usr/src

# wget -c https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2

# bzip2 -d linux-2.6.36.tar.bz2

# tar xf linux-2.6.36.tar

# cd linux-2.6.36

# cp /boot/config* ./.config

# make menuconfig

В меню выбираем Device Drivers -> Stagging Drivers –> Microsoft Hyper-V Client Drivers

Debian6_kernel_compile_cut

На этом этапе так же можно удалить лишние драйвера для устройств, которых никогда не будет в виртуальной машине, таких как wi-fi, звуковые карты, USB, PCI. Впрочем, это не обязательно, если не желаете, можете не делать.

После этого можем начать сборку deb пакетов ядра. Для того чтобы лучше отличать ядра добавляем в название символы hyper-v.

 # make-kpkg clean
# fakeroot make-kpkg --initrd --append-to-version=-hyper-v kernel_image kernel_headers

Компиляция ядра занимает довольно продолжительное время. После этого в /usr/src появятся два deb пакета которые можно установить в систему командой dpkg –i.

Так же эти пакеты можно будет перенести и установить в другие виртуальные машины с Debian дабы не повторять процесс компиляции.

Редактируем /etc/initramfs-tools/modules и добавляем следующие строки указывающие загружать нужные модули при старте системы:

 hv_vmbus
 hv_storvsc
 hv_blkvsc
 hv_netvsc
 Обновляем initramfs: 
 # update-initramfs –u –k 2.6.36-hyper-v

Выключаем виртуальную машину, удаляем сетевой адаптер Legacy, добавляем синтетический сетевой адаптер и загружаем машину с новым ядром.

Debian6_kernel_compile_7

 После этого проверяем с помощью lsmod | grep hv что все нужные для работы Hyper-V модули загрузились.

Debian6_big_scsi_hdd

Обратите внимание, в новых версиях ядер Linux сетевой синтетический интерфейс Hyper-V переименован из seth в eth. Это может вводить в заблуждение.

Debian_synthetic_network

Как обычно я протестировал устойчивость виртуальной машины прокачав через нее в течении нескольких дней с помощью scp почти сотню гигабайт трафика. Виртуальные жесткие диски работают также достаточно быстро.

Debian6_12

Виртуальная машина работает стабильно в 4-х процессорной конфигурации с 44 гигабайтами ОЗУ. В общем можно сделать вывод, что Debian и основанные на нем дистрибутивы способны отлично работать под Hyper-V и применяться для реализации инфраструктурных элементов работающих с большой нагрузкой.

Comments

  • Anonymous
    January 01, 2003
    Если самосборное ядро не удалось заставить работать попробуйте для начала взять уже готовое ядро www.yusufozturk.info/.../debian-2-6-36-kernel-upgrade-for-hyper-v-client-drivers-32-bit.html www.yusufozturk.info/.../debian-2-6-36-kernel-upgrade-for-hyper-v-client-drivers.html Попрактикуйтесь на нем. А затем уже переходите на более новое ядро.

  • Anonymous
    January 01, 2003
    Alexandr если собственное ядро собрать не удалось можно воспользоваться например ядром которое сделал наш турецкий коллега. Взять его можно тут www.yusufozturk.info/.../debian-2-6-36-kernel-upgrade-for-hyper-v-client-drivers-32-bit.html www.yusufozturk.info/.../debian-2-6-36-kernel-upgrade-for-hyper-v-client-drivers.html К сожалению Ubuntu в кластере Hyper-V не запускал и наверно в ближайшее время не смогу. Нет под рукой оборудования для кластера. Есть такое ощущение что проблема в Ubuntu т.к остальные Linux системы в кластере живут нормально. Впрочем я могу и ошибаться. Упоминаний о проблеме в сети довольно мало www.google.ru Может быть стоит попробовать Debian вместо Ubuntu в кластере? Если это не поможет тогда остается мигрировать на что то официально поддерживаемое вроде SLES или RHEL. Если это не вариант то можно попробовать CentOS. По крайней мере этим системам уделяется больше внимания от Microsoft.  

  • Anonymous
    January 01, 2003
    Debian Wheezy (7.0) contain a backport Hyper-V drivers from Kernel 3.4 But the Hyper-V kernel modules ( as minimum, hv_vmbus hv_utils hv_storvsc hv_netvsc ) are missing in the installer image of Debian Wheezy created before 2012-11-13 Solution: You need use .iso created after 2012-11-14 ( or .iso by Arnaud Patard ) See details on vvm.blog.tut.by/.../debian-on-hyper-v

  • Anonymous
    January 01, 2003
    У меня так и не получилось заставить рабоать модули ядра для HyperV, как только уже не делал, компилировал ядро с нуля, делал отдельные модули и копировал их в текущее ядро, ничего не получается. Что за магия? У Юсуфа на странице целая дискуссия, но что я делаю не так? :-D

  • Anonymous
    January 01, 2003
    Снова решил попробовать удачу и скачал исходники ядра 2.6.39, указал что надо компилить модули интеграции HyperV, скомпилил, сделал deb-пакет, установил ядро через dpkg. перегружаюсь, и ... машина не грузится, ошибки инициализации этих модулей. Конфигурация Windows Server 2008R2 STD SP1, Debian 6.0.1, fail :)))))

  • Anonymous
    January 01, 2003
    Андрей! Подскажите, а возможно ли сделать диск больше 136 ГБ?

  • Anonymous
    January 01, 2003
    А с помощью чего вы делает бэкап? Зачем машину с Linux при этом отправлять в Save state?

  • Anonymous
    January 01, 2003
    Вот японский коллега написал о том как ставить Debian с ядром 2.6.39.1 под Hyper-v www.microsofttranslator.com/bv.aspx

  • Anonymous
    January 01, 2003
    Надо будет как нибудь сделать дайджест всего что про Linux/Unix и Hyper-V написано и запостить. Странно что они жалуются. Поисковики вроде еще не отменили. :)

  • Anonymous
    January 01, 2003
    Если у вас стоят компоненты Hyper-v в Linux то там должен срабатывать VSS Writer. Это означает что во время резервного копирования нет нужды переводить виртуальную машину в save state. Она должна копироваться прозрачно.

  • Anonymous
    January 01, 2003
    Василий. Нужно поставить Citrix Satori www.xen.org/.../satori.html

  • Anonymous
    January 01, 2003
    Добрый день, Андрей! Сделал по Вашему мануалу, только ядро уже взял 2.6.38.3, Debian 6.0.1 Squeeze, всё компилирую, в меню загрузки появляется новое ядро с Hyper-V, выбираю его, но машина не грузится. Останавливается на Loading, please wait ... Снимок экрана можно посмотреть тут http://files.kipk.ru/error.gif Не подскажете, в чём может быть проблемка?

  • Anonymous
    January 01, 2003
    Пробовал, у него Debian 5.0.6 и ядро скомпиливано под него, на 6.0.1 не взлетает, ладно, буду пробовать дальше :)

  • Anonymous
    January 01, 2003
    А почему не перейти например на CentOS он явно лучше поддерживаться будет чем Debian и Ubuntu. Все таки у RedHat большая доля рынка и ресурсов явно больше.

  • Anonymous
    March 17, 2011
    Вы бы это на ITBand запостили бы, а то там пользователи альтернативных ОС жалуются на отсутствие статей по их темам.

  • Anonymous
    March 18, 2011
    Андрей, ставили мы тут Дебиан на виртуалку. С сборкой ядра возникли проблемы, но это мой косяк, скорее всего. Проблема у нас следующая. Сейчас на кластере Hyper-V крутится две машины на Убунте с синтетическими интерфейсами. Маки, естественно, статические. При переезде между узлами теряется пинг до этих машин. 3-5 минут нет пинга вообще. Причем, если из виртуалки пингануть чего-нибудь, сеть появляется. Есть какие-то идеи по этому поводу?

  • Anonymous
    March 20, 2011
    Андрей, спасибо за ответ. Мы до Убунты пробовали Дебиан. История была та же самая. Сейчас у меня вырисовывается только костыльное решение: в крон поставить пинг каждые 3-4 минуты. Но крайне не хочется применять костыли.

  • Anonymous
    May 05, 2011
    Поставил Debian 6 с ядром 2.6.38.3 под Hyper-V. Все отлично кроме одного неприятного момента: машина падает при выходе из состояния save, что затрудняет оперативный бэкап.

  • Anonymous
    May 06, 2011
    Также  save бывает полезным, когда хост идет на перезагрузку и виртуальные машины уходят в save, а при запуске хоста автоматом стартуют. Бэкап с помощью backup exec.

  • Anonymous
    May 20, 2011
    Заработало на ядре 2.6.39 c нетронутым /etc/initramfs-tools/modules

  • Anonymous
    July 14, 2011
    подскажите как заставить работать мышь в удаленном сеансе под гипер ви. не могу найти нормальной инфы нигде.