Как установить ubuntu на hyper v
область применения: 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, спокойно продолжаем установку.
При установке откажитесь от автоматической установки обновлений, это очень важный момент, почему - поясним ниже.
Установив систему следует включить загрузку необходимых для полноценной работы в 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
Сохраняем изменения и перезагружаемся:
После перезагрузки проверяем, сеть и доступ в интернет должны работать.
На этом нашу статью можно было бы и закончить, если бы не один неприятный момент: если вы попытаетесь обновить систему, то при обновлении получите ошибку и система больше не загрузится. Чтобы избежать этого, отключите все модули initramfs, кроме hv_vmbus и hv_netvsc (не забудьте перезагрузиться). После обновления включите модули обратно. В любом случае перед обновлением и прочим потенциально опасными операциями стоит сделать снимок системы, что позволит в любой момент времени быстро вернуться к ее текущему состоянию.
Вообще в процессе настройки мы советуем делать снимки как можно чаще. Установили пакет, настроили - сделайте снимок. Это позволит, при необходимости, возвращаться на нужное количество шагов назад, а также реализовать и опробовать несколько вариантов настройки, чтобы окончательно выбрать лучший из них.
В заключение стоит отметить, что установка 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-адресов:
На виртуальные машины устанавливаем ОС 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.
Читайте также: