Here is how I recently went through the process of setting up a Raspberry Pi 4 running FreeBSD 15 to share a 1 TB USB hard drive to my local network via NFS.
Before we get to this point you’ll need to download the Pi aarch64 sdcard image from freebsd.org. Decompress the image (xz –decompress) and write it to a micro sd card with dd or your favorite imaging tool.
Boot the pi up, change root’s password, make a normal user, add them to wheel.
ntpdate -u pool.ntp.org will set your clock, and then you can install pkg or update the system with freebsd-update fetch install.
Now, onto the main point of this… we’re going to wipe a USB HDD, format it with UFS2 and share it on our lan via nfs.
Step 1 Identify your USB disk
camcontrol devlist
Find your USB disk, e.g., /dev/da0. Be sure it is correct.
Step 2 Wipe and partition the USB disk
gpart destroy -F /dev/da0
gpart create -s gpt /dev/da0
gpart add -t freebsd-ufs /dev/da0
This creates /dev/da0p1.
Step 3 Format the partition as UFS
newfs -U /dev/da0p1
Optional label:
newfs -U -L datadisk /dev/da0p1
Step 4 Create a mount point and mount the disk
mkdir -p /export/data
mount /dev/da0p1 /export/data
df -h /export/data
Step 5 Make it mount automatically at boot
Edit /etc/fstab and add:
/dev/da0p1 /export/data ufs rw 2 2
Mounting without reboot:
mkdir -p /export/data
chown ben:ben /export/data # Your name here!
mount /export/data
Step 6 Set up NFS exports
Edit /etc/exports and add:
/export/data -network 192.168.1.0 -mask 255.255.255.0 -maproot=root -alldirs
Step 7 Start NFS services
Enable at boot, run these commands:
sysrc rpcbind_enable=YES
sysrc nfs_server_enable=YES
sysrc mountd_enable=YES
That will make changes to /etc/rc.conf for you! Now we run:
service rpcbind start
service mountd start
service nfsd start
Step 8 Verify the export
showmount -e
You should see:
/export/data 192.168.1.0
Step 9 Mount the NFS share your client PC
sudo mkdir -p /mnt/bsdpi
sudo chown ben:ben /mnt/bsdpi
sudo mount -t nfs bsdpi.lan:/export/data /mnt/bsdpi
Optionally you can put this in your fstab, probably want to do it in a way where it won’t keep your machine from booting if it isn’t online though!
