Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/truenas/core-build

TrueNAS CORE/Enterprise Build System
https://github.com/truenas/core-build

enterprise freenas truenas

Last synced: 2 months ago
JSON representation

TrueNAS CORE/Enterprise Build System

Awesome Lists containing this project

README

        


Join Discord
Join Forums
File Issue

# Building TrueNAS 13 CORE/Enterprise from Scratch

Note: All these commands must be run as `root`.

## Requirements:

* Hardware

* CPU: amd64-compatible 64-bit Intel or AMD CPU.
* 16GB memory, or the equivalent in memory plus swap space
* at least 80GB of free disk space

* Operating System

* The build environment must be FreeBSD 13.x (or 13-STABLE)

## Make Targets

* ```checkout``` creates a local working copy of the git repositories with
```git clone```

* ```update``` does a ```git pull``` to update the local working copy with
any changes made to the git repositories since the last update

* ```release``` actually builds the FreeNAS release

* ```clean``` removes previously built files

## Procedure

* Install git
```
pkg install -y git
rehash
```

* Clone the build repository (```/usr/build``` is used for this example):

```
git clone https://github.com/truenas/build /usr/build
```

* Install Dependencies

```
cd /usr/build
make bootstrap-pkgs
python3 -m ensurepip
pip3 install six
```

* First-time checkout of source:

```
make checkout
```

A FreeNAS release is built by first updating the source, then building:

```
make update
make release
```

To build the SDK version:

```
make update
make release BUILD_SDK=yes
```

Clean builds take a while, not just due to operating system builds, but
because poudriere has to build all of the ports. Later builds are faster,
only rebuilding files that need it.

Use ```make clean``` to remove all built files.

## Results

Built files are in the ```freenas/_BE``` subdirectory,
```/usr/build/freenas/_BE``` in this example.

ISO files: ```freenas/_BE/release/TrueNAS-13-MASTER-{date}/x64/```.

Update files: ```freenas/_BE/release/```.

Log files: ```freenas/_BE/objs/logs/```.