Cuttlefish ভার্চুয়াল ডিভাইস কীভাবে রিস্টার্ট ও রিসেট করতে হয় তা এই পৃষ্ঠায় বর্ণনা করা আছে। Cuttlefish ডিভাইসকে তার প্রাথমিক ডিস্ক অবস্থায় রিসেট করাকে কমান্ড লাইন টুলে পাওয়ারওয়াশিং বলা হয়।
একাধিক আলাদা আলাদা পদ্ধতি সহ অটোমেটিক বা ম্যানুয়াল ওয়ার্কফ্লো চালানোর সময়, যেমন, টেস্ট স্যুট, পদ্ধতিগুলির মধ্যে Cuttlefish ডিভাইস রিসেট করা নিশ্চিত করে যে প্রতিটি পদ্ধতির আচরণ স্বাধীন। ডিস্কের স্টেট রিসেট করা না থাকলে, একটি প্রসিডিওর নিম্নলিখিত প্রসিডিওরের আচরণকে প্রভাবিত করতে পারে।
এই পৃষ্ঠায় রিস্টার্ট ও রিসেট করার যে পদ্ধতি বর্ণনা করা হয়েছে, তা ধরে নেয় যে আপনি Cuttlefish ডিভাইস তৈরি করেছেন এবং ডিস্কে কিছু স্টেট সেট করেছেন।
# 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 দ্রুত রিসেট প্রয়োগ করা
Cuttlefish একটি দ্রুত রিসেট করার প্রয়োগ ব্যবহার করে যা qcow2 ডিস্ক ওভারলে-এর পিছনের ডিস্কগুলিকে সুরক্ষিত রাখার উপর নির্ভর করে। ডিফল্ট হিসেবে, Cuttlefish আসল ডিস্ককে শুধু-পড়ার-যোগ্য হিসেবে বিবেচনা করে এবং ডিস্ক রাইট ক্যাপচার করতে ওভারলে ব্যবহার করে।
তবে, কপি-অন-রাইট ওভারলে ব্যবহার করার কিছু অসুবিধা আছে। মনে রাখবেন, আন্ডারলাইং ডিস্কে এক্সটার্নাল পরিবর্তন করা হলে, তা আগে থেকে থাকা ওভারলের সাথে মানানসই হয় না এবং ডিস্কের অবস্থা অসামঞ্জস্যপূর্ণ হয়ে যায়। Cuttlefish জোরপূর্বক ওভারলেগুলি পুনরায় তৈরি করে যখন এটি বেমানান পরিবর্তনগুলি শনাক্ত করে।
জোরপূর্বক ওভারলে আবার তৈরি করা অবাঞ্ছিত যখন এমন একটি ফিচার ডেভেলপ করা হচ্ছে যার জন্য ডিস্কের একটি অংশ একটি নির্দিষ্ট ইনিশিয়ালাইজড অবস্থায় রাখতে হবে এবং ডিস্কের অন্য একটি অংশ সোয়্যাপ আউট করতে হবে। যেমন, নির্দিষ্ট ব্যবহারকারীর কনফিগারেশন সহ কোনও অ্যাপ ইনস্টল করা এবং তারপরে অ্যাপ ও বিভিন্ন কার্নেল বিল্ডের মধ্যে ইন্টার্যাকশন পরীক্ষা করার জন্য বারবার কার্নেল পরিবর্তন করা। এই ক্ষেত্রে, ওভারলে বন্ধ করে দেওয়া ভাল হবে।
ডিভাইস রিসেট করুন
নিম্নলিখিত বিভাগে Cuttlefish ডিভাইসকে তার প্রাথমিক ডিস্ক অবস্থায় রিসেট করার উপায় বর্ণনা করা হয়েছে।
একটি ডিভাইস রিসেট করুন
একটি Cuttlefish ডিভাইসকে তার প্রাথমিক ডিস্ক অবস্থায় রিসেট করতে, রান করুন:
powerwash_cvdpowerwash_cvd ভার্চুয়াল মেশিন বন্ধ করে দেয়, ভার্চুয়াল মেশিন ডিস্কে করা যেকোনও পরিবর্তন রিসেট করে,
ভার্চুয়াল মেশিন রিস্টার্ট করে এবং বুটিং শেষ না হওয়া পর্যন্ত অপেক্ষা করে। ইনস্ট্যান্সটি launch_cvd-কে দেওয়া আসল ফ্ল্যাগগুলি সংরক্ষণ করে।
মাল্টি-টেন্যান্ট কনফিগারেশনে,
powerwash_cvd ইনস্ট্যান্স গ্রুপ থেকে একটি ইনস্ট্যান্স রিস্টার্ট করে:
powerwash_cvd --instance_num=Nসব ডিভাইস রিসেট করো
এক বা একাধিক ডিভাইস বন্ধ করতে এবং সেগুলির প্রাথমিক ডিস্ক স্টেটে রিসেট করতে, এগুলি চালান:
stop_cvdlaunch_cvd --resume=false
stop_cvd ডিভাইসটি সঠিকভাবে বন্ধ না করে সরাসরি বন্ধ করে দেয়।
launch_cvd-এ --resume=false যোগ করলে, Cuttlefish পরবর্তী রান শুরু করার আগে
আগে থেকে রান করা ইনস্ট্যান্স সম্পর্কিত সব ফাইল ধ্বংস করে দেয়। কোনও অতিরিক্ত launch_cvd ফ্ল্যাগ যোগ করা
নিরাপদ।
মাল্টি-টেন্যান্ট কনফিগারেশনে,ß
stop_cvd সম্পূর্ণ ইন্সট্যান্স গ্রুপ বন্ধ করে দেয়।
ডিভাইস রিস্টার্ট করা
নিম্নলিখিত বিভাগে, ডিভাইসকে তার প্রাথমিক ডিস্ক স্টেটে রিসেট না করেই ডিভাইস রিস্টার্ট করার পদ্ধতি বর্ণনা করা হয়েছে।
পরিষ্কার রিস্টার্ট
ডিভাইস রেসপন্স করলে, ডিভাইস ক্লিন রিস্টার্ট করতে, এটি রান করুন:
adb rebootadb reboot ডিভাইসটিকে সম্পূর্ণ শাটডাউন প্রসেসের মাধ্যমে নিয়ে যায়, ডিস্কে
পরিবর্তন সিঙ্ক করে এবং প্রসেস বন্ধ হয়ে গেছে কিনা তা নিশ্চিত করে। Cuttlefish হোস্ট
প্রসেস জড়িত নয়। ডিভাইসটি খারাপ অবস্থায় থাকলে এবং কাজ না করলে
এই পদ্ধতিটি উপলভ্য নাও হতে পারে।
মাল্টি-টেন্যান্ট কনফিগারেশনে একটি Cuttlefish ডিভাইস ক্লিন রিস্টার্ট করতে, adb-reboot চালানোর সময় টার্গেট ডিভাইসের
সিরিয়াল নম্বর
নির্দিষ্ট করুন। কোনও টার্গেট ডিভাইস উল্লেখ করা না থাকলে, adb কোনও ডিভাইস রিস্টার্ট করে না।
adb -s SERIAL rebootআনক্লিন রিস্টার্ট
ডিভাইস কাজ না করলে আনক্লিন রিস্টার্ট করতে, এগুলি রান করান:
restart_cvdrestart_cvd, Cuttlefish ডিভাইসটি অবিলম্বে বন্ধ করে দিয়ে
একটি আনক্লিন শাটডাউন করে। restart_cvd হল কোনও ফিজিক্যাল ডিভাইসের ব্যাটারি
ডিসকানেক্ট করে আবার কানেক্ট করার সমতুল্য। ডিস্কে লেখার কাজ
চলতে থাকলে তা সেভ নাও হতে পারে। restart_cvd ডিভাইসটি
সম্পূর্ণ বুট না হওয়া পর্যন্ত অপেক্ষা করে তারপর বেরিয়ে আসে।
মাল্টি-টেন্যান্ট কনফিগারেশনে,
restart_cvd ইনস্ট্যান্স গ্রুপ থেকে একটি ইনস্ট্যান্স রিস্টার্ট করে। কোন Cuttlefish ইনস্ট্যান্স রিস্টার্ট করতে হবে তা নির্দিষ্ট করতে, instance_num ফ্ল্যাগ ব্যবহার করুন।
restart_cvd --instance_num=N--instance_num ব্যবহার করা না হলে, ইনস্ট্যান্স নম্বর ডিফল্ট হিসেবে 1 হয়ে যায়।
অন্য launch_cvd ফ্ল্যাগ ব্যবহার করে রিস্টার্ট করুন
এক বা একাধিক ডিভাইস বন্ধ করতে এবং অন্য launch_cvd ফ্ল্যাগ সহ আবার চালু করতে, রান করুন:
stop_cvdlaunch_cvd NEW_FLAG
stop_cvd, restart_cvd-এর মতো একটি আনক্লিন শাটডাউন সম্পাদন করে। এটি ডিভাইসটিকে
নিষ্ক্রিয় অবস্থায় রেখে দেয়, যা পরে অন্য
launch_cvd কমান্ডের মাধ্যমে আবার চালু করা যেতে পারে। restart_cvd-এর মতো, ডিস্কে লেখা ডেটা স্থায়ী নাও হতে পারে যদি
সেগুলি ডিস্কের সাথে সম্পূর্ণভাবে সিঙ্ক না করা হয়। ডিস্কে নিরাপদে ডেটা সেভ করতে, প্রথমে
adb reboot রান করুন।
adb rebootstop_cvdlaunch_cvd NEW_FLAG
launch_cvd ফ্ল্যাগে করা পরিবর্তন যদি ডিস্ক লেআউটে এমন পরিবর্তন করতে বাধ্য করে যা
কপি-অন-রাইট প্রয়োগের সাথে মানানসই নয়, তাহলে launch_cvd পুরনো ডিস্কের
পরিবর্তন উপেক্ষা করে এবং ডিস্কের আসল অবস্থায় রিসেট করে। ফ্ল্যাগের সম্পূর্ণ
তালিকার জন্য, ফ্ল্যাগ দেখুন।
ওভারলে ছাড়াই চালান
দ্রুত রিসেট সহায়তা থেকে অপ্ট-আউট করতে, এগুলি রান করান:
launch_cvd --use_overlay=false--use_overlay=false Cuttlefish ডিস্ক ফাইলকে রিড-রাইট হিসেবে বিবেচনা করে এবং
সেইসব ফাইলে পরিবর্তন করা হয়।
--use_overlay=false ও ডিফল্টের মধ্যে পরিবর্তন করলে, কম্প্যাটিবিলিটি
সংক্রান্ত সমস্যা হতে পারে। আগের ডিভাইসের স্টেট জোর করে ক্লিন-আপ করতে, এগুলি রান করান:
stop_cvdrm $HOME/cuttlefish $HOME/cuttlefish_runtime $HOME/cuttlefish_assembly
Cuttlefish নিরাপদে ওভারলে সহ এবং ছাড়া ফ্লোর মধ্যে ট্রানজিশন নেভিগেট করতে পারে না, তাই এই পরিবর্তনটি সমস্ত Cuttlefish ম্যানেজমেন্ট স্টেট মুছে দেয়। এক্সটার্নাল ডিস্ক ফাইল পরিবর্তন করা হলে এবং পরে ওভারলে সহ আবার ব্যবহার করা হলে, আগের পরিবর্তনগুলি বেসলাইন স্টেটের অংশ হিসেবে বিবেচনা করা হয়।
পতাকা
launch_cvd ব্যবহার করে Cuttlefish ডিভাইস লঞ্চ করার সময় আপনি ফ্ল্যাগ ব্যবহার করে আর্গুমেন্ট যোগ করতে পারবেন। তবে, নির্দিষ্ট কিছু ফ্ল্যাগের ক্ষেত্রে
(যেসব ফ্ল্যাগ একই থাকতে হবে), 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--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