Bu sayfada Mürekkepbalığı sanal cihazlarının nasıl yeniden başlatılacağı ve sıfırlanacağı açıklanmaktadır. Mürekkepbalığı aygıtının başlangıç disk durumuna sıfırlanması, komut satırı aracında güçlü yıkama olarak adlandırılır.
Test takımları gibi birden fazla farklı prosedürle otomatik veya manuel iş akışları çalıştırırken, Mürekkepbalığı cihazının prosedürler arasında sıfırlanması, her prosedürün davranışının bağımsız olmasını sağlar. Disk durumu sıfırlanmazsa, bir prosedür aşağıdaki prosedürün davranışını etkileyebilir.
Bu sayfada açıklanan yeniden başlatma ve sıfırlama prosedürleri, bir Mürekkepbalığı aygıtı oluşturduğunuzu ve diskte bazı durumlar ayarladığınızı varsayar.
# 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
Bu başlangıç noktasından itibaren aşağıdaki yeniden başlatma ve sıfırlama akışlarını kullanabilirsiniz:
- Cihaz yanıt veriyorsa
adb reboot
kullanarak temiz bir yeniden başlatma gerçekleştirin. - Cihaz yanıt vermiyorsa
restart_cvd
kullanarak temiz olmayan bir yeniden başlatma gerçekleştirin. -
powerwash_cvd
kullanarak cihaz durumunu sıfırlayın. - Aygıtı durdurun ve aygıt durumunu korurken veya aygıt durumunu zorla temizlerken
launch_cvd
bağımsız değişkenlerini değiştirin.
Mürekkep balığı hızlı sıfırlama uygulaması
Mürekkepbalığı, qcow2 disk kaplamalarının arkasındaki diskleri korumaya dayalı bir hızlı sıfırlama uygulaması kullanır. Cuttlefish varsayılan olarak orijinal diskleri salt okunur olarak değerlendirir ve disk yazma işlemlerini yakalamak için kaplamaları kullanır.
Ancak yazarken kopyala kaplamalarını kullanmanın dezavantajları vardır. Özellikle, temel disklerde yapılan harici değişiklikler mevcut kaplamalarla uyumluluğu bozar ve tutarsız bir disk durumuna neden olur. Mürekkep balığı uyumsuz değişiklikler tespit ettiğinde kaplamaları zorla yeniden oluşturur.
Diskin farklı bir kısmını değiştirirken diskin bir kısmını belirli bir başlatılmış durumda tutmayı gerektiren bir özellik geliştirilirken kaplamaların zorla yeniden oluşturulması istenmeyen bir durumdur. Örneğin, belirli bir kullanıcı yapılandırmasına sahip bir uygulama yüklemek ve ardından uygulama ile farklı çekirdek yapıları arasındaki etkileşimi test etmek için çekirdeği tekrar tekrar değiştirmek. Bu durumda kaplamaları devre dışı bırakmak faydalı olabilir.
Cihazları sıfırla
Aşağıdaki bölümlerde Mürekkep Balığı aygıtını başlangıç disk durumuna sıfırlamanın yolları açıklanmaktadır.
Bir cihazı sıfırla
Bir Mürekkep Balığı aygıtını başlangıç disk durumuna sıfırlamak için şunu çalıştırın:
powerwash_cvd
powerwash_cvd
sanal makineyi kapatır, sanal makine diskinde yapılan değişiklikleri sıfırlar, sanal makineyi yeniden başlatır ve önyüklemenin tamamlanmasını bekler. Örnek, launch_cvd
verilen orijinal işaretleri korur.
Çok kiracılı bir yapılandırmada powerwash_cvd
, örnek grubundan tek bir örneği yeniden başlatır:
powerwash_cvd --instance_num=N
Tüm cihazları sıfırla
Bir veya daha fazla cihazı durdurmak ve başlangıç disk durumlarına sıfırlamak için şunu çalıştırın:
stop_cvd
launch_cvd --resume=false
stop_cvd
kirli bir kapatma gerçekleştirir ve cihazı durdurur.
launch_cvd
dosyasına --resume=false
eklenmesi Cuttlefish'in bir sonraki çalıştırmaya başlamadan önce önceden çalışan örnekle ilgili tüm dosyaları yok etmesini sağlar. İlave launch_cvd
işaretlerini eklemek güvenlidir.
Çok kiracılı bir yapılandırmada stop_cvd
, örnek grubunun tamamını kapatır.
Cihazları yeniden başlat
Aşağıdaki bölümlerde, aygıtı başlangıç disk durumuna sıfırlamadan aygıtı yeniden başlatmanın yolları açıklanmaktadır.
Temiz yeniden başlatma
Cihaz yanıt verdiğinde cihazı temiz bir şekilde yeniden başlatmak için şunu çalıştırın:
adb reboot
adb reboot
cihazı tam kapatma prosedüründen geçirir, değişiklikleri diske senkronize eder ve işlemlerin kapatıldığından emin olur. Mürekkep balığı ana bilgisayar işlemleri dahil değildir. Aygıtın kötü bir duruma girmesi ve yanıt vermemesi durumunda bu prosedür kullanılamayabilir.
Çok kiracılı bir yapılandırmada tek bir Mürekkepbalığı cihazının temiz bir şekilde yeniden başlatılmasını sağlamak için, adb-reboot
çalıştırırken hedef cihazın seri numarasını belirtin. Hedef cihaz belirtilmezse adb
hiçbir cihazı yeniden başlatmaz.
adb -s SERIAL reboot
Temiz olmayan yeniden başlatma
Cihaz yanıt vermediğinde kirli bir yeniden başlatma gerçekleştirmek için şunu çalıştırın:
restart_cvd
restart_cvd
Mürekkepbalığı aygıtını anında kapatarak kirli bir kapatma gerçekleştirir. restart_cvd
, pilin fiziksel bir cihazla bağlantısını kesip yeniden bağlamaya eşdeğerdir. Disk yazma işlemleri devam ediyorsa devam etmeyebilir. restart_cvd
çıkmadan önce cihazın tamamen yeniden başlatılmasını bekler.
Çok kiracılı bir yapılandırmada restart_cvd
, örnek grubundan tek bir örneği yeniden başlatır. Hangi Mürekkepbalığı örneğinin yeniden başlatılacağını belirtmek için instance_num
bayrağını kullanın.
restart_cvd --instance_num=N
--instance_num
kullanılmazsa örnek numarası varsayılan olarak 1
olur.
Farklı launch_cvd bayraklarını kullanarak yeniden başlatın
Bir veya daha fazla cihazı durdurmak ve farklı launch_cvd
işaretleriyle yeniden başlatmak için şunu çalıştırın:
stop_cvd
launch_cvd NEW_FLAG
stop_cvd
restart_cvd
benzer şekilde temiz olmayan bir kapatma işlemi gerçekleştirir. Cihazı, daha sonra farklı bir launch_cvd
komutuyla yeniden başlatılabilecek şekilde hareketsiz bir durumda bırakır. restart_cvd
olduğu gibi, disk yazma işlemleri diskle tam olarak senkronize edilmezse devam etmeyebilir. Verileri diske güvenli bir şekilde kaydetmek için önce adb reboot
çalıştırın.
adb reboot
stop_cvd
launch_cvd NEW_FLAG
launch_cvd
bayraklarında yapılan değişiklikler disk düzeninde yazma üzerine kopyalama uygulamasıyla uyumsuz bir değişikliği zorunlu kılarsa launch_cvd
eski disk değişikliklerini yok sayar ve orijinal disk durumuna sıfırlanır. Bayrakların tam listesi için bkz. Bayraklar .
Kaplama olmadan çalıştır
Hızlı sıfırlama desteğini devre dışı bırakmak için şunu çalıştırın:
launch_cvd --use_overlay=false
--use_overlay=false
Mürekkepbalığı disk dosyalarını okuma-yazma olarak değerlendirir ve değişiklikler bu dosyalara yayılır.
--use_overlay=false
ile varsayılan arasında değişiklik yapmak uyumluluk hatalarına neden olabilir. Önceki cihaz durumunu zorla temizlemek için şunu çalıştırın:
stop_cvd
rm $HOME/cuttlefish $HOME/cuttlefish_runtime $HOME/cuttlefish_assembly
Mürekkep balığı, kaplamalı ve kaplamasız akışlar arasındaki geçişte güvenli bir şekilde gezinemez; dolayısıyla bu değişiklik, Mürekkepbalığı yönetim durumunun tamamını siler. Harici disk dosyaları değiştirilirse ve daha sonra katmanlarla birlikte yeniden kullanılırsa, önceki değişiklikler temel durumun bir parçası olarak kabul edilir.
Bayraklar
Bir Mürekkepbalığı cihazını launch_cvd
kullanarak başlatırken bayrakları kullanarak bağımsız değişkenler ekleyebilirsiniz. Ancak belirli bayraklar için ( aynı kalması gereken bayraklar ), launch_cvd
komutları arasında bayraklar değiştirilirse veri kaybı meydana gelebilir. launch_cvd
, stop_cvd
ve ardından tekrar launch_cvd
içeren komut dizisini çalıştırırken veri kaybı yaşanmamasını sağlamak amacıyla, her launch_cvd
komutu için aynı işaretleri kullanın. Örneğin, ilk launch_cvd
bayrağı --kernel_path= KERNEL_PATH
argümanını içeriyorsa, ikinci launch_cvd
çağrısı da aynı --kernel_path= KERNEL_PATH
argümanını içermelidir, aksi takdirde stop_cvd
önce yapılan dosya sistemi değişiklikleri ikinci launch_cvd
çağrısında kaybolur. KERNEL_PATH
tarafından başvurulan dosyanın da aynı içeriğe sahip olması gerekir.
Bazı bayrakların launch_cvd
çağrıları arasında değiştirilmesi güvenlidir. Aşağıdaki bölümlerde veri kaybını önlemek için aynı kalması gereken bayraklar ve veri kaybı olmadan güvenli bir şekilde değiştirilebilen bayraklar listelenmektedir. Bireysel bayraklarla ilgili ayrıntılar için kaynağa bakın ( flags.cc
, disk_flags.cc
) veya launch_cvd --help
çalıştırın.
Aynı kalması gereken bayraklar
Veri kaybını önlemek için bu bayrakların bir launch_cvd
çağrısından diğerine aynı kalması gerekir:
-
--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
Değişebilecek bayraklar
Bu bayraklar, launch_cvd
çağrıları arasında veri kaybına neden olmadan güvenli bir şekilde değiştirilebilir:
-
--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