Author Archives: Craig Rodrigues

Setting up a VM for doing GSoC work (part 3)

For previous post, see: Setting up a VM for doing GSoC work (part 2)

After following the previous configuration steps, Neeraj was able to get the following working inside VMWare VMPlayer:

  • FreeBSD-10-CURRENT from a snapshot ISO
  • X working and displaying graphics
  • GNOME desktop
  • 600 binary packages installed, consisting of X, GNOME, and other utilities

Here is a screenshot:

Gnome Desktop




Setting up a VM for doing GSoC work (part 2)

For previous post, see Setting up a VM for doing GSoC work

Since Neeraj is using a Windows 7 machine, where FreeBSD is in a VM, I asked him to install the following programs under Windows:

In the FreeBSD VM, I asked him to add this to /etc/rc.conf :


and this to /etc/ssh/sshd_config :

PermitRootLogin yes

This allowed him to (1) log into the VM via SSH using Putty, (2) transfer some files to and from the VM using WinSCP

Configuring sshd is documented in the FreeBSD Handbook here:


One point of confusion for Neeraj was that some config files are located in /usr/local/etc (for certain ports),but the certain config files are under /etc.  For example, the  sshd config files are under /etc/ssh/  (and not /usr/local/etc/ssh/).  Depending on the Linux distribution, on Linux there is generally no /usr/local directory, and all config files go under /etc.  This is one slight point of confusion for users moving from Linux to FreeBSD.  Nothing too difficult, but something worth noting.

FreeBSD for startups?

On June 17, 2013, Stanford University is offering a free online course on coursera:



About the Course

Spiritual sequel to Peter Thiel’s CS183 course on startups. Bridges the gap between academic computer science and production software engineering. Fast-paced introduction to key tools and techniques (command line, dotfiles, text editor, distributed version control, debugging, testing, documentation, reading code, deployments), featuring guest appearances by senior engineers from successful startups and large-scale academic projects. Over the course of the class, students will build a command line application, expose it as a web service, and then link other students’ applications and services together to build an HTML5 mobile app. General principles are illustrated through modern Javascript and the latest web technologies, including Node, Backbone, Coffeescript, Bootstrap, Git, and Github.
The notes for this course are also available here:
This course is quite interesting, because it really shows how a lot of startups in Silicon Valley are rapidly bootstrapped at a technology level.  These days a lot of these startups use Linux out of the box, and don’t even bother looking at the alternatives.
Obviously, I like FreeBSD a lot, and think FreeBSD is a great platform for startups.
What are the things that we as a FreeBSD community can do to improve the FreeBSD platform,
and make it a no-brainer decision for startups to use it for their new companies?
The startups of today become the billion dollar companies of tomorrow, so it is important that FreeBSD is a part
of that.
I’d love to hear the ideas of people in the FreeBSD community for how to make FreeBSD better for startups!


Using github for GSoC work

These days, a lot of open source projects and even startup companies are using git and Github to host their code and do rapid development.  Although the FreeBSD project’s SCM is Subversion,
it is still possible to use Github to work with FreeBSD thanks to the work of FreeBSD developers who have set up scripts which mirror the FreeBSD code in Github (see: ).

Using the Github repository, it should be possible for a GSoC student to:

  1. Look at the FreeBSD source code at
  2. Create their own copy of the FreeBSD code in Github by following the instructions at “Fork a Repo”,
  3. Check out the FreeBSD code from their Github copy and rebuild the world and kernel by following the instructions at “Rebuilding world”
  4. Modify the code, debug the kernel, and do other fun stuff by reading “Developer’s handbook”,
  5. Follow some of the ideas in Alfred Perlstein’s blog post for Basing a Commerical Product on FreeBSD Using Git



It would be fun to try this all out!!

Setting up a VM for doing GSoC work

I am helping Neeraj Rawat set up a VM so that he can do FreeBSD development for Google Summer of Code (GSoC).

I am interested in learning what the “Out of the Box Experience” is like for students and newcomers to FreeBSD.  The technologies that students are exposed to today, and the development environments that they are comfortable in on Linux/Unix systems is far different than when I started using Unix systems in 1992 when I was a  chemical engineering student at the University of Toronto.

Neeraj likes the Geany IDE.  This a simple graphical IDE is written using the GTK2 toolkit.  Luckily, there is a FreeBSD port of Geany.

Neeraj’s home computer is a Windows 7 box, and he is using VMWare Player to run FreeBSD in a virtual machine.

Since Neeraj wants to work on file system stuff with FUSE, I am asking him to use FreeBSD-10-CURRENT, instead of FreeBSD 9.1 release.

I told Neeraj to do the following:

  1.   Install that image into a Virtual Machine, or on a dedicated PC computer using the instructions at:
  2. Once the system is booted up, create a configuration file /usr/local/etc/pkg.conf and in this file has one line:packagesite:
  3. Use the “pkg” utility to install packages, as documented here:
  4. Install some basic packages with these commands:pkg install devel/git-subversion devel/subversion shells/bash shells/zsh
    pkg install x11/xorg x11-drivers/xf86-input-vmmouse x11-drivers/xf86-video-vmware
    pkg install x11/gnome2
    pkg install devel/geany


  5. Edit /etc/rc.conf and add these entries:gnome_enable=”YES”

    This is covered in these links:

Neeraj is not finished yet.  One of the steps where we got stuck was in step (3).  Neeraj had typed:


and not


Apparently for the “pkg” utility, in the pkg.conf file, the “packagesite:” must have a space after the colon and before the URL, otherwise it will fail.  When the FreeBSD ports team gets all the infrastructure in place to build FreeBSD pkgng packages, we will be able to delete this line and not use a 3rd party provider of FreeBSD packages for 10-CURRENT.

See more details at: Setting up a VM for doing GSoC work (part 2)


Google Summer of Code 2013

Every year Google funds a project called Google Summer of Code .  Google works with different open source projects, and actually pays students to hack on open source projects during their summer break.  If a student is interested in participating in Google Summer of Code (GSoC), they must write a proposal for a project that they want to work on for a specific open source project, and submit it.  These proposals are evaluated by the open source project and Google.  If approved, the student can work on their project, but must work with a mentor in the open source project.

FreeBSD has participated in GSoC for many years.

A few months ago, Neeraj Rawat, who is a computer science student at Indian Institute of Technology, Delhi (IITD) sent me an e-mail and asked if I could mentor him on a FUSE file system project for FreeBSD.  I have never done this before, so agreed.  I am very interested in bringing new blood into the FreeBSD project.  I am interested in learning what the pain points are for new developers to start with FreeBSD, so as a project, we in FreeBSD can improve things.  Pedro Giffuni has also agreed to mentor this project.  Pedro has a lot of experience with FreeBSD file systems and FUSE.

GSoC has a published schedule for when the GSoC work must start, and when it must end.  Neeraj has submitted his proposal, and we will learn if it is accepted by the end of May 2013.  Hopefully the proposal will be accepted, and we can do some interesting things over the summer with FUSE and FreeBSD!

BSDCan 2013

From May 15 – 18, I attended BSDCan and FreeBSD DevSummit in Ottawa, Canada.
These were both excellent conferences.

There were many excellent presentations during this conference, but my favorites were:

With these two technologies, the bar has definitely been raised for FreeBSD to be used in applications which require storage (ZFS) and virtualization (BHyve).

There were more presentations that I wanted to attend, but there was just not enough time!