Trang này mô tả cách khởi động lại và đặt lại thiết bị ảo Cuttlefish. Việc đặt lại thiết bị Mực nang về trạng thái đĩa ban đầu được gọi là powerwashing trong công cụ dòng lệnh.
Khi chạy quy trình làm việc tự động hoặc thủ công với nhiều quy trình khác nhau, chẳng hạn như bộ thử nghiệm, việc đặt lại thiết bị Mực nang giữa các quy trình sẽ đảm bảo rằng hoạt động của từng quy trình là độc lập. Nếu trạng thái ổ đĩa không được đặt lại thì một quy trình có thể ảnh hưởng đến hoạt động của quy trình sau.
Quy trình khởi động lại và đặt lại được mô tả trên trang này giả định rằng bạn đã tạo một thiết bị Mực nang và đã đặt một số trạng thái trên đĩa.
# 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
Từ điểm bắt đầu này, bạn có thể sử dụng quy trình khởi động lại và đặt lại sau:
- Nếu thiết bị phản hồi, hãy thực hiện khởi động lại sạch bằng cách sử dụng
adb reboot
. - Nếu thiết bị không phản hồi, hãy thực hiện khởi động lại không sạch bằng cách sử dụng
restart_cvd
. - Đặt lại trạng thái thiết bị bằng cách sử dụng
powerwash_cvd
. - Dừng thiết bị và thay đổi các đối số
launch_cvd
trong khi vẫn giữ trạng thái thiết bị hoặc buộc xóa trạng thái thiết bị .
Thực hiện reset nhanh mực nang
Mực nang sử dụng triển khai thiết lập lại nhanh phụ thuộc vào việc bảo vệ các đĩa phía sau lớp phủ đĩa qcow2 . Theo mặc định, Cuttlefish xử lý các đĩa gốc ở dạng chỉ đọc và sử dụng các lớp phủ để ghi lại hoạt động ghi đĩa.
Tuy nhiên, có những hạn chế khi sử dụng lớp phủ sao chép khi ghi. Đáng chú ý là những thay đổi bên ngoài đối với các ổ đĩa cơ bản sẽ phá vỡ tính tương thích với các lớp phủ hiện có và gây ra trạng thái đĩa không nhất quán. Mực nang buộc phải tạo lại lớp phủ khi phát hiện những thay đổi không tương thích.
Việc buộc tạo lại các lớp phủ là điều không mong muốn khi phát triển một tính năng yêu cầu giữ một phần của đĩa ở trạng thái khởi tạo cụ thể trong khi hoán đổi một phần khác của đĩa. Ví dụ: cài đặt một ứng dụng có cấu hình người dùng cụ thể, sau đó liên tục hoán đổi kernel để kiểm tra sự tương tác giữa ứng dụng và các bản dựng kernel khác nhau. Trong trường hợp này, có thể nên tắt lớp phủ .
Đặt lại thiết bị
Các phần sau đây mô tả các cách đặt lại thiết bị Mực nang về trạng thái đĩa ban đầu.
Đặt lại một thiết bị
Để đặt lại một thiết bị Mực nang về trạng thái đĩa ban đầu, hãy chạy:
powerwash_cvd
powerwash_cvd
tắt máy ảo, đặt lại mọi thay đổi được thực hiện đối với đĩa máy ảo, khởi động lại máy ảo và đợi cho đến khi khởi động xong. Phiên bản này giữ nguyên các cờ ban đầu được cấp cho launch_cvd
.
Trong cấu hình nhiều bên thuê , powerwash_cvd
khởi động lại một phiên bản duy nhất trong nhóm phiên bản:
powerwash_cvd --instance_num=N
Đặt lại tất cả các thiết bị
Để dừng và đặt lại một hoặc nhiều thiết bị về trạng thái đĩa ban đầu, hãy chạy:
stop_cvd
launch_cvd --resume=false
stop_cvd
thực hiện tắt máy không sạch sẽ và dừng thiết bị.
Việc thêm --resume=false
vào launch_cvd
sẽ khiến Cuttlefish hủy tất cả các tệp liên quan đến phiên bản đang chạy trước đó trước khi bắt đầu lần chạy tiếp theo. Việc thêm bất kỳ cờ launch_cvd
bổ sung nào là an toàn.
Trong cấu hình nhiều người thuê , stop_cvd
sẽ tắt toàn bộ nhóm phiên bản.
Khởi động lại thiết bị
Các phần sau đây mô tả các cách khởi động lại thiết bị mà không cần đặt lại thiết bị về trạng thái đĩa ban đầu.
Khởi động lại sạch sẽ
Để thực hiện khởi động lại thiết bị sạch khi thiết bị phản hồi, hãy chạy:
adb reboot
adb reboot
sẽ đưa thiết bị đi qua quy trình tắt hoàn toàn, đồng bộ hóa các thay đổi vào ổ đĩa và đảm bảo các quy trình đã được tắt. Quá trình lưu trữ mực nang không được tham gia. Quy trình này có thể không khả dụng nếu thiết bị rơi vào trạng thái xấu và không phản hồi.
Để thực hiện khởi động lại sạch một thiết bị Mực nang trong cấu hình nhiều bên thuê , hãy chỉ định số sê-ri của thiết bị đích khi chạy adb-reboot
. Nếu không có thiết bị đích nào được chỉ định thì adb
sẽ không khởi động lại bất kỳ thiết bị nào.
adb -s SERIAL reboot
Khởi động lại không sạch sẽ
Để thực hiện khởi động lại không sạch khi thiết bị không phản hồi, hãy chạy:
restart_cvd
restart_cvd
thực hiện tắt máy không sạch bằng cách tắt ngay thiết bị Mực nang. restart_cvd
tương đương với việc ngắt kết nối và kết nối lại pin với thiết bị vật lý. Việc ghi đĩa có thể không tồn tại nếu chúng đang được tiến hành. restart_cvd
đợi cho đến khi thiết bị khởi động lại hoàn toàn trước khi thoát.
Trong cấu hình nhiều người thuê , restart_cvd
khởi động lại một phiên bản duy nhất trong nhóm phiên bản. Để chỉ định phiên bản Mực nang nào sẽ khởi động lại, hãy sử dụng cờ instance_num
.
restart_cvd --instance_num=N
Nếu --instance_num
không được sử dụng, số phiên bản sẽ mặc định là 1
.
Khởi động lại bằng các cờ launch_cvd khác nhau
Để dừng một hoặc nhiều thiết bị và khởi chạy lại với các cờ launch_cvd
khác, hãy chạy:
stop_cvd
launch_cvd NEW_FLAG
stop_cvd
thực hiện tắt máy không sạch tương tự như restart_cvd
. Nó để thiết bị ở trạng thái không hoạt động và có thể khởi động lại sau bằng lệnh launch_cvd
khác. Giống như restart_cvd
, việc ghi đĩa có thể không tiếp tục nếu chúng không được đồng bộ hóa hoàn toàn với đĩa. Để lưu dữ liệu vào đĩa một cách an toàn, trước tiên hãy chạy adb reboot
.
adb reboot
stop_cvd
launch_cvd NEW_FLAG
Nếu các thay đổi đối với cờ launch_cvd
buộc phải thay đổi bố cục ổ đĩa không tương thích với việc triển khai sao chép khi ghi, thì launch_cvd
sẽ bỏ qua các sửa đổi ổ đĩa cũ và đặt lại về trạng thái ổ đĩa ban đầu. Để biết danh sách đầy đủ các cờ, hãy xem Cờ .
Chạy mà không có lớp phủ
Để từ chối hỗ trợ thiết lập lại nhanh, hãy chạy:
launch_cvd --use_overlay=false
--use_overlay=false
coi các tập tin trên đĩa Mực nang là đọc-ghi và các thay đổi sẽ được truyền vào các tập tin đó.
Việc thay đổi giữa --use_overlay=false
và giá trị mặc định có thể gây ra lỗi tương thích. Để buộc dọn sạch trạng thái thiết bị trước đó, hãy chạy:
stop_cvd
rm $HOME/cuttlefish $HOME/cuttlefish_runtime $HOME/cuttlefish_assembly
Mực nang không thể điều hướng một cách an toàn quá trình chuyển đổi giữa các dòng có và không có lớp phủ, vì vậy thay đổi này sẽ xóa tất cả trạng thái quản lý Mực nang. Nếu các tệp đĩa bên ngoài được sửa đổi và được sử dụng lại sau này cùng với các lớp phủ thì những sửa đổi trước đó được coi là một phần của trạng thái cơ sở.
Cờ
Bạn có thể thêm đối số bằng cờ khi khởi chạy thiết bị Mực nang bằng cách sử dụng launch_cvd
. Tuy nhiên, đối với một số cờ nhất định ( Cờ phải giữ nguyên ), mất dữ liệu có thể xảy ra nếu cờ được thay đổi giữa các lệnh launch_cvd
. Để đảm bảo không xảy ra mất dữ liệu khi chạy một chuỗi lệnh bao gồm launch_cvd
, stop_cvd
và sau đó khởi chạy lại launch_cvd
, hãy sử dụng cùng các cờ cho mỗi lệnh launch_cvd
. Ví dụ: nếu cờ launch_cvd
đầu tiên bao gồm đối số --kernel_path= KERNEL_PATH
, lệnh gọi launch_cvd
thứ hai cũng phải bao gồm đối số --kernel_path= KERNEL_PATH
tương tự hoặc mọi thay đổi hệ thống tệp được thực hiện trước stop_cvd
đều bị mất trong lệnh gọi launch_cvd
thứ hai. Tệp được KERNEL_PATH
tham chiếu cũng phải có cùng nội dung.
Một số cờ có thể thay đổi an toàn giữa các lần gọi launch_cvd
. Các phần sau liệt kê các cờ phải giữ nguyên để tránh mất dữ liệu và các cờ có thể được thay đổi một cách an toàn mà không mất dữ liệu. Để biết chi tiết về từng cờ, hãy tham khảo nguồn ( flags.cc
, disk_flags.cc
) hoặc chạy launch_cvd --help
.
Cờ phải giữ nguyên
Các cờ này phải giữ nguyên từ lần gọi launch_cvd
này đến lần gọi tiếp theo để tránh mất dữ liệu:
-
--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
Cờ có thể thay đổi
Những cờ này có thể được thay đổi một cách an toàn giữa các lần gọi launch_cvd
mà không gây mất dữ liệu:
-
--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