Coder Social home page Coder Social logo

freenas's Introduction

FreeNAS 8.x is a complete different software compared to 0.7. There is a
complete feature parity between 0.7 (legacy) and 8.x with plugins, there
are also some features in 8.x that aren't available in 0.7.
There isn't an upgrade path from 0.7 to 8.x.

To build the system (experts only):

Requirements:

- Your build environment must be FreeBSD 8.1-RELEASE or newer.
- amd64 or i386 for i386 builds; an amd64 for amd64 builds.
- You will need the following ports/packages when compiling anything
  FreeNAS-related:
  - devel/git-subversion
  - lang/python26 or lang/python27

- You need the following additional ports/packages to build the FreeNAS base
  OS image:
  - sysutils/cdrtools

- You need the following additional ports/packages to build the plugins jail:
  - ports-mgmt/pbi-manager

- The port security/sudo is recommended but not required, if you do not have
  the port installed you can run the commands listed in this doc as root.

- If you have the devel/gamin port installed, you may encounter errors
  during the FreeNAS build when it tries to unmount nullfs file systems.
  To fix this, you either can remove the port, or create a config file
  /usr/local/etc/gamin/gaminrc with the following entries to disable gamin
  notifications on certain file systems:

    fsset nullfs none
    fsset ufs none
    fsset zfs none

  See:  http://people.gnome.org/~veillard/gamin/config.html for more details.

Building the System Quickstart Flow:

- Checking out the code from git:

% git clone --depth 1 git://github.com/freenas/freenas.git
% cd freenas

- Use the build script

% sudo sh build/do_build.sh

This will fetch TrueOS and ports for the build. However it is recommended that you maintain a local git mirror to speed up further builds:

% git clone git://github.com/freenas/ports.git ${HOME}/ports
% git clone git://github.com/trueos/trueos.git ${HOME}/trueos

To build using those local mirrors run:

% sudo env GIT_REPO=${HOME}/trueos GIT_PORTS_REPO=${HOME}/ports sh build/do_build.sh

That's it.

The End Result:

If your build completes successfully, you'll have an image in
obj.yyyy/FreeNAS-VVVV-XXXX-yyyy.img.xz where:

- VVVV is the 'release' branch version or.
- XXXX is the git commit hash from the FreeNAS repo.
- yyyy is either i386 or amd64 depending on your platform and what was
  provided via $FREENAS_ARCH on the command line / via the environment.

This is a compressed raw disk image, and needs to be decompressed and
converted to your favorite VM container format before use, flashed on to a USB
key fob, etc.  There will also be a CD/DVD image,
obj.yyyy/FreeNAS-VVVV-XXXX-yyyy.iso, that you can use to install/upgrade
FreeNAS.

Common workflows:

1. Building an i386 on an amd64 build server:

% sudo env FREENAS_ARCH=i386 sh build/do_build.sh

2. Forcing an source / ports update:

% sudo sh build/do_build.sh -u

3. Updating ports patches:

% sudo rm -Rf os-base/$FREENAS_ARCH/ports/packages/
% sudo sh build/do_build.sh -u

NOTE: when things get smarter (and they will.. the developers feel your pain
too :/..), nuking individual packages won't be required; this will require
fiddling around with the ports infrastructure, which is a semi-large
undertaking. Thus, I wouldn't expect this to be enhanced anytime soon :(..
(but it's annoyed the author of this document enough that it's time to fix
things properly!).

4. Update source and ports, patch, and rebuild FreeBSD:

% sudo sh build/do_build.sh -fu

5. Force a build from scratch (nukes packages, rebuild FreeBSD):

% sudo sh build/do_build.sh -ff

6. Build everything required (src, ports) but don't produce GUI upgrade/CD
   images:

% sudo sh build/do_build.sh -- -i

Submitting Build Bugs:

Please execute the 'build/build_bug.sh' command and follow the directions
described by the script.

freenas's People

Contributors

william-gr avatar delphij avatar bsdimp avatar splbio avatar rodrigc avatar noprobs avatar jpaetzel avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.