Halaman ini menjelaskan cara memulai ulang dan mereset perangkat virtual Cuttlefish. Mereset perangkat Cuttlefish ke status disk awal disebut sebagai powerwashing di alat command line.
Saat menjalankan alur kerja otomatis atau manual dengan beberapa prosedur yang berbeda, seperti rangkaian pengujian, mereset perangkat Cuttlefish di antara prosedur akan memastikan bahwa perilaku setiap prosedur bersifat independen. Jika status disk tidak direset, satu prosedur dapat memengaruhi perilaku prosedur berikut.
Prosedur mulai ulang dan reset yang dijelaskan di halaman ini mengasumsikan bahwa Anda telah membuat perangkat Cuttlefish dan telah menetapkan beberapa status pada disk.
# 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
Dari titik awal ini, Anda dapat menggunakan alur mulai ulang dan reset berikut:
- Jika perangkat responsif, mulai ulang bersih menggunakan
adb reboot
. - Jika perangkat tidak responsif, lakukan mulai ulang tidak bersih menggunakan
restart_cvd
. - Reset status perangkat menggunakan
powerwash_cvd
. - Hentikan perangkat dan ubah argumen
launch_cvd
sambil mempertahankan status perangkat atau menghapus status perangkat secara paksa.
Implementasi reset cepat cumi-cumi
Cuttlefish menggunakan implementasi reset cepat yang bergantung pada perlindungan disk di balik overlay disk qcow2. Secara default, Cuttlefish memperlakukan disk asli sebagai hanya baca dan menggunakan overlay untuk merekam operasi tulis disk.
Namun, ada kelemahan dari penggunaan overlay salin-saat-tulis. Secara khusus, perubahan eksternal pada disk yang mendasarinya akan merusak kompatibilitas dengan overlay yang ada, dan menyebabkan status disk yang tidak konsisten. Cuttlefish secara paksa membuat ulang overlay saat mendeteksi perubahan yang tidak kompatibel.
Membuat ulang overlay secara paksa tidak diinginkan saat mengembangkan fitur yang mengharuskan sebagian disk dalam status diinisialisasi tertentu sambil menukar bagian disk yang lain. Misalnya, menginstal aplikasi dengan konfigurasi pengguna tertentu, lalu berulang kali menukar kernel untuk menguji interaksi antara aplikasi dan build kernel yang berbeda. Dalam hal ini, sebaiknya nonaktifkan overlay.
Mereset perangkat
Bagian berikut menjelaskan cara mereset perangkat Cuttlefish ke status disk awal.
Reset satu perangkat
Untuk mereset satu perangkat Cuttlefish ke status disk awal, jalankan:
powerwash_cvd
powerwash_cvd
mematikan virtual machine, mereset perubahan apa pun yang dilakukan pada
disk virtual machine, memulai ulang virtual machine, dan menunggu hingga selesai
mem-booting. Instance mempertahankan flag asli yang diberikan ke launch_cvd
.
Dalam konfigurasi multi-tenant, powerwash_cvd
akan memulai ulang satu instance dari grup instance:
powerwash_cvd --instance_num=N
Mereset semua perangkat
Untuk menghentikan dan mereset satu atau beberapa perangkat ke status disk awal, jalankan:
stop_cvd
launch_cvd --resume=false
stop_cvd
melakukan penonaktifan yang tidak menyeluruh dan menghentikan perangkat.
Menambahkan --resume=false
ke launch_cvd
akan membuat Cuttlefish menghancurkan semua file
yang terkait dengan instance yang berjalan sebelumnya sebelum memulai proses berikutnya. Anda
dapat menambahkan flag launch_cvd
tambahan dengan aman.
Dalam konfigurasi multi-tenant, stop_cvd
akan menonaktifkan seluruh grup instance.
Memulai ulang perangkat
Bagian berikut menjelaskan cara memulai ulang perangkat tanpa mereset perangkat ke status disk awal.
Mulai ulang bersih
Untuk memulai ulang perangkat secara bersih saat perangkat responsif, jalankan:
adb reboot
adb reboot
akan membawa perangkat melewati prosedur penonaktifan penuh, menyinkronkan perubahan ke disk, dan memastikan prosesnya dinonaktifkan. Proses host Cuttlefish tidak terlibat. Prosedur ini mungkin tidak tersedia jika perangkat
telah memasuki status yang buruk dan tidak responsif.
Untuk memulai ulang bersih satu perangkat Cuttlefish dalam konfigurasi multi-tenant, tentukan nomor seri perangkat target saat menjalankan adb-reboot
. Jika tidak ada perangkat target yang
ditentukan, adb
tidak akan memulai ulang perangkat apa pun.
adb -s SERIAL reboot
Mulai ulang yang tidak rapi
Untuk memulai ulang perangkat yang tidak berfungsi saat perangkat tidak responsif, jalankan:
restart_cvd
restart_cvd
melakukan penonaktifan yang tidak bersih dengan mematikan
perangkat Sotong secara langsung. restart_cvd
setara dengan
memutuskan dan menghubungkan kembali baterai ke perangkat fisik. Operasi tulis disk
mungkin tidak bertahan jika sedang berlangsung. restart_cvd
menunggu hingga perangkat
telah sepenuhnya di-booting lagi sebelum keluar.
Dalam konfigurasi multi-tenant, restart_cvd
akan memulai ulang satu instance dari grup instance. Untuk menentukan
instance Cuttlefish yang akan dimulai ulang, gunakan flag instance_num
.
restart_cvd --instance_num=N
Jika --instance_num
tidak digunakan, nomor instance akan ditetapkan secara default ke 1
.
Mulai ulang menggunakan flag launch_cvd yang berbeda
Untuk menghentikan satu atau beberapa perangkat dan meluncurkan ulang dengan flag launch_cvd
yang berbeda, jalankan:
stop_cvd
launch_cvd NEW_FLAG
stop_cvd
melakukan shutdown tidak bersih yang mirip dengan restart_cvd
. Tindakan ini akan membuat
perangkat dalam status tidak aktif yang dapat dimulai lagi nanti dengan perintah
launch_cvd
yang berbeda. Seperti halnya restart_cvd
, penulisan disk mungkin tidak bertahan jika
tidak sepenuhnya disinkronkan ke disk. Untuk menyimpan data ke disk dengan aman, jalankan
adb reboot
terlebih dahulu.
adb reboot
stop_cvd
launch_cvd NEW_FLAG
Jika perubahan pada tanda launch_cvd
memaksa perubahan pada tata letak disk yang
tidak kompatibel dengan implementasi salin-saat-tulis, launch_cvd
akan mengabaikan
modifikasi disk lama dan mereset ke status disk asli. Untuk mengetahui daftar lengkap tanda, lihat Tanda.
Jalankan tanpa overlay
Untuk memilih tidak mengikuti dukungan reset cepat, jalankan:
launch_cvd --use_overlay=false
--use_overlay=false
memperlakukan file disk Cuttlefish sebagai baca-tulis, dan
perubahan diterapkan ke file tersebut.
Mengubah antara --use_overlay=false
dan default dapat menyebabkan error
kompatibilitas. Untuk membersihkan status perangkat sebelumnya secara paksa, jalankan:
stop_cvd
rm $HOME/cuttlefish $HOME/cuttlefish_runtime $HOME/cuttlefish_assembly
Sotong tidak dapat menavigasi transisi secara aman antara alur dengan dan tanpa overlay, sehingga perubahan ini akan menghapus semua status pengelolaan Cuttlefish. Jika file disk eksternal diubah dan digunakan kembali nanti bersama dengan overlay, perubahan sebelumnya dianggap sebagai bagian dari status dasar pengukuran.
Tanda
Anda dapat menambahkan argumen menggunakan flag saat meluncurkan perangkat Cuttlefish menggunakan
launch_cvd
. Namun, untuk flag tertentu
(Flag yang harus tetap sama), kehilangan data dapat terjadi jika flag
berubah di antara perintah launch_cvd
. Untuk memastikan tidak terjadi kehilangan data saat menjalankan urutan perintah yang mencakup launch_cvd
, stop_cvd
, lalu launch_cvd
lagi, gunakan flag yang sama untuk setiap perintah launch_cvd
. Misalnya, jika tanda launch_cvd
pertama menyertakan argumen
--kernel_path=KERNEL_PATH
, pemanggilan launch_cvd
kedua
juga harus menyertakan argumen --kernel_path=KERNEL_PATH
yang sama, atau perubahan sistem file apa pun yang dibuat sebelum stop_cvd
akan hilang dalam
pemanggilan launch_cvd
kedua. File yang dirujuk oleh
KERNEL_PATH
juga harus memiliki konten yang sama.
Beberapa flag aman untuk diubah di antara pemanggilan launch_cvd
. Bagian
berikut mencantumkan flag yang harus tetap sama untuk menghindari kehilangan data dan flag
yang dapat diubah dengan aman tanpa kehilangan data. Untuk mengetahui detail tentang setiap tanda,
lihat sumbernya (
flags.cc
, disk_flags.cc
) atau jalankan launch_cvd --help
.
Flag yang harus tetap sama
Flag ini harus tetap sama dari satu pemanggilan launch_cvd
ke pemanggilan berikutnya untuk
menghindari hilangnya data:
--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
Tanda yang dapat berubah
Flag ini dapat diubah dengan aman di antara pemanggilan launch_cvd
tanpa
menyebabkan kehilangan data:
--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