freebsd on google compute engine

Jun 13, 2015  

I had tried running FreeBSD on Google Compute Engine previously, but given up. Last week I was suddenly reminded of this, and after Googling around a bit, came across this script by Steve Wills (Thanks, Steve!) that automated the task of building a “GCE-ready” image on an existing FreeBSD system.

Hooray! No, wait, I don’t have an existing FreeBSD system; that’s sort of what this is all about. This minor despondency was short-lived, since I had temporarily forgotten how we now live with computers within computers within computers (give or take a layer). So I installed the VMWare Workstation, downloaded the iso for 10.1-RELEASE, and booted it up.

All you need is the Google Cloud SDK, which is available under the ports tree, so something like the following should suffice:

$ cd /usr/ports/net/google-cloud-sdk
$ make install

Then grab the script and run it.

$ curl > /tmp/
$ chmod a+x /tmp/
$ /tmp/
base.txz                                      100% of   63 MB 7041 kBps 00m09s
kernel.txz                                    100% of   84 MB 3187 kBps 00m27s
Creating image
Creating filesystem
Installing base into image
Installing kernel into image
Setting up image
Finishing image
Creating partitioned file
Creating image tar
Now run:

gcloud auth login
gsutil cp FreeBSD-10.1-RELEASE-amd64-20150612191810.tar.gz gs://swills-test-bucket
gcutil addimage freebsd-101-release-amd64-20150612191810 gs://swills-test-bucket/FreeBSD-10.1-RELEASE-amd64-20150612191810.tar.gz

As you might have noticed, the script ends with a helpful suggestion for the subsequent commands to run. Caveats:

  • If you’re doing all this within a VM like I was, you’ll want to run gcloud auth login --no-launch-browser
  • You might need to run gcloud config set project <project ID> (that’s project ID, not project name)
  • (obviously) replace swills-test-bucket with your bucket (you can create one at the cloud console (Storage -> Cloud Storage -> Storage Browser)

After this, a few clicks should get you a new instance (remember to select the custom image uploaded earlier), and SSHing into it should show you /etc/motd (which is still a plain old file, and not, you know, this abomination).