Use NFS to create a VirtualBox “shared folder” for a FreeBSD 8.0 Guest

Whilst tinkering with NFS, I found a neat application for the lack of shared folders support for my FreeBSD 8.0 VirtualBox guest running in an OpenSolaris host. Although there is a FreeBSD port of VirtualBox Guest Additions, it doesn’t seem to do too much else other than enable seamless host/guest mouse integration.

This is an insecure configuration, and I certainly would not recommend running it on anything other than a private configuration. All the same, this works quite well for me, so may be of use for someone else.

I’m using an OpenSolaris snv_134 x64 host, running VirtualBox 3.1.6 with a FreeBSD 8.0 x86 guest machine installed configured according to https://davekoelmeyer.wordpress.com/2010/03/31/freebsd-8-0-x86-and-kde4-full-screen-in-virtualbox-3-1-4/. The name of my host serving up NFS exports is afterburner.

 

Let’s configure the OpenSolaris host for NFS. First, create an NFS share point named “testshare” at /export:

$ pfexec mkdir /export/testshare
$ pfexec chmod 777 /export/testshare

 

Create an NFS share group named “testgroup”, and verify the operation:

$ pfexec sharemgr create testgroup

$ sharemgr list -v                
default	enabled	nfs
zfs	enabled	
testgroup	enabled	nfs

 

Add the share /export/testshare to the share group “testgroup”, and verify the operation:

$ pfexec sharemgr add-share -s /export/testshare -d "this is a test NFS share" testgroup

$ sharemgr show -v                                                                      
default
zfs
testgroup
	  /export/testshare	"this is a test NFS share"

$ share
-@testgroup     /export/testshare   rw   "this is a test NFS share"

 

Now, configure FreeBSD to automagically mount the NFS share when accessed, using amd (no, not that one). This is a modification of the very helpful guide here, and I agree with that author’s assertion that documentation for those new to amd is somewhat lacking.

 

So, enable amd in FreeBSD by adding amd_enable=”YES” and amd_flags=”” to /etc/rc.conf. My /etc/rc.conf file (in total) reads:

# -- sysinstall generated deltas -- # Sun Mar 28 04:08:02 2010
# Created: Sun Mar 28 04:08:02 2010
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
amd_enable="YES"
amd_flags=""
local_startup="${local_startup} /usr/local/kde4/etc/rc.d"
kdm4_enable="YES"
hald_enable="YES"
dbus_enable="YES"
vboxguest_enable="YES"
hostname="freebsd"
ifconfig_em0="DHCP"
keymap="us.iso"
moused_enable="YES"
sshd_enable="YES"

 

Create the file /etc/amd.conf containing the following:

[global]
auto_dir        = /.amd
log_file        = /var/log/amd.log
log_options     = error,fatal,warning
map_type        = file
search_path     = /etc

[/nfs]
map_name        = amd.nfs

 

Create the file /etc/amd.nfs containing the following (this should be all on one line, but for blog formatting sake I have added a line break directly after the first equals sign, and there should be no space between it and the following double quotation mark):

testshare  fs:=${autodir}${path};type:=program;mount:=
"/sbin/mount mount -t nfs -o rw,-N afterburner:/export/testshare ${fs}";

(Note that afterburner is the name of my host system serving up the NFS export, and I’ve added this to my FreeBSD guest’s hosts file at /etc/hosts. You would of course modify this to suit your own setup.)

 

Finally, start the amd daemon:

# /etc/rc.d/amd start

 

Now, in the FreeBSD guest open up a terminal and cd to /nfs/testshare. amd should mount the location as an NFS share automagically, and you can now exchange files between the VirtualBox host and guest environments.

For ease-of-use I’ve created a symlink on the respective desktops of my host and guest OSs:

NFS shared folder between OpenSolaris and FreeBSD

Advertisements

One thought on “Use NFS to create a VirtualBox “shared folder” for a FreeBSD 8.0 Guest

  1. Pingback: 2010 in review « Dave Koelmeyer

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s