Funtoo Linux

Revision as of 08:03, May 25, 2013 by Oleg (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Getting Started

Start by installing Funtoo. If you have questions, someone has probably asked them already in our Funtoo Linux FAQ. Otherwise, there are other community resources available. For more information on the vision of Funtoo, see: vision

Differences between Funtoo Linux and Gentoo Linux

From an installation perspective, the main difference between Funtoo Linux and Gentoo Linux is that Funtoo Linux has a different Portage tree. We store our Portage tree in a git repository. Our Portage tree does track the Gentoo repository (we import Gentoo changes almost every day,) but our tree does contain some significant changes from Gentoo's tree.

For the purpose of users Funtoo Linux decided to run a three modeled tree, the stable, the current and the experimental tree. Experimental tree is designed for Core Team in general to work on new features and is a seperated tree not available by keywords, for stable Funtoo uses the "*" arch-keyword and for current the "~*" arch-keyword. Most of the time current and experimental do not differ, but in cases of new features or toolchain updates both differ as some testings might break your system, so we like to keep this away from users while we test. Read more about it under What are the differences between 'stable', 'current' and 'experimental' ?

Here is a basic overview of how Funtoo Linux differ from Gentoo Linux:

stable current experimental
Category Gentoo Linux Funtoo Linux Gentoo Linux Funtoo Linux Gentoo Linux Funtoo Linux
portage 2.3.5-r5 (funtoo) 2.3.5-r5 (funtoo) N/A 2.3.5-r5 (funtoo)
portage tree rsync-based git-based rsync-based git-based N/A git-based
glibc 2.15-r3 2.15-r3 2.16.0 2.15-r3 N/A 2.15-r3
gcc 4.6.3 4.6.3 4.6.3 4.6.3 N/A 4.6.3
udev 171-r9 171-r8 197-r1 171-r8 N/A 171-r8
init scripts openrc openrc openrc openrc N/A openrc
perl 5.12.4-r1 5.12.4-r1 5.16.1 5.16.1 N/A 5.16.1
ruby 1.8.7_p370 1.8.7_p370 1.8.7_p371 1.8.7_p371 N/A 1.8.7_p371
core openresolv no yes no yes N/A yes
custom pkgs N/A portage, udev, grub, coreboot, openrc, and more N/A portage, udev, grub, coreboot, openrc, and more N/A portage, udev, grub, coreboot, openrc, and more
merged overlays None slashbeast, A. Dessemond, flora None slashbeast, A. Dessemond, flora N/A slashbeast, A. Dessemond, flora
upstream tree None gentoo stable None gentoo unstable N/A gentoo unstable
stable current experimental

What are the differences between 'stable', 'current' and 'experimental' ?

Funtoo Linux follows a continuous development cycle. This means that new packages are continuously added to the Portage Tree and others are periodically improved with patches and bug fixes.

When a package is considered to be stable, it is tagged as such, and means that you are very unlikely to have trouble with it during installation and in daily usage. All other packages are typically tagged as 'current' meaning they have undergone less widespread testing and you are more likely to experience issues with the software itself, or a package build failure. However, in day-to-day experience:

  • Funtoo 'experimental' is the the development tree for CoreTeam members, it generally is the Funtoo 'current' tree to which tools are added that are right now at a testing, if one of these testing circles is done and finished the 'experimental' tree is merged into the 'current' tree and will so long not difer from it, until new packages with heavy impact are there for being tested. This tree is just designed for CoreTeam members as troubles might be more common here than in 'current'.
  • Funtoo 'current' is almost as stable as Funtoo 'stable', although some troubles may appear from time to time. Some distributions name their 'current' branch 'unstable' but we do not because it implies that "unstable == unusable" (Funtoo current IS usable for a daily usage in production environments, depending on your requirements).
  • Funtoo 'stable' can, per definition, lag a long ways behind 'current'. This branch is recommended for setting up servers which have standard and very well supported hardware for a long time. If you have a desktop machine which requires the most recent drivers / kernel available using 'stable' may not be a solution for you. Efforts are also made to ensure compatibility with stable Red Hat Enterprise Linux 5 kernels for use in environments where stability is of the utmost importance.

What's Been Done So Far

My technical goals for Funtoo Linux are to focus on improving the core Gentoo system, ie. what you'd find inside a stage3. I also have been working to improve general Gentoo technologies, such as migrating Portage to git, and ensuring that Funtoo is easily buildable in an automated way, by creating Metro. These changes are intended to empower me to improve Funtoo more easily, and are shared with you so that you can benefit from them as well.

These improvements are detailed below:

Git-based Portage Tree

One of the first things I did was migrate Gentoo's development Portage tree from cvs to git, and migrate Gentoo's user Portage tree from rsync to git. This was done to help me work more effectively, since git is simply a much more powerful and efficient tool than cvs.

Zack Medico, Portage/emerge maintainer, has enhanced the 2.2 version of Portage so that it is compatible with git. This allows users to pull a Portage tree from a git repository. This can often be more efficient than rsync, although the git repository does take up more space on disk. But I did not switch away from rsync because it wasn't fast enough.

More important for me is the fact that users can pull from the same repositories that I use for Funtoo development. This simplifies Funtoo infrastructure considerably, keeping things more fun for me :)

Git also provides integrity-checking functionality that is superior to that which currently exists in Portage, which will allow improved data integrity checks in future versions of Portage. This work is not yet finished, or even really started, but by using git we are starting to move in this direction. This work will continue as I have time.

Forked Tree

Funtoo has its own Portage tree that is 99% identical to Gentoo's Portage tree. I merge changes from Gentoo into our tree every 12 hours, using an automated process. Our tree has a few significant differences from the Gentoo Portage tree.

I created my own Portage tree for a multitude of reasons. The main reason for creating the tree was so I could get improvements into my Portage tree immediately, changes which Gentoo developers may or may not be interested in adding to the official Gentoo tree. I don't want to wait around or try to convince someone to add a fix I need.

Metro and Daily Builds

Metro is a tool I created to build Gentoo and Funtoo releases in an automated way. For around a year, I have been using Gentoo's catalyst, and now Metro to build daily releases of Funtoo. These stages are available on the Download page.

Metro is a big improvement over Gentoo's automated build tool, catalyst, which I originally wrote but has not aged well over the years. Metro is still missing some functionality that exists in catalyst, most notably LiveCD support (I haven't created a Funtoo LiveCD yet, which is why :) but in nearly all other respects is much more capable than catalyst. I will continue to maintain and improve Metro as I have time. The daily builds serve as a good ongoing test for Metro as well as the integrity of the Funtoo Portage tree.

Forkable - Empowering Developers

Combine the transition to git with Metro, and Funtoo is now actually quite easy to fork, unlike Gentoo. If you wanted to create your own derivative of Funtoo or Gentoo, you could simply clone my git repository and then set up Metro to build releases of this variant. With some basic familiarity with git, this can all be accomplished by an single individual in a single day.

Why is this important? If you love Gentoo like I do, but want to work on Gentoo independently, so that you have your own personal "fun, too" project where you are Chief Architect, you have all the tools you need to make this happen. There is no longer a need to become an official Gentoo developer in order to grow in your Gentoo knowledge.

Core System Changes

Funtoo has several core system changes, and I plan to continue to focus on improving the core system quite a bit. Funtoo has its own sys-fs/udev package, its own sys-apps/baselayout, its own sys-apps/openrc (which is used by default), along with various other packages and improvements. Work is currently under way on a Unified Configuration structure as well as new, improved profile method which allows specifying multiple profiles (See Multiple Profiles).


On the Articles page, you'll notice a number of technical articles and HOWTOs. My original IBM developerWorks Linux articles are gradually being added to the site and updated as time permits.

Every now and then, I will be adding interesting new content, such as the intriguing Slowloris DOS Mitigation Guide, which details various mitigations for the Slowloris DOS that affects the Apache Web server. This article was co-authored with Ryan Vick, a security researcher who is a friend of mine.

What's in the Works

In addition to various ongoing Funtoo Linux Projects, there are other efforts.

Funtoo Filesystem Hierarchy

The Funtoo Filesystem Hierarchy seeks to document the specific nuances of the Funtoo fileystem hierarchy beyond what is in the Filesystem Hierarchy Standard already.