การเช่าใช้หลายรายของ Cuttlefish ช่วยให้เครื่องโฮสต์เปิดใช้อุปกรณ์เสมือนสำหรับผู้ใช้หลายเครื่องได้ด้วยการเรียกใช้เพียงครั้งเดียว
เครื่องเสมือน Cuttlefish หลายเครื่องนี้สามารถแชร์ทรัพยากรดิสก์บางส่วนของโฮสต์ได้ ซึ่งช่วยให้คุณประหยัดพื้นที่ดิสก์ เครื่องเสมือนแต่ละเครื่องจะมีดิสก์โอเวอร์เลย์ที่แตกต่างกันซึ่งครอบคลุมพาร์ติชัน Android (เช่น super, userdata, boot) ระบบจะวางการแก้ไขดิสก์ของผู้ใช้ไว้ในดิสก์โอเวอร์เลย์ของผู้ใช้แต่ละราย ซึ่งทำให้เครื่องเสมือน Cuttlefish แต่ละเครื่องมีมุมมองแบบคัดลอกเมื่อเขียนของพาร์ติชันดิสก์ เมื่ออุปกรณ์เสมือนแต่ละเครื่องเขียนข้อมูลลงในมุมมองดิสก์มากขึ้น ไฟล์โอเวอร์เลย์ในดิสก์โฮสต์จะมีขนาดเพิ่มขึ้นเนื่องจากไฟล์ดังกล่าวบันทึกส่วนต่างระหว่างสถานะเดิมกับสถานะปัจจุบัน
คุณสามารถรีเซ็ตไฟล์โอเวอร์เลย์เพื่อคืนค่าดิสก์ Cuttlefish ให้กลับสู่สถานะเดิมได้ กระบวนการนี้เรียกว่า Powerwash
หมายเลขอินสแตนซ์
อุปกรณ์ Cuttlefish สร้างและใช้ทรัพยากรในโฮสต์ที่เชื่อมโยงกับ หมายเลขอินสแตนซ์ ตัวอย่างเช่น การเชื่อมต่อ adb จะแสดงผ่านซ็อกเก็ตเซิร์ฟเวอร์ TCP ที่พอร์ต 6520 สำหรับอุปกรณ์ Cuttlefish ที่มีหมายเลขอินสแตนซ์ 1
เมื่อเปิดใช้อินสแตนซ์หลายรายการ ระบบจะสร้างซ็อกเก็ตเซิร์ฟเวอร์ TCP ที่พอร์ต 6520 สำหรับอุปกรณ์เครื่องแรก 6521 สำหรับอุปกรณ์เครื่องที่ 2 และเพิ่มหมายเลขพอร์ตสำหรับอุปกรณ์แต่ละเครื่องที่เพิ่มเข้ามา
แก้ไขจำนวนอินสแตนซ์สูงสุดที่รองรับ
ระบบต้องจัดสรรทรัพยากรฝั่งโฮสต์ล่วงหน้าสำหรับเครื่องเสมือน Cuttlefish เช่น อุปกรณ์เครือข่าย TAP โดยค่าเริ่มต้น แพ็กเกจ Debian
cuttlefish-base จะจัดสรรทรัพยากรสำหรับหมายเลขอินสแตนซ์ 1 ถึง 10
คุณสามารถเปลี่ยนค่านี้ได้โดยแก้ไข num_cvd_accounts ใน
/etc/default/cuttlefish-host-resources และรีสตาร์ทบริการ
cuttlefish-host-resources โดยเรียกใช้คำสั่งต่อไปนี้
sudo systemctl restart cuttlefish-host-resources
การกำหนดค่า Canonical
การกำหนดค่า Canonical แสดงถึงการกำหนดค่าสำหรับอุปกรณ์ Cuttlefish ในรูปแบบ JSON คุณสามารถสร้างไฟล์ JSON ของการกำหนดค่า Canonical เพื่ออธิบายการกำหนดค่าของอุปกรณ์ Cuttlefish หลายเครื่องในสถานการณ์การเช่าใช้หลายราย
ต่อไปนี้อธิบายรูปแบบที่ใช้สำหรับไฟล์ JSON ของการกำหนดค่า Canonical (แทนที่ตัวยึดตำแหน่งด้วยการกำหนดค่าอุปกรณ์)
{
"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_only_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 image |
ดูตัวอย่างเพิ่มเติมของไฟล์การกำหนดค่าที่เผยแพร่พร้อมกับ cvd ได้ที่
cvd_test_configs
โฟลเดอร์ในโครงสร้างโค้ด Cuttlefish
ควบคุมอินสแตนซ์การเช่าใช้หลายราย
ส่วนนี้จะอธิบายวิธีสร้างและทำลายอุปกรณ์ในสถานการณ์การเช่าใช้หลายราย คุณสามารถเปิดใช้อุปกรณ์ Cuttlefish หลายเครื่องได้โดยใช้ตัวเลือกต่อไปนี้
- การกำหนดค่า Canonical: เปิดใช้การกำหนดค่าที่กำหนดเอง สำหรับอุปกรณ์แต่ละเครื่องโดยใช้ไฟล์การกำหนดค่า JSON ที่อธิบาย รายการอินสแตนซ์ที่จะเปิดใช้
- อิมเมจผู้ใช้รายเดียว: เปิดใช้อุปกรณ์หลายเครื่อง จากอิมเมจผู้ใช้รายเดียว
เริ่ม VM หลายเครื่องจากการกำหนดค่า Canonical
หากต้องการสร้าง VM หลายเครื่องโดยใช้การกำหนดค่า Canonical ที่อธิบายสถานการณ์การเช่าใช้หลายราย ให้เรียกใช้คำสั่ง cvd create โดยมีคำนำหน้าแฟล็ก --config_file= ดังนี้
cvd create --config_file=CONFIG_FILE
ต่อไปนี้เป็นการเรียกใช้ตัวอย่างที่อ้างอิงไฟล์การกำหนดค่า Canonical ชื่อ /etc/phone.json
cvd create --config_file=/etc/phone.json
เริ่ม VM หลายเครื่องจากอิมเมจผู้ใช้รายเดียว
หากต้องการเปิดใช้อุปกรณ์ 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 คือหมายเลขอินสแตนซ์ฐาน ในรูปแบบ 2 หลัก เช่น หากต้องการเปิดใช้ Cuttlefish ด้วยบัญชีผู้ใช้vsoc-01ให้เรียกใช้คำสั่งต่อไปนี้cvd create --base_instance_num=1
วิธีหยุดอุปกรณ์
หากต้องการหยุดอุปกรณ์ทั้งหมดที่เปิดใช้โดยการเรียกใช้ cvd create ครั้งล่าสุด ให้เรียกใช้คำสั่งต่อไปนี้
cvd stop
หากต้องการรีสตาร์ทอุปกรณ์ที่หยุดไว้ ให้เรียกใช้คำสั่งต่อไปนี้
cvd start
หากต้องการนำอุปกรณ์ออกจากระบบอย่างสมบูรณ์ ให้เรียกใช้คำสั่งต่อไปนี้
cvd remove