Многопользовательская среда Cuttlefish позволяет хост-машине запускать несколько виртуальных гостевых устройств с помощью одного вызова запуска.
Эти несколько виртуальных машин Cuttlefish могут совместно использовать некоторые ресурсы хост-диска, что позволяет вам экономить дисковое пространство. Каждая виртуальная машина получает отдельный дисковый оверлей, покрывающий разделы Android (например, super
, userdata
, boot
). Любое изменение гостевого диска помещается в гостевой дисковый оверлей, предоставляя каждой виртуальной машине Cuttlefish вид копирования при записи ее дисковых разделов. Поскольку каждое виртуальное устройство записывает больше данных в свой вид диска, файлы оверлея на хост-диске увеличиваются в размере, поскольку они фиксируют разницу между исходным состоянием и их текущим состоянием.
Файлы наложения можно сбросить, чтобы вернуть диск Cuttlefish в исходное состояние. Этот процесс известен как powerwashing .
Номера экземпляров
Устройства Cuttlefish создают и потребляют ресурсы на хосте, привязанные к их номеру экземпляра . Например, соединение adb
предоставляется через сокет TCP-сервера на порту 6520
для устройства Cuttlefish с номером экземпляра 1
При запуске нескольких экземпляров он создает сокет TCP-сервера на порту 6520
для первого устройства, 6521
для второго устройства и увеличивает номер порта для каждого дополнительного устройства.
Изменить максимальное количество поддерживаемых экземпляров
Ресурсы хоста, такие как сетевые устройства TAP, должны быть предварительно выделены для виртуальных машин Cuttlefish. По умолчанию пакет Debian cuttlefish-base предоставляет ресурсы для экземпляров с номерами от 1
до 10
.
Это можно изменить, изменив num_cvd_accounts
в /etc/default/cuttlefish-host-resources
и перезапустив службу cuttlefish-host-resources
выполнив следующую команду:
sudo systemctl restart cuttlefish-host-resources
Канонические конфигурации
Канонические конфигурации представляют собой конфигурацию для устройств Cuttlefish в формате JSON. Вы можете создать канонические файлы конфигурации JSON для описания конфигурации нескольких устройств Cuttlefish в многопользовательском сценарии.
Ниже описан формат, используемый для канонических файлов конфигурации JSON (замените заполнители конфигурациями устройств).
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
Ниже приведен пример файла конфигурации для установки с двумя устройствами: телефоном и носимым устройством:
{
"instances": [
{
"@import": "phone",
"vm": {
"memory_mb": 8192,
"setupwizard_mode": "OPTIONAL",
"cpus": 4
},
"disk": {
"default_build": "/home/username/devices/cf_x86_64_only_phone-userdebug"
}
},
{
"@import": "wearable",
"vm": {
"memory_mb": 8192,
"setupwizard_mode": "REQUIRED",
"cpus": 4
},
"disk": {
"default_build": "/home/username/devices/cf_gwear_x86-userdebug"
}
}
]
}
В этой таблице описаны элементы, используемые в примере конфигурации с двумя устройствами:
Элемент | Тип | Описание |
---|---|---|
instances | Множество | Массив объектов JSON, каждый из которых описывает одно устройство в многопользовательской группе устройств, которые необходимо запустить. |
@import | Нить | Указывает тип устройства и устанавливает значения по умолчанию для конфигурации устройства. Поддерживаемые типы устройств: phone и wearable . |
vm | Объект | Указывает свойства, которые применяются к среде виртуальной машины, специфичной для экземпляра устройства. |
memory_mb | Число | Объем памяти, выделяемый для конкретной виртуальной машины, в мегабайтах. |
setupwizard_mode | Нить | Указывает, будет ли запущен мастер настройки устройства для пользователя при первом запуске устройства. Поддерживаемые параметры для режима мастера настройки: DISABLED , OPTIONAL и REQUIRED . |
cpus | Число | Количество виртуальных ЦП, выделенных виртуальной машине. |
disk | Объект | Указывает свойства, относящиеся к поиску артефактов файловой системы, используемых для запуска одного экземпляра виртуальной машины. |
default_build | Нить | Путь в локальной файловой системе к папке, содержащей образ виртуального устройства Cuttlefish. |
Дополнительные примеры файлов конфигурации, распространяемых с cvd
, см. в папке cvd_test_configs
в дереве кода Cuttlefish.
Управление многопользовательскими экземплярами
В этом разделе описывается, как создавать и уничтожать устройства в многопользовательском сценарии. Вы можете запустить несколько устройств Cuttlefish, используя следующие параметры:
- Каноническая конфигурация : запуск индивидуальных конфигураций для каждого устройства с использованием файла конфигурации JSON, описывающего список экземпляров для запуска.
- Один гостевой образ : запуск нескольких устройств из одного гостевого образа.
Запуск нескольких виртуальных машин из канонической конфигурации
Чтобы создать несколько виртуальных машин с использованием канонической конфигурации, описывающей многопользовательский сценарий, вызовите команду cvd create
с префиксом флага --config_file=
следующим образом:
cvd create --config_file=CONFIG_FILE
Ниже приведен пример вызова, ссылающегося на канонический файл конфигурации с именем /etc/phone.json
.
cvd create --config_file=/etc/phone.json
Запуск нескольких виртуальных машин из одного гостевого образа
Чтобы запустить несколько устройств Cuttlefish с помощью одного гостевого образа, используйте флаг --num_instances= N
, где N — количество устройств для запуска. По умолчанию устройства начинают с экземпляра номер 1
.
cvd create --num_instances=N
Чтобы изменить начальный номер экземпляра, выполните одно из следующих действий:
Добавьте флаг
--base_instance_num= N
, где N — номер первого экземпляра.cvd create --base_instance_num=N
Запустите Cuttlefish с учетной записью пользователя, соответствующей
vsoc- NN
, где NN — это базовый номер экземпляра в двухзначной форме. Например, чтобы запустить Cuttlefish с учетной записью пользователяvsoc- 01
, выполните:cvd create --base_instance_num=1
Как остановить устройства
Чтобы остановить все устройства, запущенные последним вызовом cvd create
, выполните:
cvd stop
Чтобы перезапустить остановленные устройства, выполните:
cvd start
Чтобы полностью удалить устройство из системы, выполните:
cvd remove