In questa pagina viene descritto come riavviare e reimpostare i dispositivi virtuali Cuttlefish. Il ripristino dello stato del disco iniziale di un dispositivo Cuttlefish prende il nome di powerwashing nello strumento a riga di comando.
Quando si eseguono flussi di lavoro automatizzati o manuali con più procedure diverse, come le suite di test, la reimpostazione del dispositivo Seppia tra una procedura e l'altra garantisce che il comportamento di ogni procedura sia indipendente. Se lo stato del disco non è una delle due procedure può influire sul comportamento della procedura riportata di seguito.
Le procedure di riavvio e ripristino descritte in questa pagina presuppone che tu abbia ha creato un dispositivo Cuttlefish e ha impostato uno stato sul disco.
# 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
Da questo punto di partenza, puoi utilizzare i seguenti flussi di riavvio e reimpostazione:
- Se il dispositivo è reattivo, esegui un riavvio pulito utilizzando
adb reboot
- Se il dispositivo non risponde, esegui un riavvio sporco utilizzando
restart_cvd
- Reimposta lo stato del dispositivo utilizzando
powerwash_cvd
. - Arresta il dispositivo e modifica gli argomenti
launch_cvd
mentre mantenere lo stato del dispositivo o cancellazione forzata dello stato del dispositivo.
Implementazione del ripristino rapido della seppia
La seppia usa un'implementazione di ripristino rapido che dipende dalla protezione i dischi alla base overlay del disco qcow2. Di l'impostazione predefinita, Cuttlefish considera i dischi originali come di sola lettura e utilizza gli overlay per ed acquisire le scritture su disco.
Tuttavia, l'utilizzo degli overlay di copia alla scrittura presenta alcuni svantaggi. In particolare, le modifiche esterne ai dischi sottostanti interrompono la compatibilità con si sovrappongono e causano uno stato incoerente del disco. Seppia con la forza ricrea gli overlay quando rileva modifiche incompatibili.
Non è consigliabile ricreare forzatamente gli overlay quando si sviluppa una funzionalità che richiede di mantenere parte del disco in un particolare stato inizializzato scambiando una parte diversa del disco. Ad esempio, l'installazione di un'app con configurazione utente e poi scambiando ripetutamente il kernel testare l'interazione tra l'app e le diverse build del kernel. In questo caso, potrebbe valere la pena disattivare gli overlay.
Reimposta dispositivi
Le seguenti sezioni descrivono come ripristinare lo stato iniziale di un dispositivo Seppia stato del disco.
Reimpostare un dispositivo
Per ripristinare lo stato del disco iniziale di un dispositivo Cuttlefish, esegui:
powerwash_cvd
powerwash_cvd
arresta la macchina virtuale, reimposta le eventuali modifiche apportate
il disco della macchina virtuale, riavvia la macchina virtuale e attende il suo completamento
all'avvio. L'istanza conserva i flag originali assegnati a launch_cvd
.
In una configurazione multi-tenant,
powerwash_cvd
riavvia una singola istanza dal gruppo di istanze:
powerwash_cvd --instance_num=N
Reimposta tutti i dispositivi
Per arrestare e reimpostare lo stato iniziale del disco di uno o più dispositivi, esegui:
stop_cvd
launch_cvd --resume=false
stop_cvd
esegue un arresto sporco e arresta il dispositivo.
Se aggiungi --resume=false
a launch_cvd
, Cuttlefish distrugge tutti i file
all'istanza precedentemente in esecuzione
prima di iniziare la successiva. È
aggiungere eventuali altre segnalazioni launch_cvd
.
In una configurazione multi-tenant, stop_cvd
l'intero gruppo di istanze.
Riavviare i dispositivi
Le sezioni seguenti descrivono i modi per riavviare un dispositivo senza reimpostarlo del dispositivo allo stato iniziale del disco.
Riavvio pulito
Per eseguire un riavvio pulito del dispositivo quando è reattivo, esegui:
adb reboot
adb reboot
esegue la procedura di arresto completa del dispositivo, eseguendo la sincronizzazione
modifiche al disco e assicurarsi che i processi vengano arrestati. Ospite di seppie
non sono coinvolti. Questa procedura potrebbe non essere disponibile se il dispositivo
è in uno stato non valido e non risponde.
Per eseguire un riavvio pulito di un singolo dispositivo Seppia in una
configurazione multi-tenant, devi specificare
numero di serie
del dispositivo di destinazione durante l'esecuzione di adb-reboot
. Se il dispositivo di destinazione non è
specificato, adb
non riavvia alcun dispositivo.
adb -s SERIAL reboot
Riavvio sporco
Per eseguire un riavvio non pulito quando il dispositivo non risponde, esegui:
restart_cvd
restart_cvd
esegue un arresto sporco arrestando immediatamente
Dispositivo seppia. restart_cvd
equivale a
Scollegare e ricollegare la batteria a un dispositivo fisico. Scritture disco
potrebbero non essere mantenuti se erano in corso. restart_cvd
attende che il dispositivo
si sia riavviato completamente prima di uscire.
In una configurazione multi-tenant,
restart_cvd
riavvia una singola istanza dal gruppo di istanze. Per specificare
quale istanza Cuttlefish riavviare, usa il flag instance_num
.
restart_cvd --instance_num=N
Se non viene utilizzato --instance_num
, il numero di istanza sarà 1
per impostazione predefinita.
Riavvio con flag Launch_cvd diversi
Per interrompere uno o più dispositivi e riavviare con flag launch_cvd
diversi, esegui:
stop_cvd
launch_cvd NEW_FLAG
stop_cvd
esegue un arresto sporco simile a restart_cvd
. Lascia il
inattivo per il dispositivo, che può essere riavviato in un secondo momento con un
Comando launch_cvd
. Come con restart_cvd
, le scritture su disco potrebbero non essere mantenute se
non sono completamente sincronizzati
con il disco. Per salvare i dati su disco in modo sicuro, esegui
adb reboot
prima.
adb reboot
stop_cvd
launch_cvd NEW_FLAG
Se le modifiche ai flag launch_cvd
forzano una modifica al layout del disco,
incompatibile con l'implementazione della funzione di copia al momento della scrittura, launch_cvd
ignora
le modifiche al disco precedente e viene ripristinato lo stato originale del disco. Per un
per l'elenco di flag, consulta la sezione Flag.
Esegui senza overlay
Per disattivare il supporto del ripristino rapido, esegui:
launch_cvd --use_overlay=false
--use_overlay=false
tratta i file del disco Cuttlefish come lettura/scrittura e
le modifiche vengono propagate in questi file.
Il passaggio tra --use_overlay=false
e il valore predefinito può causare la compatibilità
errori. Per eseguire forzatamente la pulizia dello stato precedente del dispositivo, esegui:
stop_cvd
rm $HOME/cuttlefish $HOME/cuttlefish_runtime $HOME/cuttlefish_assembly
La seppia non è in grado di affrontare in modo sicuro la transizione tra i flussi con e senza overlay, di conseguenza questa modifica elimina tutto lo stato di gestione dei Seppia. Se i file del disco esterno vengono modificati e riutilizzati in seguito insieme agli overlay, le modifiche precedenti sono considerate parte dello stato di riferimento.
Bandiere
Puoi aggiungere argomenti utilizzando flag all'avvio di un dispositivo Seppia con
launch_cvd
. Tuttavia, per alcune segnalazioni
(Flag che devono rimanere invariati), la perdita di dati può verificarsi se i flag vengono
è cambiato tra i comandi launch_cvd
. Per assicurarti che non si verifichi alcuna perdita di dati quando
eseguendo una sequenza di comandi che includono launch_cvd
, stop_cvd
, dopodiché
launch_cvd
di nuovo, usa gli stessi flag per ogni comando launch_cvd
. Per
esempio, se il primo flag launch_cvd
include l'argomento
--kernel_path=KERNEL_PATH
, la seconda chiamata launch_cvd
deve includere anche lo stesso --kernel_path=KERNEL_PATH
oppure eventuali modifiche al file system apportate prima del giorno stop_cvd
andranno perse
seconda chiamata launch_cvd
. Il file a cui fa riferimento
Anche KERNEL_PATH
deve avere gli stessi contenuti.
Alcuni flag possono essere modificati in sicurezza tra una chiamata di launch_cvd
e l'altra. Le seguenti
elencano i flag che devono rimanere invariati per evitare la perdita di dati e i flag
che possono essere modificate in sicurezza senza perdita di dati. Per maggiori dettagli sulle singole segnalazioni,
fare riferimento alla fonte (
flags.cc
, disk_flags.cc
) o esegui launch_cvd --help
.
Flag che devono rimanere invariati
Questi flag devono rimanere invariati da una chiamata launch_cvd
all'altra
per evitare perdite di dati:
--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
Flag che possono cambiare
Questi flag possono essere modificati in sicurezza tra una chiamata launch_cvd
e l'altra senza
che causano la perdita di dati:
--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