การใช้งานแบบกลุ่มผู้ใช้หลายกลุ่มของ Cuttlefish ช่วยให้เครื่องโฮสต์เปิดใช้งานอุปกรณ์ผู้มาเยือนเสมือนได้หลายเครื่องด้วยการเรียกใช้การเรียกใช้ครั้งเดียว
เครื่องเสมือน Cuttlefish หลายเครื่องเหล่านี้สามารถแชร์ทรัพยากรดิสก์โฮสต์บางส่วนได้ ซึ่งจะช่วยให้คุณประหยัดพื้นที่ในดิสก์ได้ เครื่องเสมือนแต่ละเครื่องจะมีการวางซ้อนดิสก์ที่แตกต่างกันซึ่งครอบคลุมพาร์ติชัน Android (เช่น super
, userdata
, boot
) การปรับเปลี่ยนใดๆ ในดิสก์เกสต์จะอยู่ในการวางซ้อนดิสก์เฉพาะสำหรับผู้เข้าร่วม ทำให้เครื่องเสมือนของ Cuttlefish แต่ละเครื่องมีมุมมองการคัดลอกเมื่อเขียนของพาร์ติชันดิสก์ เมื่ออุปกรณ์เสมือนแต่ละเครื่องเขียนข้อมูลไปยังมุมมองของดิสก์มากขึ้น ไฟล์วางซ้อนในดิสก์โฮสต์จะมีขนาดใหญ่ขึ้นเนื่องจากมีการบันทึกการเปลี่ยนแปลงระหว่างสถานะเดิมกับสถานะปัจจุบัน
คุณสามารถรีเซ็ตไฟล์การวางซ้อนเพื่อให้ดิสก์ Cuttlefish กลับสู่สถานะเดิมได้ กระบวนการนี้เรียกว่าการล้างด้วยน้ำแรงดันสูง
หมายเลขอินสแตนซ์
อุปกรณ์หมึกกระดองจะสร้างและใช้ทรัพยากรบนโฮสต์ที่ผูกกับหมายเลขอินสแตนซ์ เช่น การเชื่อมต่อ adb
แสดงผ่านซ็อกเก็ตเซิร์ฟเวอร์ TCP ที่พอร์ต 6520
สำหรับอุปกรณ์ Cuttlefish ที่มีหมายเลขอินสแตนซ์ 1
เมื่อมีการเปิดใช้อินสแตนซ์หลายรายการ ระบบจะสร้างซ็อกเก็ตเซิร์ฟเวอร์ TCP ที่พอร์ต 6520
สำหรับอุปกรณ์แรก 6521
สำหรับอุปกรณ์ที่ 2 และเพิ่มหมายเลขพอร์ตสำหรับอุปกรณ์ที่เพิ่มเติมแต่ละเครื่อง
แก้ไขจำนวนอินสแตนซ์ที่รองรับสูงสุด
ทรัพยากรฝั่งโฮสต์ เช่น อุปกรณ์เครือข่าย TAP จะต้องจัดสรรล่วงหน้าสำหรับเครื่องเสมือน Cuttlefish โดยค่าเริ่มต้น แพ็กเกจ cuttlefish-base ของ Debian จะจัดสรรทรัพยากรสําหรับหมายเลขอินสแตนซ์ 1
ถึง 10
ซึ่งเปลี่ยนแปลงได้ด้วยการแก้ไข num_cvd_accounts
ใน /etc/default/cuttlefish-host-resources
และรีสตาร์ทบริการ cuttlefish-host-resources
โดยการเรียกใช้คำสั่งต่อไปนี้
sudo systemctl restart cuttlefish-host-resources
การกำหนดค่า Canonical
การกำหนดค่า Canonical แสดงการกำหนดค่าสำหรับอุปกรณ์ Cuttlefish ในรูปแบบ JSON คุณสามารถสร้างไฟล์ JSON การกำหนดค่าตามแบบฉบับเพื่ออธิบายการกำหนดค่าอุปกรณ์ Cuttlefish หลายเครื่องในสถานการณ์ที่มีหลายผู้เช่าได้
ต่อไปนี้อธิบายรูปแบบที่ใช้สำหรับไฟล์ JSON การกำหนดค่าตามแบบฉบับ (แทนที่ตัวยึดตำแหน่งด้วยการกำหนดค่าอุปกรณ์)
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
ต่อไปนี้คือตัวอย่างไฟล์การกำหนดค่าของการตั้งค่าที่มีอุปกรณ์ 2 เครื่อง โทรศัพท์และอุปกรณ์ที่สวมใส่ได้
{
"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"
}
}
]
}
ตารางนี้อธิบายองค์ประกอบที่ใช้ในการกำหนดค่าตัวอย่างที่มีอุปกรณ์ 2 เครื่อง
ธาตุ | ประเภท | คำอธิบาย |
---|---|---|
instances |
อาร์เรย์ | อาร์เรย์ของออบเจ็กต์ JSON แต่ละรายการอธิบายอุปกรณ์เดียวในกลุ่มอุปกรณ์แบบหลายกลุ่มผู้ใช้ที่จะเปิดตัว |
@import |
สตริง | ระบุประเภทอุปกรณ์และตั้งค่าเริ่มต้นสำหรับการกำหนดค่าอุปกรณ์ ประเภทอุปกรณ์ที่รองรับคือ phone และ wearable |
vm |
วัตถุ | ระบุพร็อพเพอร์ตี้ที่ใช้กับสภาพแวดล้อม VM เฉพาะสำหรับอินสแตนซ์อุปกรณ์ |
memory_mb |
ตัวเลข | จำนวนหน่วยความจำที่จะจัดสรรให้กับ VM ที่เฉพาะเจาะจงเป็นเมกะไบต์ |
setupwizard_mode |
สตริง | ระบุว่าเรียกใช้วิซาร์ดการตั้งค่าอุปกรณ์สำหรับผู้ใช้เมื่อเรียกใช้อุปกรณ์ครั้งแรกหรือไม่ ตัวเลือกที่รองรับสำหรับโหมดวิซาร์ดการตั้งค่า ได้แก่ DISABLED , OPTIONAL และ REQUIRED |
cpus |
ตัวเลข | จำนวน CPU เสมือนที่จัดสรรให้กับ VM |
disk |
วัตถุ | ระบุพร็อพเพอร์ตี้ที่เกี่ยวข้องกับการค้นหาอาร์ติแฟกต์ระบบไฟล์ที่ใช้สำหรับการเรียกใช้อินสแตนซ์ VM เดียว |
default_build |
สตริง | เส้นทางระบบไฟล์ในเครื่องไปยังโฟลเดอร์ที่มีรูปภาพอุปกรณ์เสมือนของ Cuttlefish |
ดูตัวอย่างเพิ่มเติมของไฟล์การกำหนดค่าที่กระจายด้วย cvd
ได้ที่โฟลเดอร์ cvd_test_configs
ในแผนผังโค้ด Cuttlefish
ควบคุมอินสแตนซ์แบบหลายกลุ่มผู้ใช้
ส่วนนี้จะอธิบายวิธีสร้างและทำลายอุปกรณ์ในสถานการณ์ที่มีกลุ่มผู้ใช้หลายกลุ่ม คุณสามารถเปิดใช้งานอุปกรณ์ Cuttlefish ได้หลายเครื่องโดยใช้ตัวเลือกต่อไปนี้
- การกำหนดค่าตามค่าเริ่มต้น: เปิดการกำหนดค่าที่กำหนดเองสำหรับอุปกรณ์แต่ละเครื่องโดยใช้ไฟล์การกำหนดค่า JSON ที่อธิบายรายการอินสแตนซ์ที่จะเปิด
- รูปภาพผู้เข้าร่วมรายเดียว: เปิดใช้อุปกรณ์หลายเครื่องจากรูปภาพของผู้เข้าร่วมเดียว
เริ่ม VM หลายรายการจากการกำหนดค่า Canonical
หากต้องการสร้าง VM หลายรายการโดยใช้การกำหนดค่า Canonical ที่อธิบายสถานการณ์แบบหลายกลุ่มผู้ใช้ ให้เรียกใช้คำสั่ง cvd create
ที่มีคำนำหน้า Flag --config_file=
ดังนี้
cvd create --config_file=CONFIG_FILE
ต่อไปนี้คือตัวอย่างการเรียกใช้ที่อ้างอิงไฟล์การกําหนดค่าตามแบบฉบับชื่อ /etc/phone.json
cvd create --config_file=/etc/phone.json
เริ่ม VM หลายรายการจากอิมเมจผู้มาเยือนรายการเดียว
หากต้องการเปิดใช้งานอุปกรณ์ Cuttlefish หลายเครื่องโดยใช้อิมเมจของผู้มาเยือนเพียงรูปเดียว ให้ใช้ Flag --num_instances=N
ซึ่ง N คือจำนวนอุปกรณ์ที่จะเปิดตัว โดยค่าเริ่มต้น อุปกรณ์จะเริ่มต้นจากหมายเลขอินสแตนซ์ 1
cvd create --num_instances=N
หากต้องการเปลี่ยนหมายเลขอินสแตนซ์เริ่มต้น ให้ทําอย่างใดอย่างหนึ่งต่อไปนี้
เพิ่ม Flag
--base_instance_num=N
ที่มี N เป็นหมายเลขอินสแตนซ์แรกcvd create --base_instance_num=N
เปิดใช้ Cuttlefish พร้อมบัญชีผู้ใช้ที่ตรงกับ
vsoc-NN
โดย NN คือหมายเลขอินสแตนซ์พื้นฐานในรูปแบบตัวเลข 2 หลัก เช่น หากต้องการเปิด Cuttlefish ด้วยบัญชีผู้ใช้vsoc-01
ให้เรียกใช้cvd create --base_instance_num=1
วิธีหยุดอุปกรณ์
หากต้องการหยุดอุปกรณ์ทั้งหมดที่เปิดโดยการเรียกใช้ cvd create
ครั้งล่าสุด ให้เรียกใช้
cvd stop
หากต้องการรีสตาร์ทอุปกรณ์ที่หยุดไปแล้ว ให้เรียกใช้
cvd start
หากต้องการนำอุปกรณ์ออกจากระบบอย่างสมบูรณ์ ให้ทำดังนี้
cvd remove