iXsystems’ FreeNAS snapshot

Written by admin on .

Yesterday, iXsystems upload a snapshot of their new FreeNAS release on the SVN.
The new FreeNAS is based on nanoBSD, then here are all the steps for generate the disk image of this release (from a FreeBSD 8.1 amd64).
Refer to the README file for more information.

cd /usr/src/tools/tools/nanobsd
svn co https://freenas.svn.sourceforge.net/svnroot/freenas/experimental/ix freenas
cd freenas 

Then for build the 64bit release:

sh ../../nanobsd.sh -c freenas64.conf

Of for build the 32 bit release:

sh ../../nanobsd.sh -c freenas32.conf

The resulted disk image will be found in:
/tmp/YOUR-LOGIN/obj.freenas64|32/_.disk.full

(Don’t forget to copy the disk image in other place and before a reboot if you have the ‘clear_tmp_enable=”YES”‘ in you rc.conf!)
Cross-compilation of a 32bit release should be possible, but didn’t works for the moment (stop during compile of ports/net/unison).

The generated image can only boot from the first IDE device (/dev/ad0s1a) because of original nanoBSD script limitation (removed in BSDRP).

If you would test it from an USB key, first step is to copy it on your key (/dev/da0 for this example):

dd if=_.disk.full of=/dev/da0 bs=128k

And we need to adapt it, first by setting glabel on each partitions:

glabel label cfg /dev/da0s3
glabel label data /dev/da0s4

glabel label freenas /dev/da0s1a

Then mount the root filesystem of the FreeNAS:

mount /dev/label/freenas /mnt

And add this line to boot/loader.conf (it’s a FreeBSD 8.1 boot from usb «feature»):
kern.cam.boot_delay=10000

Modify the etc/fstab like that:
/dev/label/freenas / ufs ro 1 1
/dev/label/cfg /cfg ufs rw,noauto 2 2
/dev/label/data /data ufs rw 2 2

And at last, modify conf/default/etc/remount too:

mount -o ro /dev/label/cfg

Unmount the key:

umount /mnt

Now you can try to boot from your usb key (login: root, no password).
FreeNAS is configured as DHCP client, you can try to connect to the very experimental WebGUI, but as wrote in the readme, this first snapshot is only a testing of the «base» system.