Add more information to the README, and improve formatting
- Virtualization check
- GCE nested virtualization guide
- Clarified the relationship between the dpkg and apt commands
- Added a reminder to reboot
Test: Validated that the `dpkg || apt` command works
Change-Id: Id5ffc411bc649e1de12ef1b3107fc8ff921d0ed2
diff --git a/README.md b/README.md
index 945e4f7..bd51d26 100644
--- a/README.md
+++ b/README.md
@@ -1,49 +1,66 @@
-# So you want to try cuttlefish?
+# Cuttlefish Getting Started
-1. Download, build, and install the host debian package:
+## Try Cuttlefish
-```bash
-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
-```
+1. Make sure virtualization with KVM is available.
-2. Go to http://ci.android.com/
-3. Enter a branch name. Start with `aosp-master` if you don't know what you're
+ ```bash
+ grep -cw vmx /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].
+
+ [GCE guide]: https://cloud.google.com/compute/docs/instances/enable-nested-virtualization-vm-instances
+
+2. Download, build, and install the host debian package:
+
+ ```bash
+ 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
-4. Navigate to `aosp_cf_x86_phone` and click on `userdebug` for the latest build
-5. Click on `Artifacts`
-6. Scroll down to the OTA images. These packages look like
+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
-7. Scroll down to `cvd-host_package.tar.gz`. You should always download a host
+8. Scroll down to `cvd-host_package.tar.gz`. You should always download a host
package from the same build as your images.
-8. On your local system, combine the packages:
+9. On your local system, combine the packages:
-```bash
-mkdir cf
-cd cf
-tar xvf /path/to/cvd-host_package.tar.gz
-unzip /path/to/aosp_cf_x86_phone-img-xxxxxx.zip
-```
+ ```bash
+ mkdir cf
+ cd cf
+ tar xvf /path/to/cvd-host_package.tar.gz
+ unzip /path/to/aosp_cf_x86_phone-img-xxxxxx.zip
+ ```
-9. Launch cuttlefish with:
+10. Launch cuttlefish with:
`$ HOME=$PWD ./bin/launch_cvd`
-10. Stop cuttlefish with:
+11. Stop cuttlefish with:
`$ HOME=$PWD ./bin/stop_cvd`
-# So you want to debug cuttlefish?
+## Debug Cuttlefish
You can use `adb` to debug it, just like a physical device:
`$ ./bin/adb -e shell`
-# So you want to see cuttlefish?
+## Launch Viewer
You can use the [TightVNC JViewer](https://www.tightvnc.com/download.php). Once
you have downloaded the *TightVNC Java Viewer JAR in a ZIP archive*, run it with