कटलफ़िश: रीस्टार्ट करें और रीसेट करें

इस पेज में Cuttle Fish वर्चुअल डिवाइसों को रीस्टार्ट और रीसेट करने का तरीका बताया गया है. किसी कटलफ़िश डिवाइस को उसकी डिस्क की शुरुआती स्थिति पर रीसेट करने को पावरवॉशिंग का इस्तेमाल करें.

कई अलग-अलग प्रोसेस वाले ऑटोमेटेड या मैन्युअल वर्कफ़्लो चलाते समय, जैसे कि टेस्ट सुइट, प्रोसीजर के बीच में कटलफ़िश डिवाइस को रीसेट करना हर प्रक्रिया का व्यवहार स्वतंत्र है. अगर डिस्क की स्थिति रीसेट करते हैं, तो एक प्रक्रिया निम्न प्रक्रिया के व्यवहार को प्रभावित कर सकती है.

इस पेज पर बताई गई रीस्टार्ट और रीसेट करने की प्रोसेस के दौरान, यह मान लिया जाता है कि एक कटलफ़िश डिवाइस बनाया और डिस्क पर कुछ स्थिति सेट की.

# Launch a device
launch_cvd
# Make some modifications to the device
adb shell touch /storage/self/primary/Documents/hello
# Check the device state
adb shell ls /storage/self/primary/Documents

इस शुरुआती पॉइंट से, नीचे दिए गए रीस्टार्ट और रीसेट फ़्लो का इस्तेमाल किया जा सकता है:

कटलफ़िश को आसानी से रीसेट करने की सुविधा लागू करने का तरीका

कटलफ़िश के लिए, तेज़ी से रीसेट होने की सुविधा का इस्तेमाल किया जाता है. यह सुविधा, के पीछे डिस्क 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 में जोड़ने से, कटलफ़िश की सभी फ़ाइलें मिट जाएंगी अगला रन शुरू करने से पहले, पहले से चल रहे इंस्टेंस से जुड़ा हो. यह समय है किसी दूसरे 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 पर सेट होता है.

अलग-अलग Launch_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