Многопользовательская среда Cuttlefish позволяет вашему хост-компьютеру запускать несколько виртуальных гостевых устройств с помощью одного вызова запуска.
Эти несколько виртуальных машин Cuttlefish могут совместно использовать часть ресурсов диска хоста, что позволяет экономить дисковое пространство. Каждая виртуальная машина получает отдельный оверлей диска, охватывающий разделы Android (например, super
, userdata
, boot
). Любые изменения на гостевом диске помещаются в специальный оверлей диска для каждой виртуальной машины Cuttlefish, предоставляя каждой виртуальной машине Cuttlefish представление разделов диска в режиме копирования при записи. По мере того, как каждое виртуальное устройство записывает больше данных в своё представление диска, файлы оверлея на диске хоста увеличиваются в размере, поскольку они фиксируют разницу между исходным и текущим состоянием.
Файлы наложений можно сбросить, чтобы вернуть диск Cuttlefish в исходное состояние. Этот процесс называется «стимулирующей промывкой» .
Номера экземпляров
Устройства 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