Install shell_and_utilities_* for first stage console

If the device uses a dedicated recovery partition,
shell_and_utilities_vendor_ramdisk are installed so that sh, toybox
etc. are available under /system/bin in the final ramdisk. They are
installed to the vendor ramdisk instead of the recovery ramdisk so that
they are available in both recovery mode and Android mode (i.e.
regardless of whether the recovery ramdisk is concatenated or not).

If the device installs recovery resources to vendor_ramdisk,
shell_and_utilities_recovery are installed so that sh, toybox
etc. are available under /system/bin in the final ramdisk. First stage
console is started before switching root into /first_stage_ramdisk.
Because recovery resources are moved to vendor ramdisk, sh, toybox etc.
are eventually installed to vendor ramdisk.

This change alone has no effect. By default, TARGET_DEDICATED_RECOVERY
is not set unless it is set from environment variables.
linker.recovery and shell_and_utilities_recovery are installed
by default in base_vendor.mk, so when it is not set, no new modules
are installed.

Bug: 156098440
Test: pass
Change-Id: I453568962b41ebba5c1501fec24a6b3fc2e4d039
1 file changed
tree: f86b5cf0b9860d385af02ef286b13805058665ce
  1. build/
  2. common/
  3. guest/
  4. host/
  5. recovery/
  6. shared/
  7. tests/
  8. tools/
  9. vsoc_arm64/
  10. vsoc_arm64_only/
  11. vsoc_arm_only/
  12. vsoc_x86/
  13. vsoc_x86_64/
  14. vsoc_x86_64_only/
  15. vsoc_x86_noapex/
  16. vsoc_x86_only/
  17. Android.bp
  18. Android.mk
  19. AndroidProducts.mk
  20. CleanSpec.mk
  21. default-permissions.xml
  22. dtb.img
  23. fetcher.mk
  24. host_package.mk
  25. METADATA
  26. OWNERS
  27. PREUPLOAD.cfg
  28. README.md
  29. required_images
  30. rustfmt.toml
  31. TEST_MAPPING
README.md

Cuttlefish Getting Started

Try Cuttlefish

  1. Make sure virtualization with KVM is available.

     grep -c -w "vmx\|svm" /proc/cpuinfo
    

    This should return a non-zero value. If running on a cloud machine, this may take cloud-vendor-specific steps to enable. For Google Compute Engine specifically, see the GCE guide.

  2. Download, build, and install the host debian package:

    git clone https://github.com/google/android-cuttlefish
    cd android-cuttlefish
    debuild -i -us -uc -b
    sudo dpkg -i ../cuttlefish-common_*_amd64.deb || sudo apt-get install -f
    sudo reboot
    

    The reboot will trigger installing additional kernel modules and applying udev rules.

  3. Go to http://ci.android.com/

  4. Enter a branch name. Start with aosp-master if you don‘t know what you’re looking for

  5. Navigate to aosp_cf_x86_phone and click on userdebug for the latest build

  6. Click on Artifacts

  7. Scroll down to the OTA images. These packages look like aosp_cf_x86_phone-img-xxxxxx.zip -- it will always have img in the name. Download this file

  8. Scroll down to cvd-host_package.tar.gz. You should always download a host package from the same build as your images.

  9. On your local system, combine the packages:

    mkdir cf
    cd cf
    tar xvf /path/to/cvd-host_package.tar.gz
    unzip /path/to/aosp_cf_x86_phone-img-xxxxxx.zip
    
  10. Launch cuttlefish with:

$ HOME=$PWD ./bin/launch_cvd

  1. Stop cuttlefish with:

$ HOME=$PWD ./bin/stop_cvd

Debug Cuttlefish

You can use adb to debug it, just like a physical device:

$ ./bin/adb -e shell

Launch Viewer

You can use the TightVNC JViewer. Once you have downloaded the TightVNC Java Viewer JAR in a ZIP archive, run it with

$ java -jar tightvnc-jviewer.jar -ScalingFactor=50 -Tunneling=no -host=localhost -port=6444

Click “Connect” and you should see a lock screen!