Pull to refresh
2773.17
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

Будни техпода. Разворачиваем Android на Hyper-V

Level of difficultyMedium
Reading time7 min
Views20K

Вопрос, о котором хотелось бы сегодня поговорить, мне кажется, я слышу ежедневно, по несколько раз на дню. Точно не помню, но, мне кажется, что этот вопрос был первым, с которым я столкнулся на данной должности. Звучит он обычно так: «Как мне установить эмулятор Android на ваш сервер?». Серьёзно, когда я только начинал работать, я даже представить не мог, насколько часто я буду отвечать на данный вопрос.

Другие статьи серии «Будни техпода»



Не сомневаюсь, что многие читатели нашего блога знают, что такое «эмулятор» и представляют, как он работает, но для тех, кто сталкивается с этим понятием впервые, постараюсь коротко объяснить. Эмулятор — это программа, которая копирует поведение и функции какой-то другой системы, отличной от той, на которой запускается данный эмулятор, с целью запуска на нём приложений, которые не предназначены для работы на системе, которой вы изначально пользуетесь. Например, у вас на телефоне используется Android, но в вас проснулось чувство ностальгии и вам захотелось запустить игры, в которые вы когда-то давно играли на сеге или денди. Или, например, вам хочется запустить программу, которая есть только на Android, но при этом у вас телефон с IOS, но есть ПК с Windows. Тут вам и помогут эмуляторы.

Мы будем говорить именно про эмуляцию Android на устройстве под управлением ОС Windows (Windows Server) и с виртуализацией Hyper-V. На сегодняшний день существует множество различных готовых решений (Bluestack, Nox, Emu и др.), но, к сожалению, большинство из них не поддерживают работу с Hyper-V, а те, что запускаются — не работают достаточно стабильно и сильно перегружены лишним функционалом, чтобы их можно было полноценно использовать на средних конфигурациях VDS серверов. Поэтому в качестве решения данного вопроса, мы самостоятельно развернём чистый Android на виртуальной машине Hyper-V внутри VDS сервера.

▍ Создание сервера


Сначала нам требуется сам VDS сервер с включённой на нём вложенной виртуализацией. Если вы заказываете сервер у нас, то включить её вы можете через нашу техническую поддержку, написав обращение через нашу форму обратной связи в разделе «Поддержка».


В качестве операционной системы на сервере мы будем использовать Windows Server 2016: Конфигурация:

  • ОС — Windows Server 2016
  • CPU — Intel Xeon, 4x2.2ГГц
  • RAM — 4Гб
  • Disk — 20 Гб, HDD


▍ Настройка ролей на сервере для установки Android


Приступим к настройке. Нам необходимо добавить несколько дополнительных ролей (Hyper-V и Удалённый доступ). Hyper-V для возможности развернуть виртуальную машину на сервере, а «Удалённый доступ» для того, чтобы была возможность развернуть сеть, благодаря которой наш Android будет получать доступ в интернет. Открываем «Диспетчер серверов» — «Управление» — «Добавить роли и компоненты». 


По умолчанию — у нас открывается окно на этапе «Перед началом работы». Жмём «Далее» и переходим к этапу «Тип установки». На данном этапе выбираем опцию «Установка ролей или компонентов» и переходим к следующему этапу.


На этапе «Выбор сервера» выбираем пункт «Выберите сервер из пула серверов» и переходим далее.


На этапе «Роли сервера» нам необходимо добавить выбрать две роли: «Hyper-V» и «Удалённый доступ».



Далее переходим к этапу — «Службы ролей». На промежуточных этапах оставляем настройки без изменений и нажимаем просто «Далее». На этапе «Службы ролей» нас интересует служба «Маршрутизация». Включаем данную роль и идём далее.


До этапа «Подтверждение» оставляем все настройки без изменения и жмём кнопку
«Установить».


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

▍ Создаём дополнительный сетевой адаптер и скачиваем образ Android


Теперь нам необходимо подготовить сетевой адаптер «NAT» для подключения его к виртуальной машине. Открываем «PowerShell» и поочерёдно выполняем следующие команды:

New-VMSwitch -name LocalSwitch -SwitchType Internal

New-NetNat -Name LocalNat -InternalIPInterfaceAddressPrefix «192.168.0.0/24»

Get-NetAdapter «vEthernet (LocalSwitch)» | New-NetIPAddress -IPAddress 192.168.0.254 -AddressFamily IPv4 -PrefixLength 24
Вывод команд:

Готово. Адаптер создан, и при создании виртуальной машины, у нас будет возможность выбрать его — в качестве основного сетевого источника. Дальше скачиваем сам образ Android, который мы будем устанавливать на сервер. В нашем случае — мы выбрали версию Android x86 64-bit (9.0-r2-k49). Скачать его можно по ссылке.

▍ Создание виртуальной машины для установки Android


Предварительную подготовку завершили. Теперь мы можем приступить к настройке самой виртуальной машины для Android. Сначала нам нужно открыть «Диспетчер Hyper-V», через который мы будем производить все требуемые манипуляции по настройке, а в дальнейшем и управлять своей виртуальной машиной. Нажимаем комбинацию клавиш «Win + R» на клавиатуре, и в открывшемся окне «Выполнить» вводим virtmgmt.msc.

Перед нами открывается окно «Диспетчера Hyper-V». В левом столбце выбираем нашу виртуальную машину, и в окне «Действия» переходим в меню «Создать» - «Виртуальная машина».


В открывшемся окне переходим на этап «Укажите имя и местонахождение». Здесь нам надо задать имя для нашей виртуальной машины. Я решил указать просто «Android», но вы можете выбрать любое другое имя, оно ни на что влиять не будет.


Далее указываем поколение виртуальной машины. Под нашу версию ОС подойдёт «Поколение 1».


На следующем этапе мы указываем объём оперативной памяти, которая будет выделяться сервером под виртуальную машину. Данное значение индивидуально, и в первую очередь зависит от конфигурации вашего сервера. В нашем случае — мы используем сервер с объёмом оперативной памяти в 4 ГБ и поэтому без каких-либо проблем можем выделить 2 ГБ под виртуальную машину.


Далее, выбираем сетевой адаптер, который будет использоваться для доступа в интернет с виртуальной машины. Здесь нам необходимо выбрать адаптер «LocalSwitch», который мы недавно создали через PowerShell.


Дальше указываем объём виртуального жёсткого диска, который будет использоваться на виртуальной машине, а также его расположение на нашем сервере. Объём диска указывается также индивидуально, в зависимости от объёма жёсткого диска вашего сервера. Мы указали 15 ГБ.


Потом выбираем образ, из которого будет произведена установка Android. Выбираем пункт «Установить операционную систему с загрузочного компакт — или DVD-диска, жмём «Обзор» и находим скачанный нами образ Android.


Переходим к последнему шагу создания виртуальной машины. На данном этапе проверяем параметры машины, выбранные нами на предыдущих шагах, и жмём «Готово».



▍ Установка Android на виртуальную машину


Виртуальная машина создана. Теперь нам надо установить на неё и настроить саму операционную систему Android. Выбираем созданную нами виртуальную машину с помощью «ПКМ» и в открывшемся окне жмём «Подключить».


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


Дальше выбираем, запустить образ с Android сразу или произвести его установку на виртуальную машину. Выбираем 3-й пункт «Installation — Install Android-x86 to harddisk» и переходим к установке.


Теперь создаём раздел, на который будет произведена установка. Выбираем пункт «Create/Modify partitions» и жмём «OK».


На этапе с предложением использовать таблицу разделов GPT выбираем «NO». Её мы настроем позже, в момент установки самого образа.


Приступаем к созданию нового раздела. В нижнем меню выбираем пункт «New».


Далее выбираем пункт «Primary».


Указываем объём нового раздела (по умолчанию указан максимально доступный объём, поэтому это поле можно оставить без изменений). Жмём «Enter».


Далее поочерёдно выбираем пункт «Bootable», а затем пункт «Write».


На вопрос: уверены ли мы, что хотим записать таблицу разделов на созданный диск? — Вводим «yes» и жмём «Enter».


Раздел диска для установки ОС создан. Выбираем пункт «Quit» и возвращаемся к этапу с выбором раздела.

Как мы можем видеть, у нас успешно создался раздел «sda1», на который мы и будем устанавливать систему Android. Выбираем его и жмём «OK».


Потом надо отформатировать созданный раздел и изменить тип файловой системы. Выбираем пункт «ext4» и жмём «OK».


Начинается процесс установки операционной системы на виртуальную машину. Сам процесс установки может занять некоторое время, а процент загрузки может оставаться на одном значении (в нашем случае, это заняло около 15 минут). На протяжении всей установки будут появляться окна с подтверждениями (в том числе с использованием GPT, от которого мы ранее отказались). Везде выбираем «YES». По окончании установки выбираем пункт «Reboot» и перезагружаем виртуальную машину.

▍ Запускаем Android


Основная работа по настройке виртуальной машины проделана. Теперь можем загрузить систему и начать настраивать машину изнутри. Подключаемся к виртуальной машине и в открывшемся окне переходим в раздел «Advanced options».


В данном разделе выбираем пункт «Boot from local drive».


Далее выбираем способ запуска системы. Нам требуется выбрать пункт «Android-x86 9.0-r2» (название может незначительно отличаться, в зависимости от версии Android).



Далее нас встречает начальное окно настройки Android. Здесь выбираем язык системы и жмём кнопку «Начать».


На этапе «Подключения к Wifi» пока что жмём «Пропустить». К этой настройке мы вернёмся позже.


Производим оставшиеся настройки (Дата, Время, часовой пояс и тд) и переходим на рабочий стол Android. Интерфейс рабочего стола может отличаться, в зависимости от версии Android.


Теперь подключаем нашу ВМ к интернету. К сожалению, по какой-то причине Android не прописывает автоматически IP адрес, Шлюз и DNS, и поэтому их надо указать вручную (если кто-то из читателей в курсе, как решить эту проблему, буду рад почитать об этом в комментариях). Переходим в «Настройки»«Сеть и Интернет»«WiFi» и выбираем сеть «VirtWifi» (Если иконки «Настройки» нет на рабочем столе, потяните мышкой по экрану снизу вверх, и у вас откроется меню со всеми программами).


В окне «Сведения о сети», в правом верхнем углу нажимаем на карандаш и переходим к настройкам сети.


В открывшемся окне настроек необходимо перейти в раздел «Расширенные настройки», и вручную указать IP-адрес: 192.168.0.2, Шлюз: 192.168.0.254, Длину префикса сети: 24, DNS: 1 8.8.8.8 и DNS 2: 8.8.4.4. Вводим данные и сохраняем.


Готово. Все настройки завершены, и теперь мы можем выходить с виртуальной машины в интернет, а также скачивать приложения с Google Play. Запускаем, вводим данные от своей учётной записи и попадаем в магазин.



▍ Пара слов в заключение


С первого взгляда может показаться, что вся процедура слишком замудрённая и проще воспользоваться готовым решением, но результат стоит потраченных усилий. Я протестировал наиболее популярные версии эмуляторов, отдавая предпочтение Nox и Bluestack (бета-версия с поддержкой Hyper-V). Как ни странно, Bluestack запускаться на Windows Server 2016 не захотел, а производительность Nox сильно разочаровала.

Всё же, они больше подходят под десктопные решения, где используется физическое и более производительное железо. Android же на Hyper-V, напротив, даже удивил. Хоть производительность не идеальная (так как это запуск виртуальной машины на другой виртуальной машине), но пользоваться им вполне реально.

Я протестировал ряд популярных приложений, а также парочку простеньких 2D игр и в целом остался доволен. А какие решения используете вы?

Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх 🕹️
Tags:
Hubs:
Total votes 25: ↑22 and ↓3+34
Comments13

Articles

Information

Website
ruvds.com
Registered
Founded
Employees
11–30 employees
Location
Россия
Representative
ruvds