Sotong: Mulai ulang dan setel ulang

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 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

Dari titik awal ini, Anda dapat menggunakan alur restart dan reset berikut:

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