Установка и настройка 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.

    image

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

    Debian6_4

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

    # apt-get 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 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

    image

    На этом этапе так же можно удалить лишние драйвера для устройств, которых никогда не будет в виртуальной машине, таких как 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, добавляем синтетический сетевой адаптер и загружаем машину с новым ядром.

    image

    После этого проверяем с помощью 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 и применяться для реализации инфраструктурных элементов работающих с большой нагрузкой.
    Share post

    Comments 39

      0
      Поправьте теги после скриншота с конфигурацией ядра (у вас там целый абзац ссылается на картинку).
        0
        Потерялся закрывающий тег. Поправил. Спасибо что указали на ошибку.
          +3
          # apt-get update
          # aptitude update

          А зачем делать обе команды? Я всегда думал, что одна из них — только обертка над другой (какая над какой уже запутался)

            0
            Действительно две команды это много. Убрал aptitude т.к она эквивалет apt-get update.
              +5
              Лучше наоборот.
            0
            Спасибо, Андрей!
              +1
              Ммм… Копипаста с блога на технете. Правила-то для кого? Топики-ссылки? Эхх…
                +1
                Если внимательно посмотрите то увидите что этот материал в первую очередь опубликован на Хабре. В блоге на Технет он будет опубликован только через несколько дней. Для хостинга картинок используется блог, но это не противоречит правилам. Так что никакой копипасты в этой ситуации нет и нарушения правил тоже нет.
              +3
              >Ebuntu
              Edubuntu вообще-то, но так тоже ничего.
                +3
                Кстати говоря, собирать ядро руками — дело неблагодарное. Лучше воспользоваться apt-pining и установить свежее ядро либо из бэкпортов, либо из unstable/experimental ветки debian.
                  0
                  Не уверен что в ядре из репозитария будут включены нужные нам staging драйвера Hyper-V.
                    +1
                    А, так это те, которые выкинули из основного дерева ядра, потому что майкрософт забила на их поддержку? Но разве нельзя их собрать с помощью module-assistant/dkms/etc без сборки полного ядра?
                      –1
                      Насколько помню никто их никуда не выкидывал. Например новая Ubuntu 10.10 уже по умолчанию включает их в ядро.

                      Мне кажется что с dkms сложнее будет собирать ибо я с ним не работал.
                        +1
                        Ubuntu — законодатель Enterprise ^^
                          0
                          Ubuntu это ранний показатель будущих тенденций. А законодатель энтерпризе в мире Linux это RedHat, который даже сертифицирован как официально поддерживаемая ОС для Hyper-V.
                            +3
                            >>Ubuntu это ранний показатель будущих тенденций.
                            Это личное мнение или я за чем-то не уследил?
                              0
                              Это личное мнение, ибо все что делается для массового пользователя в конце концов становится наиболее распространенным и начинает диктовать моду на то или иное.
                          +1
                          >Насколько помню никто их никуда не выкидывал
                          Ну в staging же они не сами попали, верно?

                          >Мне кажется что с dkms сложнее будет собирать
                          Как раз таки m-a и dkms созданы, чтобы облегчить сборку отдельных модулей.
                  +2
                  А где возгласы типа: «Как они посмели, Debian да на каком-то вшивом урезанном подобии виртуальной машины от мелкомягких криворучек!!!11» :)
                    0
                    В предыдущих статьях эти возгласы всем уже надоели. Опять же есть крупные провайдеры в России которые как раз Debian на Hyper-V запускают.
                      +1
                      поясните пожалуйста, для чего?
                        –1
                        Real men never click
                          –1
                          Все доводы за виртуализацию Linux/Unix под Hyper-V описаны тут

                          habrahabr.ru/blogs/virtualization/113342/
                          habrahabr.ru/blogs/virtualization/113993/
                          habrahabr.ru/blogs/virtualization/103924/
                          habrahabr.ru/blogs/virtualization/112850/
                          habrahabr.ru/blogs/virtualization/109592/

                          Особо обратите внимание на флейм в комментариях. :)
                            +1
                            Почитал, много думал.
                            Целей никаких, реализация без перспектив. Идея? Зачем все это?
                            Ну да, юникс работает на венде, было бы странным обратное. Можно конечно предположить, что вы собрались сервера перевести с windows на unix...??? Зачем ставить и использовать открытый софт, который конкурирует с производителем хост системы… я теряюсь в догадках.

                            Какая практическая реализация вашего опыта, чему собрались научиться/научить других?
                              0
                              Ну что ж. Приступим к объяснению очевидного.

                              Большинство предприятий работает на платформе Microsoft. Это значит что существует централизованная система авторизации. Система распространения патчей, система управления конфигурациями, система резервного копирования.

                              В тоже время на таком предприятии могут присутствовать инфраструктурные элементы реализующие специализмрованные задачи. Например FTP сервер на FreeBSD или веб сервер на Linux. Причины по которым эти элементы реализованы так могут быть самые разные от политических до сексуальных и лицензионных.

                              Особой гордостью авторов таких элементов может быть то что их детища работают на старом оборудовании и есть не просят.

                              Со временем все больше бизнес сервисов опирается в своей работе на такие инфраструктурные элементы.

                              Мониторинг элементов и их резервное копирование требуют развертывания отдельны систем резервного копирования паралельно с системами обслуживающими Windows.

                              Часто по истечении нескольких лет авторы таких элементов покидают организацию.

                              Вот тут и начинаются чудеса. Оборудование уже изношено и начинает сбоит, но людей способных перенести критический сервис работающий не на Window в организации нет.

                              Разрушать все до основания а затем строить новый мир тоже не охота.

                              Поэтому самый простой способ мигрировать такие системы в виртуализацию. Разворачивать для этого XEN или KVM нет смысла при уже работающем в организации Hyper-V. Зоопарк обслуживать всегда дороже чем решение от одного вендора.

                              Более того перенос этих Linux/Unix систем под Hyper-V позволит создать единую среду резервного копирования скриптами либо Data Protection Manager.

                              Так же мы приобретаем единую среду управления библиотекой вирт. машин Windows/Linux/Unix на основе System Center Virtual Machine Manager.

                              В итоге сохраняем унаследованные сервисы на Linux/Unix, отвязываемся от аппаратного обеспечения, получаем рещервное копирование и стандартизированное развертывание.
                                0
                                В моей компании нет денег на System Center Virtual Machine Manager. Зато у них есть ценный специалист, которому пофигу какая ОС стоит на сервере. :)
                                По вашим топикам видно, что вы не понимаете сути тех систем что ставите в VM, нет опыта работы в них и т.д. Т.е. Вы не можете гарантировать что те сервисы которые работали на старом железе будут замечательно работать в вашей песочнице. Причем мне не понятно почему нельзя вынуть/отклонировать винт и воткнуть в новое железо. В моем парке есть сервер на debian, который поэтапно переполз с P4 на i7. Уж простите, но с виндовсом такое не прокатывает.
                                И еще. Гораздо проще венду запускать именно в виртуалке. Нет проблем с железом, можно хоть на флешке таскать за собой.
                                То что от Вас уходят специалисты универсалы, печально. Зачем они вам нужны? Если проще взять студента эникейщика и дать ему телефон тех поддержки? Проще купить готовое универсальное обеспечение пусть дорогое и отстегивать за тех поддержку. Чем иметь хорошего спеца в своем штате.

                                У меня есть друг. Когда-то в пылу юности пропагандировал что FreeBSD/Linux это круто.
                                Сейчас он работает в крупной гос компании и большой поклонник W7. Проведя мягкий и продолжительный холливар, я вывел основные тезисы его выбора:
                                1.нахрена мне что-то делать самому, я позвонил мне привезли и поставили.
                                2.не я покупаю, позвонил — купили.
                                3.не я обслуживаю, позвонил — починили.
                                4.откат, да да :) должность позволяет
                                5.я крутой, а вокруг обезьянки.

                                Я еще ни разу не видел, чтобы мелкософт делал что то независимое от железа, а вот насильная привязка к поставщику сколько угодно. Умумукаешься писать примеры.

                                За сим полемику завершаю, ваше «очевидное» вписываются в 5 пунктов моего друга.
                                  0
                                  > В моей компании нет денег на System Center Virtual Machine Manager. Зато у них есть ценный специалист, которому пофигу какая ОС стоит на сервере. :)

                                  Жаль что в вашей компании нет 505$ на покупку управляющего ПО. Скажите а как бизнес допустил такую зависимость от ценного специалиста. Что будет если его собъет автобус к примеру? Останавливаем бизнес и идем на улицу?

                                  > По вашим топикам видно, что вы не понимаете сути тех систем что ставите в VM, нет опыта работы в них и т.д. Т.е. Вы не можете гарантировать что те сервисы которые работали на старом железе будут замечательно работать в вашей песочнице.

                                  Когда построете корпоративных сетей на основе Windows/Unix обслуживающих несколько миллионов абонентов столько сколько их построил я, тогда сможем с вами на равных говорить о понимании работы сути ОС Linux/Unix.

                                  По моим статья на Opennet такие как вы учатся работать с *nix. :)

                                  Unix/Linux системы отлично работают под Hyper-V у достаточно больших провайдеров в России. Видно они тоже не понимают что делают. Жаль вы им не объяснили насколько они глупы.

                                  > В моем парке есть сервер на debian, который поэтапно переполз с P4 на i7. Уж простите, но с виндовсом такое не прокатывает.

                                  Не позорьтесь такими глубокими знаниями, а лучше посмотрите видео обновления системы с MS DOS до Windows 7

                                  www.youtube.com/watch?v=vPnehDhGa14

                                  Говорите Windows не умеет обновляться без переустановки? Умеет. Это показать 20-ти летней стабильной поддержки пользователей и приложений.

                                  > То что от Вас уходят специалисты универсалы, печально. Зачем они вам нужны? Если проще взять студента эникейщика и дать ему телефон тех поддержки? Проще купить готовое универсальное обеспечение пусть дорогое и отстегивать за тех поддержку. Чем иметь хорошего спеца в своем штате.

                                  Что мешает вашему мегаспециалисту уйти так же как и остальные? В крупном бизнесе простой может принести такие убытки что зарплата специалиста по сравнению с ними ничтожна. Узнайте про непрерывность бизнеса и тогда смысл того что я пишу для вас станет понятен.
                      +1
                      amarao ещё не увидел топик :)
                        0
                        amarao уже не раз приходил в мои топики и уходил ни с чем. Тут не кормят. :)
                      0
                      Вопрос к автору: сравнивалась ли производительность с штатным ядром и с скомпилированным Вами?
                        0
                        Штатное ядро умеет работать только с эмулируемыми устройствами это значит сеть будет работать на 100 мбит/с. Тоже самое будет и HDD.

                        Если поставить компоненты для Hyper-V то станут доступны синтетические устройства работающие быстрее в несколько раз.

                        Например сеть может достигать скорости 600 мбит.с
                          0
                          Подскажите, плз, в чём может быть проблема:

                          1. устанавливаю Debian (debian-6.0.1a-amd64-DVD-1.iso);

                          2. на этапе установки необходимых компонентов:

                          исходная:
                          # apt-get install build-essential ncurses-dev kernel-package fakeroot install linux-headers-2.6 linux-source-2.6.32

                          а) поиском по packages.debian.org нахожу что ncurses-dev входит в libcunit1-ncurses-dev и libkaya-ncurses-dev. После установки первого make всё равно просит ncurses-dev, установка второго пакета решает проблему;

                          б) убираю лишний параметр install;

                          в) изменяю версию linux-headers-2.6 на linux-headers-2.6.32-5-amd64 в соответствии с установленным дистрибутивом.

                          Таким образом изменил команду на:
                          # apt-get install build-essential libkaya-ncurses-dev kernel-package fakeroot linux-headers-2.6.32-5-amd64 linux-source-2.6.32

                          3. компиляция ядра завершается успешно, созданные пакеты успешно устанавливаются;

                          4. редактирую initramfs и обновляю;

                          5. удаляю сетевой legacy-драйвер;

                          6. и после загрузки системы с новым ядром 2.6.36 в консоли каждые секунду выпадает сообщение:
                          BUG: scheduling while atomic: swapper/0/0x10000100

                          В чём может быть трабл?

                          З.Ы. Linux'ом я пока на Вы)
                            0
                            Проблема в синтетическом сетевом драйвере — если не ставить сетевую карту в VM, то и ошибок нет…

                          Only users with full accounts can post comments. Log in, please.