Cuttlefish çoklu kiracı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 çoklu Cuttlefish sanal makineleri, ana makine diski kaynaklarının bir kısmını paylaşabilir ve böylece disk alanından tasarruf edebilirsiniz. Her sanal makine, Android bölümlerini (ör. super
, userdata
, boot
) kapsayan ayrı bir disk katmanına sahiptir. Konuk diskinde yapılan tüm değişiklikler konuğa özel bir disk katmanına yerleştirilir. Böylece her Cuttlefish sanal makinesi, disk bölümlerinin kopyalama üzerine yazma görünümüne sahip olur. Her sanal cihaz, diskin görünümüne daha fazla veri yazdıkça ana makine diskindeki yer paylaşımı dosyalarının boyutu artar. Bunun nedeni, bu dosyaların orijinal durum ile mevcut durum arasındaki farkı yakalamasıdır.
Cuttlefish diskini orijinal durumuna döndürmek için yer paylaşımı dosyaları sıfırlanabilir. Bu işlem güç yıkama olarak bilinir.
Örnek numaraları
Cuttlefish cihazları, ana makinede örnek numaralarıyla ilişkili kaynaklar oluşturur ve kullanır. Örneğin, adb
bağlantısı, 1
örnek numaralı Cuttlefish cihazı için 6520
bağlantı noktasındaki bir TCP sunucu soketi üzerinden kullanıma sunulur.
Birden fazla örnek başlatıldığında, ilk cihaz için bağlantı noktası 6520
, ikinci cihaz için 6521
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 tarafındaki 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 ayar, num_cvd_accounts
değerini /etc/default/cuttlefish-host-resources
içinde değiştirerek ve aşağıdaki komutu çalıştırarak cuttlefish-host-resources
hizmetini yeniden başlatarak 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 gösterir. Çok kiracılı bir senaryoda birden fazla Cuttlefish cihazının yapılandırmasını açıklamak için standart yapılandırma JSON dosyaları oluşturabilirsiniz.
Aşağıda, kanonik 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, iki cihazın (telefon ve giyilebilir cihaz) 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_only_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 cihazla örnek yapılandırmada kullanılan öğeler açıklanmaktadır:
Element | Tür | Açıklama |
---|---|---|
instances |
Dizi | Her biri başlatılacak çok kiracılı cihaz grubundaki tek bir cihazı açıklayan JSON nesneleri dizisi. |
@import |
Dize | Cihaz türünü belirtir ve cihaz yapılandırması için varsayılan değerleri ayarlar. Desteklenen cihaz türleri phone ve wearable 'dir. |
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 kurulum sihirbazının, cihazın ilk çalıştırılmasında kullanıcı için çalıştırılıp çalıştırılmayacağını belirtir. Kurulum sihirbazı modunda desteklenen seçenekler şunlardır:
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ıtlarını bulmayla ilgili özellikleri belirtir. |
default_build |
Dize | Cuttlefish sanal cihaz görüntüsü içeren bir klasörün yerel dosya sistemi yolu. |
cvd
ile dağıtılan yapılandırma dosyaları hakkında 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ı senaryoda cihazların nasıl oluşturulacağı ve yok edileceği açıklanmaktadır. Aşağıdaki seçenekleri kullanarak birden fazla Cuttlefish cihazı başlatabilirsiniz:
- Canonical 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 misafir resmi: Tek bir misafir resminden birden fazla cihaz başlatın.
Canonical yapılandırmasından birden fazla sanal makine başlatma
Çok kiracılı senaryoyu açıklayan kanonik bir yapılandırma kullanarak birden fazla sanal makine oluşturmak için cvd create
komutunu --config_file=
işaret önekiyle aşağıdaki gibi çağırın:
cvd create --config_file=CONFIG_FILE
Aşağıda, /etc/phone.json
adlı bir kanonik yapılandırma dosyasına referans veren örnek bir çağırma işlemi verilmiştir.
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şaretini kullanın. Burada N, başlatılacak cihazların sayısıdır. Varsayılan olarak cihazlar, örnek numarası 1
ile başlar.
cvd create --num_instances=N
Başlangıç örnek numarasını değiştirmek için aşağıdakilerden birini yapın:
--base_instance_num=N
işaretini N ile birlikte ilk örnek numarası olarak 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 basamaklı temel örnek numarasıdır. Örneğin, Cuttlefish'i bir kullanıcı hesabıylavsoc-01
başlatmak için şunu çalıştırın:cvd create --base_instance_num=1
Cihazları durdurma
Son cvd create
çağrısıyla başlatılan tüm cihazları durdurmak için şu komutu çalıştırın:
cvd stop
Durdurulan cihazları yeniden başlatmak için şu komutu çalıştırın:
cvd start
Bir cihazı sistemden tamamen kaldırmak için şu komutu çalıştırın:
cvd remove