Use O_TRUNC + fd->Truncate() instead of dd

Originally CreateBlankImage was used for simple/small partition images
which needed to be reliably zeroed, so performance didn't really matter.
Now we will be using this utility function for larger, multi-GB
partitions, so let's make this code more efficient.

By opening the file with O_CREAT | O_TRUNC we can be sure that even
existing files will be truncated to zero length, and then using
fd->Truncate() they will be implicitly zeroed to the desired size. This
is more efficient as most filesystems don't need to write data blocks
for freelists.

Bug: 156286088
Change-Id: Ief47f2a085222a2f6a9c95b97a06ec2521e6e6f4
Merged-In: Ief47f2a085222a2f6a9c95b97a06ec2521e6e6f4
3 files changed
tree: e0e1c38a51eb629b83ace3e7c81c6c41dab72b9f
  1. common/
  2. guest/
  3. host/
  4. shared/
  5. tests/
  6. tools/
  7. vsoc_arm64/
  8. vsoc_x86/
  9. vsoc_x86_64/
  10. vsoc_x86_noapex/
  11. Android.bp
  12. Android.mk
  13. AndroidProducts.mk
  14. CleanSpec.mk
  15. default-permissions.xml
  16. dtb.img
  17. fetcher.mk
  18. host_package.mk
  19. OWNERS
  20. README.md
  21. TEST_MAPPING
README.md

So you want to try cuttlefish?

  1. 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
  1. Go to http://ci.android.com/
  2. Enter a branch name. Start with aosp-master if you don't know what you're looking for
  3. Navigate to aosp_cf_x86_phone and click on userdebug for the latest build
  4. Click on Artifacts
  5. 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
  6. Scroll down to cvd-host_package.tar.gz. You should always download a host package from the same build as your images.
  7. 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
  1. Launch cuttlefish with:

    $ HOME=$PWD ./bin/launch_cvd

  2. Stop cuttlefish with:

    $ HOME=$PWD ./bin/stop_cvd

So you want to debug cuttlefish?

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

$ ./bin/adb -e shell

So you want to see cuttlefish?

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!