Ahtapot çok kiralılık özelliği, ana makinenizin tek bir başlatma çağrısıyla birden fazla sanal konuk cihaz başlatmasına olanak tanır.
Bu birden fazla Cuttlefish sanal makinesi, ana makine disk kaynaklarının bir kısmını paylaşarak disk alanından tasarruf etmenizi sağlar. Her sanal makineye, Android bölümlerini (super
, userdata
, boot
gibi) kapsayan ayrı bir disk yer paylaşımı verilir. Misafir diskte yapılan tüm değişiklikler, misafire özel bir disk yer paylaşımına yerleştirilir. Böylece her Cuttlefish sanal makinesi, disk bölümlerinin yazma sırasında kopyasını görebilir. Her sanal cihaz, disk görünümüne daha fazla veri yazdıkça ana makine diskindeki yer paylaşımı dosyaları, orijinal durum ile mevcut durum arasındaki farkı yakaladıkları için boyut olarak büyür.
Yer paylaşımı dosyaları, Cuttlefish diskini orijinal durumuna döndürmek için sıfırlanabilir. Bu işleme güçlü temizleme denir.
Örnek numaraları
Mürekkepbalığı cihazları, ana makinede örnek numaralarına bağlı kaynaklar oluşturur ve tüketir. Örneğin, 1
örnek numaralı Mürekkep Balığı cihazı için 6520
bağlantı noktasındaki bir TCP sunucu soketi aracılığıyla bir adb
bağlantısı gösterilir.
Birden fazla örnek başlatıldığında, ilk cihaz için 6520
, ikinci cihaz için 6521
numaralı bağlantı noktasında bir TCP sunucu soketi oluşturur ve her ek cihaz için bağlantı noktası numarasını artırır.
Desteklenen maksimum örnek sayısını değiştirme
TAP ağ cihazları gibi ana makine taraflı kaynaklar, Cuttlefish sanal makineleri için önceden ayrılmalıdır. Varsayılan olarak cuttlefish-base Debian paketi, 1
ile 10
arasındaki örnek numaraları için kaynak sağlar.
Bu, /etc/default/cuttlefish-host-resources
dosyasında num_cvd_accounts
değiştirilerek ve aşağıdaki komutu çalıştırarak cuttlefish-host-resources
hizmeti yeniden başlatılarak değiştirilebilir:
sudo systemctl restart cuttlefish-host-resources
Standart yapılandırmalar
Standart yapılandırmalar, Cuttlefish cihazlarının yapılandırmasını JSON biçiminde temsil eder. Çok kiracılı bir senaryoda birden fazla Cuttlefish cihazının yapılandırmasını tanımlamak için standart yapılandırma JSON dosyaları oluşturabilirsiniz.
Aşağıda, standart yapılandırma JSON dosyaları için kullanılan biçim açıklanmaktadır (yer tutucuları cihaz yapılandırmalarıyla değiştirin).
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
Aşağıda, bir telefon cihazı ve giyilebilir cihaz olmak üzere iki cihazın bulunduğu bir kurulumun örnek yapılandırma dosyası verilmiştir:
{
"instances": [
{
"@import": "phone",
"vm": {
"memory_mb": 8192,
"setupwizard_mode": "OPTIONAL",
"cpus": 4
},
"disk": {
"default_build": "/home/username/devices/cf_x86_64_phone-userdebug"
}
},
{
"@import": "wearable",
"vm": {
"memory_mb": 8192,
"setupwizard_mode": "REQUIRED",
"cpus": 4
},
"disk": {
"default_build": "/home/username/devices/cf_gwear_x86-userdebug"
}
}
]
}
Bu tabloda, iki cihaz içeren örnek yapılandırmada kullanılan öğeler açıklanmaktadır:
Element | Tür | Açıklama |
---|---|---|
instances |
Dizi | Her biri, kullanıma sunulacak çok kiracılı cihaz grubundaki tek bir cihazı tanımlayan JSON nesnesi dizisi. |
@import |
Dize | Cihaz türünü belirtir ve cihaz yapılandırması için varsayılan değerleri ayarlar. Desteklenen cihaz türleri şunlardır:
phone ve wearable . |
vm |
Nesne | Cihaz örneğine özgü sanal makine ortamı için geçerli olan özellikleri belirtir. |
memory_mb |
Sayı | Belirli bir sanal makine için ayrılacak bellek miktarı (megabayt cinsinden). |
setupwizard_mode |
Dize | Cihazın ilk çalıştırıldığında cihaz kurulum sihirbazının kullanıcı için çalıştırılıp çalıştırılmayacağını belirtir. Kurulum sihirbazı modu için desteklenen seçenekler:
DISABLED , OPTIONAL ve
REQUIRED . |
cpus |
Sayı | Sanal makineye ayrılan sanal CPU sayısı. |
disk |
Nesne | Tek bir sanal makine örneğini çalıştırmak için kullanılan dosya sistemi yapılarını bulmayla ilgili özellikleri belirtir. |
default_build |
Dize | Cuttlefish sanal cihaz resmi içeren bir klasörün yerel dosya sistemi yolu. |
cvd
ile dağıtılan yapılandırma dosyalarına dair daha fazla örnek için Cuttlefish kod ağacındaki cvd_test_configs
klasörüne bakın.
Çok kiracılı örnekleri kontrol etme
Bu bölümde, çok kiracılı bir senaryoda cihazların nasıl oluşturulacağı ve kaldırılacağı açıklanmaktadır. Aşağıdaki seçenekleri kullanarak birden fazla Cuttlefish cihazı başlatabilirsiniz:
- Kurallı yapılandırma: Başlatılacak örneklerin listesini açıklayan bir JSON yapılandırma dosyası kullanarak her cihaz için özelleştirilmiş yapılandırmalar başlatın.
- Tek konuk görüntüsü: Tek bir konuk görüntüsünden birden fazla cihaz başlatın.
Standart yapılandırmadan birden fazla sanal makine başlatma
Çok kiracılı senaryoyu açıklayan bir standart yapılandırma kullanarak birden fazla sanal makine oluşturmak için cvd create
komutunu --config_file=
işaret ön ekiyle aşağıdaki gibi çağırın:
cvd create --config_file=CONFIG_FILE
Aşağıda, /etc/phone.json
adlı standart bir yapılandırma dosyasına atıfta bulunan örnek bir çağrı gösterilmektedir.
cvd create --config_file=/etc/phone.json
Tek bir konuk görüntüsünden birden fazla sanal makine başlatma
Tek bir konuk resmi kullanarak birden fazla Cuttlefish cihazı başlatmak için --num_instances=N
işaretçisini kullanın. Burada N, başlatılacak cihazların sayısıdır. Cihazlar varsayılan olarak 1
örnek numarasından başlar.
cvd create --num_instances=N
Başlangıç örneği numarasını değiştirmek için aşağıdakilerden birini yapın:
İlk örnek numarası olarak N ile
--base_instance_num=N
işaretini ekleyin.cvd create --base_instance_num=N
Cuttlefish'i
vsoc-NN
ile eşleşen bir kullanıcı hesabıyla başlatın. Burada NN, iki haneli biçimdeki temel örnek numarasıdır. Örneğin, Cuttlefish'ivsoc-01
kullanıcı hesabıyla başlatmak için:cvd create --base_instance_num=1
Cihazları durdurma
Son cvd create
çağrısı tarafından başlatılan tüm cihazları durdurmak için şu komutu çalıştırın:
cvd stop
Durdurulan cihazları yeniden başlatmak için şunları çalıştırın:
cvd start
Bir cihazı sistemden tamamen kaldırmak için:
cvd remove