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