Как установить ubuntu на hyper v

Обновлено: 30.06.2024

область применения: Windows Server 2022, Azure Stack хЦи, версия 20H2; Windows сервер 2019, Windows Server 2016, Hyper-V Server 2016, Windows Server 2012 r2, Hyper-V Server 2012 R2, Windows Server 2012, Hyper-V Server 2012, Windows Server 2008 R2, Windows 10, Windows 8.1, Windows 8, Windows 7,1, Windows 7

Этот раздел содержит список рекомендаций по запуску виртуальной машины Linux в Hyper-V.

Настройка файловых систем Linux в динамических VHDX-файлах

Некоторые файловые системы Linux могут потреблять значительный объем свободного места на диске, даже если файловая система в основном пуста. Чтобы уменьшить объем используемого дискового пространства в динамических VHDX-файлах, учитывайте следующие рекомендации.

  • При создании VHDX используйте 1 МБ Блокксизебитес (из 32 МБ по умолчанию) в PowerShell, например:

Формат ext4 является предпочтительным для ext3, так как ext4 больше пространства, чем ext3 при использовании с динамическими VHDX-файлами.

При создании файловой системы укажите число групп 4096, например:

Время ожидания меню GRUB на виртуальных машинах поколения 2

Из-за того, что устаревшее оборудование удаляется из эмуляции на виртуальных машинах поколения 2, для отображения меню GRUB слишком быстро вычисляется таймер обратного отсчета, и сразу же загружается запись по умолчанию. Пока GRUB не будет использоваться для использования таймера, поддерживаемого EFI, измените /Бут/груб/груб.конф,/т.п./default/grubили эквивалентным параметром "Timeout = 100000" вместо значения по умолчанию "timeout = 5".

Загрузка PxE на виртуальных машинах поколения 2

Так как в виртуальных машинах поколения 2 отсутствует таймер «СМОЛой», сетевые подключения к PxE-серверу TFTP можно преждевременно завершить и предотвратить считывание конфигурации GRUB и загрузку ядра с сервера.

В дистрибутивах Linux, отличных от RHEL 6. x, можно выполнить аналогичные действия, чтобы настроить GRUB v 0.97 для загрузки ядер Linux с PxE-сервера.

Кроме того, при вводе с помощью клавиатуры и мыши RHEL/CentOS 6,6 не будет работать с предварительно установленным ядром, что не позволит указать параметры установки в меню. Чтобы разрешить выбор параметров установки, должна быть настроена последовательная консоль.

В файле ефидефаулт на PxE-сервере добавьте следующий параметр ядра "console = ttyS1" .

На виртуальной машине в Hyper-V настройте COM-порт с помощью этого командлета PowerShell:

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

Использование статических MAC-адресов с отказоустойчивой кластеризацией

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

Использование сетевых адаптеров, относящихся к Hyper-V, а не устаревших сетевых адаптеров

Настройте и используйте виртуальный адаптер Ethernet, который является сетевой картой Hyper-V с повышенной производительностью. Если к виртуальной машине подключены как устаревшие, так и сетевые адаптеры, относящиеся к Hyper-V, сетевые имена в выходных данных команды ifconfig-a могут показывать случайные значения, такие как _tmp12000801310. Чтобы избежать этой проблемы, удалите все устаревшие сетевые адаптеры при использовании сетевых адаптеров, связанных с Hyper-V, в виртуальной машине Linux.

Для повышения производительности дискового ввода-вывода используйте планировщик заданий (NOOP/None)

Ядро Linux предлагает два набора планировщиков дискового ввода-вывода для переупорядочивания запросов. Один набор предназначен для более старой подсистемы "BLK", а один — для новой подсистемы "BLK-MQ". В любом случае с современными твердотельными дисками рекомендуется использовать планировщик, который передает решения о планировании в базовый гипервизор Hyper-V. Для ядер Linux, использующих подсистему "BLK", это планировщик "NOOP". Для ядер Linux, использующих подсистему "BLK-MQ", это планировщик "None".

Для конкретного диска доступные планировщики могут отображаться в этой папке файловой системы:/СИС/класс/блокк/ <diskname> /куеуе/счедулер с выбранным планировщиком в квадратных скобках. Планировщик можно изменить, записав в это расположение файловой системы. Чтобы сохранить изменения между перезагрузками, необходимо добавить это изменение в скрипт инициализации. Дополнительные сведения см. в документации по дистрибутив Linux.

Версии ядра Linux ниже 2.6.37 не поддерживают NUMA в Hyper-V с виртуальными машинами большего размера. Эта проблема влияет в основном на дистрибутивы более ранних версий, в которых используется исходное ядро Red Hat 2.6.32, и была исправлена в Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504). В системах под управлением модифицированных ядер старше версии 2.6.37 или ядер RHEL старше 2.6.32-504 в командной строке ядра необходимо задать параметр загрузки numa=off в файле grub.conf. Дополнительные сведения см. в статье базы знаний Red Hat 436883.

Зарезервируйте больше памяти для кдумп

Если ядро записи дампа завершается с тревогой при загрузке, зарезервируйте больше памяти для ядра. Например, измените параметр crashkernel = 384M-: 128M на crashkernel = 384M-: 256M в файле конфигурации Ubuntu GRUB.

Сжатие VHDX-файлов или расширения VHD и VHDX может привести к ошибочным таблицам разделов GPT

Hyper-V позволяет сжимать файлы виртуального диска (VHDX) без учета разделов, томов или структур данных файловой системы, которые могут существовать на диске. Если VHDX-файл сжимается до конца раздела, то данные могут быть потеряны, при этом Секция может быть повреждена, а при чтении секции могут возвращаться недопустимые данные.

После изменения размера VHD или VHDX администраторы должны использовать служебную программу, например fdisk, или частично обновить структуру разделов, томов и файловой системы, чтобы отразить изменение размера диска. Сжатие или увеличение размера VHD или VHDX с таблицей разделов GUID (GPT) вызовет предупреждение, если для проверки макета раздела используется средство управления секциями, и администратору будет выведено предупреждение об исправлении первого и дополнительного заголовков GPT. Этот ручной этап можно выполнить без потери данных.

Несколько дней назад нам потребовалось развернуть сервер на Ubuntu в виртуальной среде. Так как на выделенном под проект сервере уже стоял Windows Server 2008, выбор пал на Hyper-V, бесплатный гипервизор от Microsoft. В тоже время установка имеет ряд особенностей, о которых мы и поговорим в этой статье.

Первоначально мы не собирались публиковать этот материал, есть отличная статья Андрея Бешкова, где данный вопрос довольно подробно рассматривается. Однако в процессе установки мы столкнулись с рядом особенностей, не описанных в статье и тем, что в нашем случае у системы отсутствует графический интерфейс, для опытного администратора это не представляет сложности, но у начинающих может вызвать затруднения.

Итак, у нас имеется Windows Server 2008 SP2 c добавленной ролью Hyper-V и Ubuntu Server 10.04.1 LTS. В Hyper-V создаем стандартную виртуальную машину и начинаем установку системы с образа или диска. Одна неприятная особенность - в текстовом режиме перерисовка каждого экрана занимает 15-20 секунд, неприятно, но на процесс установки это никак не влияет.

Первое серьезное предупреждение в процессе установки сообщит вам, что установщик не смог обнаружить сетевые интерфейсы. Это нормально, по умолчанию Ubuntu не поддерживает виртуальное оборудование Hyper-V, спокойно продолжаем установку.

Ubuntu-Hyper-V-001.jpg

При установке откажитесь от автоматической установки обновлений, это очень важный момент, почему - поясним ниже.

Установив систему следует включить загрузку необходимых для полноценной работы в Hyper-V модулей, которые входят в ядро системы, но не включены. Учитывая что сети нет, и поставить даже mc вы не сможете, будем довольствоваться простым редактором nano. Для включения модулей необходимо отредактировать /etc/initramfs-tools/modules

В открывшийся файл добавляем следующие строки:

Выходим по Ctrl+X утвердительно отвечая на предложение сохранить изменения.

За что отвечают и для чего нужны эти модули?

  • hv_vmbus - шина Hyper-V, основной модуль
  • hv_storvsc - поддержка виртуального хранилища (виртуальный жесткий диск)
  • hv_blkvsc - поддержка блочных устройств, требуется для хранилища.
  • hv_netvsc - поддержка синтетической сетевой карты
  • hv_utils - поддержка расширенных возможностей Hyper-V, таких как управление питанием гостевой системы и т.п.

Теперь обновим образ начальной загрузки системы (initramfs):

Изменения будут применены при следующей загрузке системы, а пока настроим сетевые интерфейсы, для этого отредактируем /etc/network/interfaces:

Добавим интерфейс eth0 и настроим его, например у нас это выглядит так:

Также на забудьте указать DNS сервера в /etc/resolv.conf

Сохраняем изменения и перезагружаемся:

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

Ubuntu-Hyper-V-002.jpg

На этом нашу статью можно было бы и закончить, если бы не один неприятный момент: если вы попытаетесь обновить систему, то при обновлении получите ошибку и система больше не загрузится. Чтобы избежать этого, отключите все модули initramfs, кроме hv_vmbus и hv_netvsc (не забудьте перезагрузиться). После обновления включите модули обратно. В любом случае перед обновлением и прочим потенциально опасными операциями стоит сделать снимок системы, что позволит в любой момент времени быстро вернуться к ее текущему состоянию.

Ubuntu-Hyper-V-003.jpg

Вообще в процессе настройки мы советуем делать снимки как можно чаще. Установили пакет, настроили - сделайте снимок. Это позволит, при необходимости, возвращаться на нужное количество шагов назад, а также реализовать и опробовать несколько вариантов настройки, чтобы окончательно выбрать лучший из них.

В заключение стоит отметить, что установка Ubuntu Server на Hyper-V, хоть и требует некоторых дополнительных действий, довольно проста и не вызывает проблем. Работа системы в виртуальной среде не вызывает нареканий, стабильна и может быть рекомендована к применению в производственных условиях.

Создаем в среде виртуализации Hyper-V на базе Windows Server 2012 R2 виртуальные машины второго поколения (Hyper-V G2) с конфигурацией:

  • 2 vCPU
  • 2GB Static RAM
  • 40GB Dynamic VHDX
  • 1 сетевой интерфейс со статическим MAC-адресом
  • опция Безопасной загрузки (Secure boot) отключена.

Для сетевого интерфейса обязательно нужно включить опцию разрешающую Спуфинг MAC-адресов:

image

На виртуальные машины устанавливаем ОС Ubuntu Server 14.04.3 LTS. Процесс установки ОС выполняем по аналогии с тем, что был описан здесь.

Опустим саму установку так-как она тривиальна.

После установки обновляем все пакеты и ядро системы с последующей перезагрузкой:

Для автоматической установки обновлений безопасности (если данная опция не была выбрана в ходе установки ОС) необходимо:

Затем устанавливаем дополнительные компоненты интеграции Hyper-V. Для этого выясняем текущую версию ядра ОС:

В моём случае это 4.4.0-75-generic. Выполняем установку пакетов с подстановкой версии ядра:

На вопрос о до-установке пакетов соглашаемся, а после окончания процесса установки перезагружаем систему и проверяем лог запуска:

Явных ошибок запуска быть не должно. Теперь проверим наличие процессов установленных компонент Hyper-V в памяти:

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

Установка OpenSSH

Чтобы вместо прямого подключения к консоли нашего сервера использовать безопасный удалённый доступ установим сервер OpenSSH:

Откроем с правами администратора на редактирование конфигурационный файл OpenSSH:

Раскомментируем строчку с параметром ListenAddress и в качестве значения укажем IP адрес нашего сервера на внутреннем интерфейсе, чтобы служба сервера OpenSSH принимала подключения только для локальной сети:

Для вступления изменений в силу перезапускаем службу:

Теперь мы можем подключиться к нашему серверу удалённо из локальной сети с помощью SSH клиента, например Putty

Настройка статичного IP-адреса

Настройки статичного IP-адреса выполняются в файле: /etc/network/interfaces , он должен выглядеть примерно так:




Выбираем Generation 1, хотя будет работать и Generation 2.
Нажимаем Next >



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




Далее приступаем к тонкой настройке созданной VM. Пункт меню Settings.


Выделим нашей VM 2 процессора. Переходим к настройке Network Adapter.


Т.к. у меня сеть поделена на VLAN-ы, чтобы заработала сеть, я делаю следующие настройки(см. на рисунке выше). У вас может быть по другому. Переходим к Integration Services.


Выключаем Time synchronization, настроим сервис NTP в самой VM.


Выключаем автоматический запуск VM после старта физического сервера. В данном случае нам это не нужно. Нажимаем OK. Далее нажимаем Connect. и запускаем нашу VM. Увидим на экране следующую картину.


Выберем English, или другой язык на ваше усмотрение Нажимаем <Enter>.



Если по умолчанию хотим английский интерфейс, выбираем English. Или на свое усмотрение.


Выбираем Location. В данном случае выбираем other\Europe\Russia Federation. Нажимаем <Enter>.



Настраиваем клавиатуру. Выбираем <No> и нажимаем <Enter>.




Выбираем метод переключения на другой язык. Допустим Control+Shift. Нажимаем <Enter>. Следующее окно, которое вы возможно увидите, представлено на скриншоте ниже.


У меня для текущего VLAN-а нет доступного DHCP сервера. По этому я буду делать ручную настройку сети. Нажимаем <Enter>.


Выбираем ручную настройку Configure network manually. Нажимаем <Enter>.



Настраиваем маску подсети: 255.255.255.224. Нажимаем <Enter>.


Настраиваем основной шлюз: 172.20.12.94. Нажимаем <Enter>.


Настраиваем DNS сервера: 172.20.0.44 172.20.0.1. Вводим через пробел. Нажимаем <Enter>.




Указываем полное имя для нового пользователя. К примеру - Alexander V. Lyubimov. Нажимаем <Enter>.



Вводим пароль для нового пользователя. Нажимаем <Enter>.


Повтор пароля для нового пользователя. Нажимаем <Enter>.


Настраиваем шифрование домашней директории. Выберем <No>. Нажимаем <Enter>.


Настраиваем часовой пояс. У меня это <Moscow+00>. Нажимаем <Enter>.


Настраиваем партиции на диске. Для нашей VM выберем первый пункт: Guided - use entire disk. Нажимаем <Enter>.


Выбираем диск, на который будем устанавливать систему. Нажимаем <Enter>.


Выбираем, записывать ли на выбранный диск изменения. В данном случае создадутся 2 партиции. Выбираем <Yes> и нажимае <Enter>



Выберем первый пункт: No automatic updates. Нажимаем <Enter>.


На данном этапе можно выбрать софт, который установится автоматически с установкой системы. Достаточно лишь OpenSSH server. Выбираем его, нажав клавишу <Пробел>, затем нажимаем <Enter>.



Финальный шаг установки, просто нажимаем <Continue>. Система перезагрузится и появится окно ввода логина-пароля.





Первым делом установим обновления. Для этого последовательно выполните 3 команды.

Закоментируем сервера в интернете и добавим локальные NTP сервера. Перезапустим сервис NTP.

Читайте также: