Halaman ini menjelaskan cara memulai ulang dan menyetel ulang perangkat virtual Sotong. Menyetel ulang perangkat Sotong ke kondisi disk awal disebut sebagai powerwashing di alat baris perintah.
Saat menjalankan alur kerja otomatis atau manual dengan beberapa prosedur berbeda, seperti rangkaian pengujian, menyetel ulang perangkat Cuttlefish di antara prosedur memastikan bahwa perilaku setiap prosedur bersifat independen. Jika status disk tidak disetel ulang, salah satu prosedur dapat memengaruhi perilaku prosedur berikut.
Prosedur restart dan reset yang dijelaskan pada halaman ini mengasumsikan bahwa Anda telah membuat perangkat Sotong 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 restart dan reset berikut:
- Jika perangkat responsif, lakukan restart bersih menggunakan
adb reboot
. - Jika perangkat tidak responsif, lakukan restart yang tidak bersih menggunakan
restart_cvd
. - Setel ulang 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 sotong
Sotong menggunakan implementasi reset cepat yang bergantung pada perlindungan disk di belakang overlay disk qcow2 . Secara default, Cuttlefish memperlakukan disk asli sebagai hanya-baca dan menggunakan overlay untuk menangkap penulisan disk.
Namun ada kelemahan dalam menggunakan overlay copy-on-write. Khususnya, perubahan eksternal pada disk yang mendasarinya merusak kompatibilitas dengan overlay yang ada, dan menyebabkan status disk tidak konsisten. Sotong secara paksa membuat ulang overlay ketika mendeteksi perubahan yang tidak kompatibel.
Membuat ulang overlay secara paksa tidak diinginkan ketika mengembangkan fitur yang mengharuskan sebagian disk tetap dalam kondisi inisialisasi tertentu sambil menukar bagian lain dari disk. 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, mungkin ada baiknya menonaktifkan overlay .
Setel ulang perangkat
Bagian berikut menjelaskan cara menyetel ulang perangkat Sotong ke kondisi disk awal.
Setel ulang satu perangkat
Untuk mereset satu perangkat Sotong ke kondisi disk awalnya, jalankan:
powerwash_cvd
powerwash_cvd
mematikan mesin virtual, mengatur ulang setiap perubahan yang dilakukan pada disk mesin virtual, memulai ulang mesin virtual, dan menunggu hingga selesai booting. Instance ini mempertahankan tanda asli yang diberikan kepada launch_cvd
.
Dalam konfigurasi multi-penyewa , powerwash_cvd
memulai ulang satu instans dari grup instans:
powerwash_cvd --instance_num=N
Setel ulang semua perangkat
Untuk menghentikan dan menyetel ulang satu atau beberapa perangkat ke status disk awalnya, jalankan:
stop_cvd
launch_cvd --resume=false
stop_cvd
melakukan pematian yang tidak bersih dan menghentikan perangkat.
Menambahkan --resume=false
ke launch_cvd
membuat Cuttlefish menghancurkan semua file yang terkait dengan instance yang dijalankan sebelumnya sebelum memulai proses berikutnya. Aman untuk menambahkan tanda launch_cvd
tambahan.
Dalam konfigurasi multi-penyewa , stop_cvd
mematikan seluruh grup instans.
Mulai ulang perangkat
Bagian berikut menjelaskan cara memulai ulang perangkat tanpa menyetel ulang perangkat ke kondisi disk awal.
Bersihkan mulai ulang
Untuk melakukan restart bersih pada perangkat saat perangkat responsif, jalankan:
adb reboot
adb reboot
membawa perangkat melalui prosedur pematian penuh, menyinkronkan perubahan ke disk dan memastikan proses dimatikan. Proses inang sotong tidak terlibat. Prosedur ini mungkin tidak tersedia jika perangkat memasuki kondisi buruk dan tidak responsif.
Untuk melakukan restart bersih pada satu perangkat Cuttlefish dalam konfigurasi multi-penyewa , 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 bersih
Untuk melakukan restart yang tidak bersih saat perangkat tidak responsif, jalankan:
restart_cvd
restart_cvd
melakukan pematian yang tidak bersih dengan mematikan perangkat Sotong secara instan. restart_cvd
setara dengan melepas dan menyambungkan kembali baterai ke perangkat fisik. Penulisan disk mungkin tidak berlanjut jika sedang berlangsung. restart_cvd
menunggu hingga perangkat melakukan booting kembali sepenuhnya sebelum keluar.
Dalam konfigurasi multi-penyewa , restart_cvd
memulai ulang satu instans dari grup instans. Untuk menentukan instance Sotong mana yang akan dimulai ulang, gunakan flag instance_num
.
restart_cvd --instance_num=N
Jika --instance_num
tidak digunakan, nomor instans defaultnya adalah 1
.
Mulai ulang menggunakan tanda launch_cvd yang berbeda
Untuk menghentikan satu atau beberapa perangkat dan meluncurkan kembali dengan tanda launch_cvd
yang berbeda, jalankan:
stop_cvd
launch_cvd NEW_FLAG
stop_cvd
melakukan pematian tidak bersih yang mirip dengan restart_cvd
. Ini membuat perangkat dalam keadaan tidak aktif yang dapat dimulai lagi nanti dengan perintah launch_cvd
yang berbeda. Seperti halnya restart_cvd
, penulisan disk mungkin tidak akan 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 copy-on-write, launch_cvd
mengabaikan modifikasi disk lama dan mengatur ulang ke status disk asli. Untuk daftar lengkap bendera, lihat Bendera .
Jalankan tanpa overlay
Untuk memilih keluar dari dukungan pengaturan ulang 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 kesalahan kompatibilitas. Untuk secara paksa membersihkan status perangkat sebelumnya, jalankan:
stop_cvd
rm $HOME/cuttlefish $HOME/cuttlefish_runtime $HOME/cuttlefish_assembly
Sotong tidak dapat dengan aman menavigasi transisi antara arus dengan dan tanpa overlay, sehingga perubahan ini menghapus semua status pengelolaan Sotong. Jika file disk eksternal diubah dan digunakan kembali nanti bersama dengan overlay, modifikasi sebelumnya dianggap sebagai bagian dari keadaan dasar.
Bendera
Anda dapat menambahkan argumen menggunakan tanda saat meluncurkan perangkat Cuttlefish menggunakan launch_cvd
. Namun, untuk flag tertentu ( Flag yang harus tetap sama ), kehilangan data dapat terjadi jika flag diubah di antara perintah launch_cvd
. Untuk memastikan tidak terjadi kehilangan data saat menjalankan rangkaian perintah yang mencakup launch_cvd
, stop_cvd
, dan kemudian launch_cvd
lagi, gunakan tanda yang sama untuk setiap perintah launch_cvd
. Misalnya, jika flag 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 dilakukan sebelum stop_cvd
akan hilang pada pemanggilan launch_cvd
kedua. File yang direferensikan oleh KERNEL_PATH
juga harus memiliki konten yang sama.
Beberapa tanda aman untuk diubah di antara pemanggilan launch_cvd
. Bagian berikut mencantumkan tanda yang harus tetap sama untuk menghindari kehilangan data dan tanda yang dapat diubah dengan aman tanpa kehilangan data. Untuk detail tentang masing-masing flag, lihat sumbernya ( flags.cc
, disk_flags.cc
) atau jalankan launch_cvd --help
.
Bendera yang harus tetap sama
Tanda-tanda ini harus tetap sama dari satu pemanggilan launch_cvd
ke pemanggilan berikutnya untuk menghindari kehilangan 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
Bendera yang bisa berubah
Tanda-tanda 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