توضّح هذه الصفحة كيفية إعادة تشغيل أجهزة Cuttlefish الافتراضية وإعادة ضبطها. يُشار إلى إعادة ضبط جهاز حبَّار إلى حالته الأولية على القرص powerwashing في أداة سطر الأوامر.
عند تنفيذ مهام سير عمل آلية أو يدوية باستخدام إجراءات مختلفة مثل مجموعات الاختبار، فإن إعادة ضبط جهاز الحبار بين الإجراءات تضمن أن سلوك كل إجراء مستقل. وإذا لم تكن حالة القرص إعادة تعيين، يمكن أن يؤثر إجراء واحد في سلوك الإجراء التالي.
تفترض إجراءات إعادة التشغيل وإعادة التعيين الموضحة في هذه الصفحة أن لديك بإنشاء جهاز حبَّار وضبطت بعض الحالة على القرص.
# Launch a devicelaunch_cvd
# Make some modifications to the deviceadb shell touch /storage/self/primary/Documents/hello
# Check the device stateadb shell ls /storage/self/primary/Documents
ومن نقطة البداية هذه، يمكنك استخدام المسارَين التاليَين لإعادة التشغيل وإعادة الضبط:
- إذا كان الجهاز سريع الاستجابة، عليك إعادة تشغيل الجهاز بالكامل باستخدام
adb reboot
- إذا لم يستجِب الجهاز، عليك إعادة تشغيل الجهاز بطريقة غير نظيفة باستخدام
restart_cvd
- يمكنك إعادة ضبط حالة الجهاز باستخدام
powerwash_cvd
. - أوقِف الجهاز وغيِّر وسيطات
launch_cvd
أثناء الحفاظ على حالة الجهاز أو فرض محو حالة الجهاز
تنفيذ إعادة الضبط السريع لـ Cuttlefish
يستخدم حبَّار تنفيذ إعادة تعيين سريع يعتمد على حماية الأقراص خلف تراكبات الأقراص qcow2. من بشكل افتراضي، يتعامل حبَّار أقراص التخزين الأصلية كقرص للقراءة فقط ويستخدم التراكبات والحصول على عمليات الكتابة على القرص.
ومع ذلك، هناك عيوب في استخدام تراكبات النسخ عند الكتابة. ومن الملاحظ أنّ تؤدي التغييرات الخارجية على الأقراص الأساسية إلى تعطيل التوافق مع الأقراص الحالية عمليات التراكب، وتؤدي إلى حالة غير متسقة للقرص. حبَّار بالقوة إعادة إنشاء التراكبات عند اكتشاف تغييرات غير متوافقة.
إن إعادة إنشاء التراكبات غير مرغوب فيها عند تطوير ميزة الاحتفاظ بجزء من القرص في حالة تهيئة معينة مع بتبديل جزء مختلف من القرص. على سبيل المثال، قد يؤدي تثبيت تطبيق ما مستخدم معين ثم استبدال الكيرنل (النواة) بشكل متكرر اختبار التفاعل بين التطبيق وإصدارات النواة المختلفة. وفي هذه الحالة، قد يكون من المفيد إيقاف التراكبات.
إعادة ضبط الأجهزة
تصف الأقسام التالية طرقًا لإعادة ضبط جهاز حبَّار على الإعدادات الأصلية. حالة القرص.
إعادة ضبط جهاز واحد
لإعادة ضبط جهاز حبَّار على حالة القرص الأولية، قم بتشغيل:
powerwash_cvd
سيُوقف powerwash_cvd
الجهاز الافتراضي، ويعيد ضبط أي تغييرات تم إجراؤها على
قرص الجهاز الافتراضي، وإعادة تشغيل الجهاز الافتراضي، والانتظار حتى الانتهاء
التشغيل. ويحتفظ المثيل بالسمات الأصلية التي تم منحها إلى launch_cvd
.
في الإعداد المتعدّد المستأجرين،
تعيد أداة powerwash_cvd
تشغيل نسخة واحدة من مجموعة المثيلات:
powerwash_cvd --instance_num=N
إعادة ضبط جميع الأجهزة
لإيقاف وإعادة ضبط جهاز واحد أو أكثر على حالات القرص الأولية، شغِّل:
stop_cvd
launch_cvd --resume=false
يتم إيقاف تشغيل الجهاز بشكل غير نظيف ويوقفه "stop_cvd
".
ستؤدي إضافة --resume=false
إلى launch_cvd
إلى جعل Cuttlefish يدمر كل الملفات.
المرتبط بالمثيل قيد التشغيل قبل بدء عملية التشغيل التالية. من المهم
بأمان إضافة أي علامات launch_cvd
إضافية.
في تكوين مستأجرين متعددين، stop_cvd
لإيقاف مجموعة المثيلات بأكملها.
إعادة تشغيل الأجهزة
توضّح الأقسام التالية طرق إعادة تشغيل الجهاز بدون إعادة ضبطه. الجهاز إلى حالة القرص الأولية.
محو الإعدادات من جديد
لإعادة تشغيل الجهاز بالكامل عندما يستجيب الجهاز، شغِّل:
adb reboot
ينقل adb reboot
الجهاز من خلال إجراء إيقاف التشغيل بالكامل والمزامنة.
تغييرات على القرص والتأكد من إيقاف تشغيل العمليات. مضيف حبَّار
عمليات أخرى. قد يكون هذا الإجراء غير متاح إذا كان الجهاز
دخل في حالة سيئة وأصبح غير مستجيب.
لإعادة تشغيل جهاز حبَّار واحد بشكل نظيف في
، وتحديد
الرقم التسلسلي
الجهاز المستهدف عند تشغيل adb-reboot
. إذا لم يتم تحديد جهاز مستهدف
المحدد، لا يعيد adb
تشغيل أي جهاز.
adb -s SERIAL reboot
إعادة التشغيل غير النظيفة
لإجراء إعادة تشغيل غير نظيفة عندما لا يستجيب الجهاز، شغِّل:
restart_cvd
ينفذ restart_cvd
عملية إيقاف تشغيل غير نظيف من خلال إيقاف تشغيل
جهاز حبَّار. restart_cvd
تعادل
فصل البطارية وإعادة توصيلها بجهاز فعلي. عمليات الكتابة على القرص
وقد لا تستمر إذا كانت قيد التقدم. ينتظر "restart_cvd
" حتى يتم تشغيل الجهاز.
تم تشغيله بالكامل مرة أخرى قبل الخروج.
في الإعداد المتعدّد المستأجرين،
تعيد restart_cvd
تشغيل نسخة واحدة من مجموعة المثيلات. لتحديد
مثيل حبَّار الذي تريد إعادة تشغيله، استخدِم علامة instance_num
.
restart_cvd --instance_num=N
في حال عدم استخدام --instance_num
، يكون رقم المثيل التلقائي هو 1
.
إعادة تشغيل باستخدام علامات بدء تشغيل_cvd مختلفة
لإيقاف جهاز واحد أو أكثر وإعادة التشغيل باستخدام علامات launch_cvd
مختلفة، شغِّل:
stop_cvd
launch_cvd NEW_FLAG
ينفِّذ stop_cvd
إيقاف تشغيل غير نظيف على نحو مشابه لـ restart_cvd
. إنه يترك
في حالة الخمول ويمكن تشغيله مرة أخرى لاحقًا
الأمر launch_cvd
. كما هي الحال مع restart_cvd
، قد لا تستمر عمليات الكتابة على القرص إذا
لم تتم مزامنتها بالكامل مع القرص. لحفظ البيانات على القرص بأمان، شغّل
adb reboot
أولاً.
adb reboot
stop_cvd
launch_cvd NEW_FLAG
إذا فرضت التغييرات على علامات launch_cvd
تغييرًا في تنسيق القرص
غير متوافق مع تنفيذ النسخ عند الكتابة، يتجاهل launch_cvd
تعديلات القرص القديمة وإعادة تعيينها إلى حالة القرص الأصلية. للحصول على
قائمة بالعلامات، يمكنك الاطّلاع على العلامات.
التنفيذ بدون عنصر متراكب
لإيقاف دعم إعادة الضبط السريع، شغِّل:
launch_cvd --use_overlay=false
يتعامل --use_overlay=false
مع ملفات قرص حبَّار كمحتوى للقراءة والكتابة
التغييرات في هذه الملفات.
التغيير بين --use_overlay=false
والتغيير التلقائي يمكن أن يؤدي إلى التوافق.
الأخطاء. لفرض محو حالة الجهاز السابقة، شغِّل:
stop_cvd
rm $HOME/cuttlefish $HOME/cuttlefish_runtime $HOME/cuttlefish_assembly
لا يمكن للحبار التنقل بأمان بين التدفقات مع بدون تراكبات، فإن هذا التغيير يحذف جميع حالات إدارة الحبار. وإذا تم تعديل ملفات الأقراص الخارجية وإعادة استخدامها لاحقًا مع التراكبات، تعتبر التعديلات السابقة جزءًا من الحالة المرجعية.
أعلام
يمكنك إضافة وسيطات باستخدام العلامات عند إطلاق جهاز حبَّار باستخدام
launch_cvd
ومع ذلك، بالنسبة إلى بعض العلامات
(العلامات التي يجب أن تظل كما هي)، يمكن أن يحدث فقدان البيانات في حال كانت العلامات
تم التغيير بين launch_cvd
طلب. لضمان عدم حدوث أي فقدان للبيانات عند
تشغيل تسلسل من الأوامر التي تشمل launch_cvd
وstop_cvd
، ثم
launch_cvd
مرة أخرى، واستخدِم العلامات نفسها لكل أمر من أوامر launch_cvd
. بالنسبة
على سبيل المثال، إذا تضمّنت علامة launch_cvd
الأولى الوسيطة.
--kernel_path=KERNEL_PATH
، استدعاء launch_cvd
الثاني
يجب أن يتضمّن أيضًا --kernel_path=KERNEL_PATH
نفسه.
أو أي تغييرات في نظام الملفات تم إجراؤها قبل stop_cvd
في
استدعاء launch_cvd
الثاني. الملف المشار إليه
يجب أن يتضمّن KERNEL_PATH
المحتوى نفسه أيضًا.
بعض العلامات آمنة للتغيير بين استدعاءات launch_cvd
. ما يلي:
تسرد الأقسام العلامات التي يجب أن تظل كما هي لتجنب فقدان البيانات ووضع علامات
والتي يمكن تغييرها بأمان دون فقدان البيانات. للحصول على تفاصيل حول البلاغات الفردية،
الرجوع إلى المصدر (
flags.cc
، disk_flags.cc
) أو تنفيذ "launch_cvd --help
".
علامات يجب أن تظل كما هي
يجب أن تظل هذه العلامات كما هي من استدعاء launch_cvd
إلى التالي
لتجنب فقدان البيانات:
--data_policy
--blank_data_image_mb
--kernel_path
--initramfs_path
--vm_manager
--enable_minimal_mode
--bootloader
--protected_vm
--userdata_format
--use_overlay
--system_image_dir
--boot_image
--init_boot_image
--data_image
--super_image
--misc_image
--misc_info_txt
--metadata_image
--vendor_boot_image
--vbmeta_image
--vbmeta_system_image
--linux_kernel_path
--linux_initramfs_path
--linux_root_image
--fuchsia_zedboot_path
--fuchsia_multiboot_bin_path
--fuchsia_root_image
--custom_partition_path
--blank_metadata_image_mb
العلامات التي يمكن تغييرها
يمكن تغيير هذه العلامات بأمان بين launch_cvd
من الاستدعاءات دون
مما يؤدي إلى فقدان البيانات:
--displays_textproto
--displays_binproto
--cpus
--gdb_port
--display0
--display1
--display2
--display3
--x_res
--y_res
--dpi
--refresh_rate_hz
--extra_kernel_cmdline
--extra_bootconfig_args
--guest_enforce_security
--memory_mb
--serial_number
--use_random_serial
--gpu_mode
--hwcomposer
--gpu_capture_binary
--enable_gpu_udmabuf
--enable_gpu_angle
--use_allocd
--pause_in_bootloader
--enable_host_bluetooth
--rootcanal_instance_num
--rootcanal_args
--netsim
--netsim_bt
--bluetooth_controller_properties_file
--bluetooth_commands_file
--enable_sandbox
--seccomp_policy_dir
--start_webrtc
--webrtc_assets_dir
--webrtc_certs_dir
--start_webrtc_sig_server
--webrtc_sig_server_addr
--webrtc_sig_server_port
--tcp_port_range
--udp_port_range
--webrtc_sig_server_path
--webrtc_sig_server_secure
--verify_sig_server_certificate
--webrtc_device_id
--uuid
--daemon
--setupwizard_mode
--enable_bootanimation
--qemu_binary_dir
--crosvm_binary
--gem5_binary_dir
--gem5_checkpoint_dir
--gem5_debug_file
--gem5_debug_flags
--restart_subprocesses
--enable_vehicle_hal_grpc_server
--boot_slot
--num_instances
--report_anonymous_usage_stats
--ril_dns
--kgdb
--start_gnss_proxy
--gnss_file_path
--fixed_location_file_path
--enable_modem_simulator
--modem_simulator_sim_type
--console
--enable_kernel_log
--vhost_net
--vhost_user_mac80211_hwim
--wmediumd_config
--ap_rootfs_image
--ap_kernel_image
--record_screen
--smt
--vsock_guest_cid
--secure_hals
--use_sdcard
--enable_audio
--camera_server_port
--modem_simulator_count
--blank_sdcard_image_mb
--adb_mode