Difference between revisions of "Funtoo Linux"

From Funtoo Linux
Jump to: navigation, search
(Funtoo Filesystem Hierarchy)
(46 intermediate revisions by 15 users not shown)
Line 1: Line 1:
= Funtoo Linux =
+
= Getting Started =
 +
Start by [[Funtoo Linux Installation|installing Funtoo]]. If you have questions, someone has probably asked them already in our [[Funtoo Linux FAQ]]. Otherwise, there are other [[Funtoo Wiki:Community portal|community resources]] available. For more information on the vision of Funtoo, see: [[vision]]
  
Related pages:
+
= Differences between Funtoo Linux and Gentoo Linux =
  
[[ Funtoo Linux Projects ]]
+
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.
  
[[ Funtoo Linux Installation ]]
+
Here is a basic overview of how Funtoo Linux differ from Gentoo Linux:
  
[[Funtoo Linux FAQ]]
+
{| {{Table}}
 
+
!||colspan="4" align="center" style="background-color: #ddf;"|stable||colspan="4" align="center" style="background-color: #f78888;"|current||colspan="4" align="center" style="background-color: #f70088;"|experimental
[[Funtoo Filesystem Hierarchy]]
+
|-
 
+
!Category
== Funtoo Primary Goals ==
+
|colspan="1" style="background-color: #ddf;"|
 
+
|style="background-color:#87CEEB;" |Gentoo Linux
I have a lot of technical goals for Funtoo, but the ''primary'' goal of Funtoo as a free software project is to create an environment where I can happily work on Gentoo-related and non-Gentoo-related technical efforts in a way that's compatible with my personal life, and have it be fun, too. In the sense, the name <tt>Funtoo</tt> is sort of a play on words on <tt>Gentoo</tt>, where Funtoo is sort of my own personal Gentoo that's also fun.
+
|style="background-color:#A0E75A;" |Funtoo Linux
 
+
|style="background-color: #ddf;"|
== Differences between Funtoo Linux and Gentoo Linux ==
+
|style="background-color: #f78888;"|
 
+
|style="background-color:#87CEEB;" |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.
+
|style="background-color:#A0E75A;" |Funtoo Linux
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |Gentoo Linux
 +
|style="background-color:#A0E75A;" |Funtoo Linux
 +
|style="background-color: #f70088;"|
 +
|-
 +
!portage
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |2.1.10.49
 +
|style="background-color:#A0E75A;" |2.3.3-r3 (funtoo)
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |~2.2.0_alpha100
 +
|style="background-color:#A0E75A;" |2.3.3-r3 (funtoo)
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |2.3.3-r3 (funtoo)
 +
|style="background-color: #f70088;"|
 +
|-
 +
!portage tree
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |rsync-based
 +
|style="background-color:#A0E75A;" |git-based
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |rsync-based
 +
|style="background-color:#A0E75A;" |git-based
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |git-based
 +
|style="background-color: #f70088;"|
 +
|-
 +
!glibc
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |2.13-r4
 +
|style="background-color:#A0E75A;" |2.11.3
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |2.14.1-r3
 +
|style="background-color:#A0E75A;" |2.13-r4
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |2.13-r4
 +
|style="background-color: #f70088;"|
 +
|-
 +
!gcc
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |4.5.3-r1
 +
|style="background-color:#A0E75A;" |4.4.5
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |4.5.3-r2
 +
|style="background-color:#A0E75A;" |4.6.2-r1
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |4.6.2-r1
 +
|style="background-color: #f70088;"|
 +
|-
 +
!udev
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |171-r5
 +
|style="background-color:#A0E75A;" |160-r3
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |182-r2/3
 +
|style="background-color:#A0E75A;" |171-r3
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |171-r3
 +
|style="background-color: #f70088;"|
 +
|-
 +
!init scripts
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |openrc
 +
|style="background-color:#A0E75A;" |openrc
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |openrc
 +
|style="background-color:#A0E75A;" |openrc
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |openrc
 +
|style="background-color: #f70088;"|
 +
|-
 +
!perl
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |5.12.4-r1
 +
|style="background-color:#A0E75A;" |5.12.4-r1
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |5.12.4-r2
 +
|style="background-color:#A0E75A;" |5.14.2
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |gentoo unstable
 +
|style="background-color: #f70088;"|
 +
|-
 +
!ruby
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |1.8.7_p357
 +
|style="background-color:#A0E75A;" |1.8.7_p357
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |1.8.7_p357
 +
|style="background-color:#A0E75A;" |1.8.7_p357
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |1.8.7_p357
 +
|style="background-color: #f70088;"|
 +
|-
 +
!core openresolv
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |no
 +
|style="background-color:#A0E75A;" |yes
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |no
 +
|style="background-color:#A0E75A;" |yes
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |yes
 +
|style="background-color: #f70088;"|
 +
|-
 +
!custom pkgs
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |[[Portage (Funtoo)|portage]], udev, grub, coreboot, openrc, and [http://github.com/funtoo/funtoo-overlay more]
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |[[Portage (Funtoo)|portage]], udev, grub, coreboot, openrc, and [http://github.com/funtoo/funtoo-overlay more]
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |[[Portage (Funtoo)|portage]], udev, grub, coreboot, openrc, and [http://github.com/funtoo/funtoo-overlay more]
 +
|style="background-color: #f70088;"|
 +
|-
 +
!merged overlays
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |None
 +
|style="background-color:#A0E75A;" |[https://github.com/slashbeast/foo-overlay slashbeast], [https://github.com/adessemond/bar-overlay A. Dessemond], [https://github.com/funtoo/flora flora]
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |None
 +
|style="background-color:#A0E75A;" |[https://github.com/slashbeast/foo-overlay slashbeast], [https://github.com/adessemond/bar-overlay A. Dessemond], [https://github.com/funtoo/flora flora]
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |[https://github.com/slashbeast/foo-overlay slashbeast], [https://github.com/adessemond/bar-overlay A. Dessemond], [https://github.com/funtoo/flora flora]
 +
|style="background-color: #f70088;"|
 +
|-
 +
!upstream tree
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |None
 +
|style="background-color:#A0E75A;" |gentoo stable
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |None
 +
|style="background-color:#A0E75A;" |gentoo unstable
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |gentoo unstable
 +
|style="background-color: #f70088;"|
 +
|-
 +
!||colspan="4" align="center" style="background-color: #ddf;"|stable||colspan="4" align="center" style="background-color: #f78888;"|current||colspan="4" align="center" style="background-color: #f70088;"|experimental
 +
|}
  
Here is a basic overview of how Funtoo Linux (stable and unstable) differ from Gentoo Linux:
+
= 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.
  
<table>
+
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:
<tr class="odd">
+
<td align="left">'''Category'''</td>
+
<td align="left">'''Gentoo Linux (stable)'''</td>
+
<td align="left">'''Funtoo Linux (stable)'''</td>
+
<td align="left">'''Gentoo Linux (unstable)'''</td>
+
<td align="left">'''Funtoo Linux (unstable)'''</td>
+
</tr>
+
<tr class="even">
+
<td align="left">-----------------</td>
+
<td align="left">--------------------------</td>
+
<td align="left">----------------------------------------</td>
+
<td align="left">-----------------------------</td>
+
<td align="left">----------------------------------------</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">portage</td>
+
<td align="left">2.1.8.3</td>
+
<td align="left">'''2.2'''</td>
+
<td align="left">'''2.2'''</td>
+
<td align="left">'''2.2'''</td>
+
</tr>
+
<tr class="even">
+
<td align="left">portage tree</td>
+
<td align="left">rsync-based</td>
+
<td align="left">'''git-based'''</td>
+
<td align="left">rsync-based</td>
+
<td align="left">'''git-based'''</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">glibc</td>
+
<td align="left">2.10.1</td>
+
<td align="left">2.10.1</td>
+
<td align="left">2.11.2</td>
+
<td align="left">2.10.1</td>
+
</tr>
+
<tr class="even">
+
<td align="left">gcc</td>
+
<td align="left">4.3.4</td>
+
<td align="left">4.4.3</td>
+
<td align="left">4.4.4-r1</td>
+
<td align="left">4.4.3</td>
+
</tr>
+
  
<tr class="odd">
+
* 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'.
<td align="left">udev</td>
+
<td align="left">149</td>
+
<td align="left">135</td>
+
<td align="left">160</td>
+
<td align="left">146</td>
+
</tr>
+
<tr class="even">
+
<td align="left">init scripts</td>
+
<td align="left">baselayout-1</td>
+
<td align="left">openrc</td>
+
<td align="left">openrc</td>
+
<td align="left">openrc</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">perl</td>
+
<td align="left">5.8.8</td>
+
<td align="left">5.10.1</td>
+
<td align="left">'''5.12.1'''</td>
+
<td align="left">5.10.1</td>
+
</tr>
+
<tr class="even">
+
<td align="left">ruby</td>
+
<td align="left">1.8.7</td>
+
<td align="left">1.8.7</td>
+
<td align="left">'''1.9.2_rc2'''</td>
+
<td align="left">1.8.7</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">core openresolv</td>
+
<td align="left">no</td>
+
<td align="left">'''yes'''</td>
+
<td align="left">no</td>
+
<td align="left">'''yes'''</td>
+
</tr>
+
<tr class="even">
+
<td align="left">custom pkgs</td>
+
<td align="left">N/A</td>
+
<td align="left">udev, grub, coreboot, openrc and [http://github.com/funtoo/funtoo-overlay more]</td>
+
<td align="left">N/A</td>
+
<td align="left">udev, grub, coreboot, openrc and [http://github.com/funtoo/funtoo-overlay more]</td>
+
</tr>
+
<tr class="odd">
+
<td align="left">merged overlays</td>
+
<td align="left">None</td>
+
<td align="left">None</td>
+
<td align="left">None</td>
+
<td align="left">None</td>
+
</tr>
+
<tr class="even">
+
<td align="left">upstream tree</td>
+
<td align="left">None</td>
+
<td align="left">gentoo stable</td>
+
<td align="left">None</td>
+
<td align="left">gentoo unstable</td>
+
</tr>
+
</table>
+
  
 +
* '''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 ==
+
= 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.
 
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.
Line 132: Line 214:
 
These improvements are detailed below:
 
These improvements are detailed below:
  
=== Git-based Portage Tree ===
+
== 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.
 
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.
Line 142: Line 224:
 
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.
 
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 ===
+
== 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 on a near-daily basis. Our tree has a few significant differences from the Gentoo Portage tree, which are covered in more detail in our [http://www.funtoo.org/en/articles/funtoo/quick-install-howto/ Quick Install Guide]
+
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, which are covered in more detail in our [http://www.funtoo.org/en/articles/funtoo/quick-install-howto/ Quick Install Guide]
  
 
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.
 
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 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 Gentoo and Funtoo. These stages are available on [[the Funtoo homepage]].
+
[[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 Gentoo and Funtoo. These stages are available on the [[Download|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.
 
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 ===
+
== 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.
 
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.
Line 162: Line 244:
  
  
=== Core System Changes ===
+
== 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 <tt>sys-fs/udev</tt> package, its own <tt>sys-apps/baselayout</tt>, its own <tt>sys-apps/openrc</tt> (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]]).
  
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 <tt>sys-fs/udev</tt> package, its own <tt>sys-apps/baselayout</tt>, its own <tt>sys-apps/openrc</tt> (which is used by default), and a few other improvements here and there.
+
== Articles ==
 +
On the [[:Category:Articles|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.
  
As of mid-July 2009, I'm planning to integrate OpenResolv, OpenRC 0.5.x and dhcpcd-5.x into the core system, as well as migrate to a simplified and more capable &quot;direct-drive&quot; network configuration system. These changes, as well as their rationale, are detailed in [http://groups.google.com/group/funtoo-dev/browse_thread/thread/5d07653d5ae683ec this funtoo-dev mailing list thread].
+
Every now and then, I will be adding interesting new content, such as the intriguing [http://www.funtoo.org/en/security/slowloris/ 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.
  
=== Articles ===
+
= What's in the Works =
 +
In addition to various ongoing [[:Category:Projects|Funtoo Linux Projects]], there are other efforts.
  
On `the Funtoo homepage`, you'll notice a section called &quot;Return of the Articles.&quot; I am gradually revising and updating my original IBM developerWorks Linux articles and adding them to the site as I have time.
+
== Funtoo Filesystem Hierarchy ==
  
Every now and then, I'm adding interesting new content, such as the intriguing [[en/security/slowloris/|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.
+
The [[Funtoo Filesystem Hierarchy]] seeks to document the specific nuances of the Funtoo fileystem hierarchy beyond what is in the [http://pathname.com/fhs/ Filesystem Hierarchy Standard] already.
  
This new documentation effort has also included a migration from Gentoo's Guide XML format to ReStructuredText, part of Python's docutils, which I am now using for all my documentation.
+
[[Category:Funtoo]]

Revision as of 20:41, 18 November 2012

Contents

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.

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.1.10.49 2.3.3-r3 (funtoo) ~2.2.0_alpha100 2.3.3-r3 (funtoo) N/A 2.3.3-r3 (funtoo)
portage tree rsync-based git-based rsync-based git-based N/A git-based
glibc 2.13-r4 2.11.3 2.14.1-r3 2.13-r4 N/A 2.13-r4
gcc 4.5.3-r1 4.4.5 4.5.3-r2 4.6.2-r1 N/A 4.6.2-r1
udev 171-r5 160-r3 182-r2/3 171-r3 N/A 171-r3
init scripts openrc openrc openrc openrc N/A openrc
perl 5.12.4-r1 5.12.4-r1 5.12.4-r2 5.14.2 N/A gentoo unstable
ruby 1.8.7_p357 1.8.7_p357 1.8.7_p357 1.8.7_p357 N/A 1.8.7_p357
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, which are covered in more detail in our Quick Install Guide

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 Gentoo and 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).

Articles

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.

Personal tools
Namespaces

Variants
Actions
Categories
Toolbox
Stuff