TrueOS Core Operating System Repo
Clone or download
Latest commit 12090e5 Oct 13, 2018
Permalink
Failed to load latest commit information.
Jenkins Disable META_MODE in freenas build Oct 13, 2018
bin Merge branch 'master' of https://github.com/freebsd/freebsd into fbsd… Sep 22, 2018
cddl Merge branch 'master' of https://github.com/freebsd/freebsd into fbsd… Sep 8, 2018
contrib Merge remote-tracking branch 'freebsd/master' into trueos-master Oct 9, 2018
crypto Merge remote-tracking branch 'freebsd/master' into trueos-master Oct 9, 2018
etc Remove some other poudriere bits Sep 22, 2018
gnu Merge branch 'master' of https://github.com/freebsd/freebsd into fbsd… Sep 22, 2018
include Merge remote-tracking branch 'freebsd/master' into trueos-master Oct 9, 2018
kerberos5 krb5-config build: Remove gratuitous escaping Aug 12, 2018
lib Merge remote-tracking branch 'freebsd/master' into trueos-master Oct 9, 2018
libexec Merge remote-tracking branch 'freebsd/master' into trueos-master Oct 9, 2018
release clang60 disable more stuff Oct 13, 2018
rescue Avoid referencing private lib names directly. Nov 10, 2017
sbin Merge pull request #178 from miwi-fbsd/trueos-master Oct 11, 2018
secure Merge remote-tracking branch 'freebsd/master' into trueos-master Oct 9, 2018
share Check for which pkg-static to use, some builders may have old location Oct 12, 2018
stand Merge remote-tracking branch 'freebsd/master' into trueos-master Oct 9, 2018
sys Bump FreeBSD_Version since we've changed defaults from Libre->OpenSSL Oct 11, 2018
targets Merge branch 'master' of https://github.com/freebsd/freebsd into miwi… Aug 21, 2018
tests Import TrueOS tests from old trueos-server project Oct 3, 2018
tools Merge remote-tracking branch 'freebsd/master' into trueos-master Oct 9, 2018
usr.bin Merge pull request #178 from miwi-fbsd/trueos-master Oct 11, 2018
usr.sbin Merge pull request #178 from miwi-fbsd/trueos-master Oct 11, 2018
.arcconfig callsign isn't required anymore Sep 29, 2016
.arclint arc lint: ignore /tests/ in chmod Dec 19, 2017
.gitattributes Remove spuriously added svn properties Aug 2, 2018
.gitignore Ignore _.universe-toolchain file. Jul 1, 2018
COPYRIGHT Remove 'All Rights Reserved' from the collection copyright and templa… May 9, 2018
Jenkinsfile Speed up the clean / post-clean process also, no need to linger Sep 24, 2018
LOCKS LOCKS: update current locks Jun 9, 2018
MAINTAINERS Add pointer to freebsd-numerics for libm. Jul 16, 2018
Makefile Add ability to run 'make ports' when you want to skip base / world Sep 23, 2018
Makefile.inc1 Add detection for /usr/bin/jq and /usr/local/bin/jq Oct 12, 2018
Makefile.libcompat Fix non-FreeBSD host lib32 build for TARGET=amd64 Aug 23, 2018
Makefile.sys.inc AUTO_OBJ: For all top-level targets enforce using an OBJDIR. Dec 5, 2017
ObsoleteFiles.inc libbe(3)/bectl(8): Make consistent with beadm Aug 24, 2018
README README: add generic notes about GENERIC and NOTES Jun 17, 2018
README.md Update documentation on LibreSSL and kernel/world flags Oct 10, 2018
UPDATING lualoader: Create a module blacklist, add DRM modules to it Oct 7, 2018

README.md

Build Status Waffle.io - Columns and their card count

TrueOS Source:

This is the top level TrueOS source directory. It is more or less a fork of FreeBSD.

The last sync of freebsd was r338887 on Sept 22th 2018, in the commit e97b59664c6c3a579544dfb371d601bc08094a68.

TrueOS Differences:

In what ways does TrueOS differ from stock FreeBSD you may be wondering? Read on for a list of the distinctions in no particular order:

  • Bi-Annual Release Cycle - TrueOS follows traditional FreeBSD HEAD and cuts new releases on a 6 months schedule which includes OS and Ports.

  • GitHub - TrueOS uses Git/GitHub as the "Source of truth", Pull-Requests welcome!

  • CI - Our Jenkins build cluster is constantly building new versions of TrueOS for testing.

  • dhcpcd - dhcpcd has been integrated directly into base, allowing more advanced IPv4 and IPv6 network configuration

  • OpenRC - This replaces the legacy rc.d scripts with OpenRC's init.d subsystem, allowing faster boots, as well as a host of other service improvements.

  • Package Base - TrueOS is installed and based on using Packages for the Base OS.

  • pkg in base - To go along with using base system packages, TrueOS has also integrated PKG directly in the base system.

  • Root NSS Certs - Since it really is a bummer to not be able to use HTTPS out of box...

  • Custom Installer - TrueOS includes its own pc-sysinstall installation system, along with text-based front-end. This allows a wide variety of ZFS-based installation options, as well as scriptability.

  • JSON Build Manifest - TrueOS supports a customizable JSON manifest for building. This allows TrueOS to run poudriere and assemble installation images for a variety of use-cases.

  • Single repo - Base packages and ports now share a single repository which allows base packages to depend upon ports, such as llvm60 or jq for -devel packages

  • Clang disabled from base - This allows us to buildworld in a fraction of the time, while using a more up to date version of clang/llvm from ports

  • More as they come...

Build Instructions:

The following instructions may be used to generate TrueOS installation images:

make buildworld buildkernel
make packages
cd release && make iso

If you want to re-use the base packages and just re-run port builds, you may do so with:

make ports

To change the default manifest from CI to something else, set the TRUEOS_MANIFEST variable to the full path. I.E:

# setenv TRUEOS_MANIFEST /usr/src/release/manifests/trueos-master.json
# make buildworld buildkernel
 ...

Compiler Instructions:

By default TrueOS now uses the external llvm compiler from ports. This will be included with "TrueNAS-runtime-development" when installed.

To change from the default (current llvm60) you can run:

# compiler-bootstrap llvm70

Currently only llvm60 and llvm70 are supported. If you have both installed you can toggle between them by re-running the "compiler-bootstrap" command as necessary.

Using Poudriere:

Since TrueOS uses an external toolchain, an additional step is required before using stock Poudriere. This is to install the base pkg environment and boot-strap the external compiler. To create a Poudriere jail on TrueOS, run the following:

# mk-base-jail -t poudriere -c llvm60 <directory>

You can then import this prepared jail into poudriere using the following command:

# poudriere jail -c -j myjailname -m null -M <directory> -v 12.0-RELEASE

Replace "myjailname" and 12.0-RELEASE" as necessary.