[Azure] Temporary disk on a FreeBSD VM

The FreeBSD image on VM depot works great but lack an essential feature: the temporary disk of the virtual machine is not mounted!

How to mount disk once

The VM temporary drive is formatted in NTFS, so we need to install NTFS driver:

# pkg install fusefs-ntfs

Then load the driver:

# kldload fuse

And mount the drive:

# mkdir /mnt/vmtmpdrive
# ntfs-3g /dev/ad1s1 /mnt/vmtmpdrive

Now we can check that the drive is mounted properly:

$ df -h
Filesystem         Size    Used   Avail Capacity  Mounted on
/dev/gpt/rootfs     19G    4.7G     13G    26%    /
devfs              1.0K    1.0K      0B   100%    /dev
/dev/fuse          135G    108M    135G     0%    /mnt/vmtmpdrive

How to mount disk at each boot

Optionally, if you want to mount the temporary disk each time the machine start, you can create a service.

First you need to enable the NTFS driver at boot time. Edit /boot/loader.conf and add:

fuse_load=YES

Then, create /etc/rc.d/vmtmpdrive and paste:

#!/bin/sh
#
# PROVIDE: vmtmpdrive
# REQUIRE: waagent

case $1 in
    *start)
        echo "Mounting VM temporary drive..."
        /usr/local/bin/ntfs-3g /dev/ad1s1 /mnt/vmtmpdrive
        ;;

    *stop)
        echo "Unmounting VM temporary drive..."
        umount /mnt/vmtmpdrive
        ;;
esac

Then run:

# chmod 755 /etc/rc.d/vmtmpdrive

That’s it!