&os; on Google Cloud Steve Wills swills@FreeBSD.org The script used to create gcloud images More detail on how to create and use a gcloud image

Google Cloud is a cloud computing platform that allows users to run hosted services and services in a cloud maintained by Google. The goal of this project is to provide an easy way to create and manage &os; installations running on Google Cloud.

The good news:

FreeBSD 10.1 runs fine. You can create an image and start it up and login via standard ssh, via the gcloud command or via the web console (ssh in a web browser window). More detail on how to do all this can be found in the links. Basically, you should be able to: &prompt.user; gcutil addimage freebsd-101-release-amd64-20150101032704 gs://swills-test-bucket/FreeBSD-10.1-RELEASE-amd64-20150101032704.tar.gz Then spin up an image using: &prompt.user; gcloud compute instances create --zone us-central1-b --image freebsd-101-release-amd64-20150101032704 --boot-disk-size 20GB gtest1 These commands are part of the google-cloud-sdk port, which contains all the commands to interact with Google Cloud. There is also a google-daemon port which is used in running instances to create users and set them up and a google-startup-scripts port which handles running startup/shutdown scripts as specified in node metadata.

Additionally, I've brought back the firstboot-growfs port so that new instances will grow their root filesystem. (Thanks to Colin Percival for having created that port initially.)

There is also a firstboot-freebsd-update port which can be used to update a system on first boot but is currently disabled. See below. Similarly, the firstboot-pkgs port/scripts will install specified packages on first boot.

Overall, Google Cloud Compute is quite nice; instances spin up in about 60 seconds and it is very reasonably priced with automatic discounts for longer term usage. There is a $300 credit for first time users that also makes it free to try out. That credit covers quite a lot of time, and the instances are pretty fast, as well, even the ones without SSDs.

The bad news:

Google doesn't make sharing non-official images as easy as AWS, so you have to create your own using my public tar file. The tar was created using the script in the links section. That script can be used to produce customized images, even though there are no official image (nor will there be any time soon).

There are some issues running FreeBSD on Google Cloud, listed in the tasks section.

The 8 and 16 cpu instances seem to reboot randomly.

Repeated UFS panics that Google folks have reported, but I don't think those are particular to Google Cloud. The panic message is "ffs_valloc dup alloc".

Running freebsd-update causes the system to become unbootable, so updates don't work. (Reboots work fine otherwise.)

There is no gcimagebundle command in the Ports Collectiong so you can't easily create an image from a running machine.

There are a few minor issue with the startup script that is supposed to regenerate ssh keys (for when you create an image from an existing system).

10.1 works, but 10.0 won't boot; other versions remain untested.

The kern.vm_guest sysctl node does not detect that it is in a guest.

The vtnet driver needs wq disabled on 16 cpu boxes, but is just disabled everywhere for now since that is easier.

There is a work needed for the Google safe_format_and_mount command which formats and mounts newly attached disks, but this is just a nicety really.

I need to look into irq affinity for vtnet.

We need to support virtualized clocks; bryanv@ is working on this. In fact, all his ongoing work in the virt area would probably make things work better.

It would be nice if there as the ability to disable the spinner before the loader, which clutters up the console log. The ability to disable it is in HEAD; hopefully it will be MFCd to 10-STABLE before 10.2.