Difference between pages "Funtoo Linux FAQ" and "Funtoo Linux"

From Funtoo
(Difference between pages)
Jump to: navigation, search
 
m (Gentoo buuilds no longer provided)
 
Line 1: Line 1:
== Common Misconceptions, Rumors, etc. ==
+
= 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]]
  
=== Does Funtoo Linux use a Red Hat kernel? ===
+
= Differences between Funtoo Linux and Gentoo Linux =
  
Funtoo Linux users are free to choose their own kernel, just like in Gentoo Linux, although RHEL kernel compatibility is a priority of this project, so that enterprise users have the option of using
+
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.
such kernels. We maintain instructions for how to get a RHEL5-based kernel running under Funtoo Linux, and also ensure that this option is officially supported. See [[RHEL5 Kernel HOWTO]].
+
  
=== Does Funtoo use an overlay? ===
+
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 [[Funtoo Linux#What are the differences between 'stable', 'current' and 'experimental' ?|What are the differences between 'stable', 'current' and 'experimental' ?]]
  
Yes and no. We do have an overlay at [http://www.github.com/funtoo/funtoo-overlay GitHub] that contains all the Funtoo modifications to Gentoo. However, the overlay is intended for developers, and users should use our integrated git-based Portage trees with all the overlay changes merged in. The reason for this is that our integrated Portage trees also have profile patches applied, which are stored within our overlay at funtoo/patches, if you want to check them out. So if you just use our overlay on top of the Gentoo tree, it will not work properly.
+
Here is a basic overview of how Funtoo Linux differ from Gentoo Linux:
  
=== Is there a lot of junk in your Portage tree? ===
+
{| {{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
 +
|-
 +
!Category
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |Gentoo Linux
 +
|style="background-color:#A0E75A;" |Funtoo Linux
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |Gentoo Linux
 +
|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.11.31
 +
|style="background-color:#A0E75A;" |2.3.5-r5 (funtoo)
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" | 2.1.11.40
 +
|style="background-color:#A0E75A;" |2.3.5-r5 (funtoo)
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |2.3.5-r5 (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.15-r3
 +
|style="background-color:#A0E75A;" |2.15-r3
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |2.16.0
 +
|style="background-color:#A0E75A;" |2.15-r3
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |2.15-r3
 +
|style="background-color: #f70088;"|
 +
|-
 +
!gcc
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |4.6.3
 +
|style="background-color:#A0E75A;" |4.6.3
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |4.6.3
 +
|style="background-color:#A0E75A;" |4.6.3
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |4.6.3
 +
|style="background-color: #f70088;"|
 +
|-
 +
!udev
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |171-r9
 +
|style="background-color:#A0E75A;" |171-r8
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |197-r1
 +
|style="background-color:#A0E75A;" |171-r8
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |171-r8
 +
|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.16.1
 +
|style="background-color:#A0E75A;" |5.16.1
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |5.16.1
 +
|style="background-color: #f70088;"|
 +
|-
 +
!ruby
 +
|colspan="1" style="background-color: #ddf;"|
 +
|style="background-color:#87CEEB;" |1.8.7_p370
 +
|style="background-color:#A0E75A;" |1.8.7_p370
 +
|style="background-color: #ddf;"|
 +
|style="background-color: #f78888;"|
 +
|style="background-color:#87CEEB;" |1.8.7_p371
 +
|style="background-color:#A0E75A;" |1.8.7_p371
 +
|style="background-color: #f78888;"|
 +
|style="background-color: #f70088;"|
 +
|style="background-color:#87CEEB;" |N/A
 +
|style="background-color:#A0E75A;" |1.8.7_p371
 +
|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
 +
|}
  
No. At one point, we had a lot of overlays merged in to our Portage tree, such as the sunrise overlay. We now have a very clean Portage tree, and sunrise is no longer part of the tree. All Funtoo changes to the tree can be found in our overlay at [http://www.github.com/funtoo/funtoo-overlay GitHub]. All other changes come from Gentoo and a few other overlays (see [[Portage Tree]].) Funtoo Linux changes are very well-maintained and organized in our overlay.
+
= What are the differences between 'stable', 'current' and 'experimental' ? =
  
== Using Funtoo Linux, Portage and Git ==
+
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.
  
=== How do I start using Funtoo Linux? ===
+
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:
  
For information on how to start using Funtoo Linux, see the [[Funtoo Linux Quick Install Guide]].
+
* 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'.
  
=== Is it possible to convert an existing Gentoo Linux install to Funtoo Linux? ===
+
* '''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).
  
Yes, it is possible, but I am no longer supporting this method as it can be problematic and is always sub-optimal to installing Funtoo Linux from a stage3.
+
* 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.
  
=== I can't use <tt>emerge --sync</tt> to download an initial Portage tree. ===
+
= What's Been Done So Far =
  
Make sure you have the following in <tt>/etc/portage/make.conf</tt>:
+
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.
<pre>
+
SYNC="git://github.com/funtoo/ports-2012.git"
+
</pre>
+
  
{{Fancynote| Recent versions of portage do not require hard-coded SYNC variables. In fact, after you have synced and to, you should remove the SYNC line from your make.conf.}}
+
These improvements are detailed below:
  
=== I try to emerge something and Portage complains that a digest is not found. ===
+
== Git-based Portage Tree ==
  
You are using a Funtoo mini-manifest tree and forgot to enable mini-manifest. To do this, add the following to <tt>/etc/portage/make.conf</tt>:
+
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.
<pre>
+
FEATURES="mini-manifest"
+
</pre>
+
  
=== What is mini-manifest? ===
+
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.
  
Funtoo's default Portage tree has gone on a diet - Manifests now include only entries for distfiles (source tarballs.) For everything else, we rely on git's internal integrity-checking mechanisms which is based on SHA1 digests.
+
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 :)
  
In addition, our mini-Portage tree does not include ChangeLogs for additional space savings. This allows us to offer a Portage tree snapshot that is under 30MB in size when compressed.
+
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.
  
=== How do I update my git-based Portage tree? ===
+
== Forked Tree ==
  
If you already have an existing git-based Portage tree, you can update it by typing:
+
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.
  
<console>
+
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## emerge --sync
+
</console>
+
  
=== I set up my initial git-based Portage tree, but <tt>/usr/portage</tt> seems to be empty. ===
+
== Metro and Daily Builds ==
  
You forgot to type:
+
[[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|Download page]].
  
<console>
+
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.
###i## cd /usr/portage
+
###i## git checkout funtoo.org
+
</console>
+
Funtoo Linux's portage tree snapshot ships with a mostly empty branch active by default to reduce the size of the resultant snapshot tarball.
+
  
=== What is different with Funtoo's UTF-8 support? ===
+
== Forkable - Empowering Developers ==
  
Funtoo Linux has UTF-8 enabled by default, even for the <tt>root</tt> user. This allows UTF-8 files to be edited without issue, <tt>root</tt> GNU screen sessions to display UTF-8 character sets properly, etc. The classic sort order of <tt>ls -a</tt> has been preserved by setting <tt>LC_COLLATE</tt> to <tt>POSIX</tt>. All other locale settings inherit the system default defined in the <tt>LANG</tt> variable, which is set to <tt>en_US.UTF-8</tt>.
+
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.
  
=== What if I want to use a non-English locale/language? ===
+
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 &quot;fun, too&quot; 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.
  
I recommend two things. First, it's strongly recommended that you always use a UTF-8-based locale.
 
  
The next thing I recommend is to try to avoid changing the global system LANG setting, and instead set the LANG setting on a per-user basis by adding the desired LANG setting to your <tt>~/.bashrc</tt>. This will preserve English log output in <tt>/var/log</tt> and make it easier to search for more common matching English strings on the Internet when you need help.
 
  
If you really want to change the default system LANG setting (taking into account the paragraph above,) then it's recommended that you create your own <tt>/etc/env.d/02locale</tt> file that contains something like this:
+
== Core System Changes ==
<pre>
+
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]]).
LANG="fr_CA.UTF-8"
+
</pre>
+
You will need to run <tt>env-update</tt> and <tt>source /etc/profile</tt> to apply changes immediately to any open shells, and reboot to apply changes fully.
+
  
=== What is different with Funtoo's Ruby? ===
+
== 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.
  
Funtoo Linux tracks Gentoo's Ruby, but we do have one change for ruby-1.9 and greater - the binary name is changed with /usr/bin/ruby1.9 instead of Gentoo's /usr/bin/ruby19. This makes the versioning consistent with Python binaries and MacOS X. This means that for ruby-1.9 and greater. While the path to the binary has changed, all Portage variables are the same as Gentoo, so you should use &quot;ruby19&quot; for the <tt>RUBY_TARGETS</tt> setting in <tt>/etc/make.conf</tt>.
+
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.
  
=== Ruby 1.9 is masked. How do I use it? ===
+
= What's in the Works =
 +
In addition to various ongoing [[:Category:Projects|Funtoo Linux Projects]], there are other efforts.
  
Add the following to <tt>/etc/portage/make.conf</tt>:
+
== Funtoo Filesystem Hierarchy ==
<pre>
+
RUBY_TARGETS="ruby19"
+
</pre>
+
  
Then unmask ruby-1.9 as follows:
+
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.
  
<console>
+
[[Category:Funtoo]]
###i## install -d /etc/portage
+
###i## echo "dev-lang/ruby:1.9" >> /etc/portage/package.unmask
+
</console>
+
If you are using Funtoo stable, then you will also need to do this:
+
 
+
<console>
+
###i## echo "dev-lang/ruby:1.9" >> /etc/portage/package.keywords
+
</console>
+
 
+
=== Why is Funtoo Linux still an older udev? ===
+
 
+
Funtoo Linux currently uses udev-160 and generally updates udev less frequently than in Gentoo Linux.
+
 
+
=== What is the minimum kernel version I can use with Funtoo Linux? ===
+
 
+
Without making changes to the default version of the udev package, Funtoo Linux is compatible with kernel versions 2.6.27 and greater. To use earlier kernels or enterprise kernels, see below.
+
 
+
=== I need to use a kernel earlier than 2.6.27. What should I do? ===
+
 
+
To use a RHEL5 or RHEL5-based kernel, you will need to use udev-146 or earlier. Funtoo Linux provides these versions in its portage tree. All you need to do is add the following line to <tt>/etc/portage/package.mask</tt>:
+
<pre>
+
>=sys-fs/udev-160
+
</pre>
+
 
+
Then, emerge {{Package|sys-fs/udev}}:
+
 
+
<console>
+
###i## emerge udev
+
</console>
+
 
+
You can now reboot with a RHEL5-based kernel and udev will still work properly. <tt>udev-135</tt> is also available for even earlier kernels.
+
 
+
=== How do I use a RHEL5-based kernel, such as openvz-sources-2.6.18* with Funtoo? ===
+
 
+
The steps required to do this, including downgrading udev and emerging gcc-4.1.2, can be found in the [[RHEL5 Kernel HOWTO]]
+
 
+
=== Why is package.mask a directory? ===
+
 
+
I decided to convert <tt>/usr/portage/profiles/package.mask</tt> to a directory as soon as I discovered that this was a supported feature in the current Portage. This allows us to maintain package.mask data more effectively.
+
 
+
=== Git complains and aborts when I emerge --sync. ===
+
 
+
It appears that a previous git merge was interrupted or did not complete, leaving your portage tree in an intermediate state. Typically, this can be fixed by typing:
+
 
+
<console>
+
###i## cd /usr/portage
+
###i## git reset --hard origin/funtoo.org
+
</console>
+
This should restore your portage tree to a consistent state and allow future <tt>emerge --sync</tt> commands to complete successfully.
+
 
+
If this doesn't work, then you may have a conflicted merge. Maybe you modified some local ebuilds? To view conflicts, type <tt>git diff --stat</tt> from within the <tt>/usr/portage</tt> directory. You can choose to either resolve these conflicts or revert back to the official Funtoo Portage tree.
+
 
+
If you want to throw away your local changes and simply use the Funtoo Portage tree, you'll need to remove all the files in <tt>/usr/portage</tt> besides the <tt>.git</tt> directory, and then trying the <tt>git reset --hard origin/funtoo.org</tt> command again, as follows:
+
 
+
<console>
+
###i## cd /usr/portage
+
###i## mv distfiles ..
+
###i## rm -rf * .gitignore
+
###i## git reset --hard origin/funtoo.org
+
###i## mv ../distfiles .
+
</console>
+
Now everything should be working again.
+
 
+
=== How do I tell if a problem I am having originates from Gentoo or Funtoo? ===
+
 
+
You can tell if there are any Funtoo changes to an ebuild by browsing the [http://www.github.com/funtoo/funtoo-overlay funtoo-overlay]. All the Funtoo-specific ebuilds can be found in our overlay. If you see an ebuild in my overlay, then we use my version ''instead of'' the Gentoo version. If you don't see it in the funtoo overlay, then it comes from Gentoo.
+
 
+
=== How can I see the differences between the Gentoo and Funtoo Portage trees? ===
+
 
+
In the old days, this was tricky, but now you just look at the [http://www.github.com/funtoo/funtoo-overlay funtoo-overlay] for a complete repository of all the Funtoo-specific stuff. Everything ''not'' in the Funtoo overlay comes from Gentoo, with a few exceptions -- see [[Portage Tree]] for details.
+
 
+
=== Is Paludis compatible with the Funtoo Portage tree? ===
+
 
+
Paludis does not appear to be compatible with the Funtoo Portage tree, unfortunately. It does not support the <tt>package.mask</tt> directory without additional hooks, and also does not support merging device nodes. These features are supported by Portage and we use both of these capabilities. I think that both <tt>package.mask</tt> (and <tt>package.keywords</tt>, etc.) directories are a good idea, and I also think it's a good idea for the package manager to support device nodes, which is particularly useful for the <tt>udev</tt> and <tt>baselayout</tt> ebuilds. Funtoo Linux has separate versions of these packages, and these ebuilds are easier to maintain if device nodes are correctly supported by the package manger, and the <tt>package.mask</tt> directory is a great help to us as well.
+
 
+
We could maintain a patched version of Paludis that would be useable with the Funtoo Portage tree, but I don't want to get into the business of supporting a non-standard package manager as the upstream project seems not seem very supportive of getting these compatibility issues resolved, and thus this could turn into a maintenance burden for Funtoo. So I'd rather just not support Paludis for now.
+
 
+
=== What about pkgcore? ===
+
 
+
Pkgcore is not currently compatible with Funtoo Linux but efforts are under way to resolve this.
+
 
+
=== How do I report a bug? ===
+
 
+
The best way to report your bug is to describe the issue you are having on the [http://groups.google.com/group/funtoo-dev funtoo-dev mailing list]. Another option is to ask for support in the [irc://irc.freenode.net/funtoo #funtoo]. In general, it's best to contact us first about an issue you are having, rather than opening a Gentoo bug report, unless you are quite familiar with the issue and are fairly certain that it is not a Funtoo Linux issue.
+
 
+
If you report a bug to Gentoo that may impact Funtoo Linux in some way, please post information about it to the [http://groups.google.com/group/funtoo-dev funtoo-dev mailing list] so we are aware of the issue.
+
 
+
* More informations: [[Reporting Bugs|Guidelines for Reporting Bugs]].
+
 
+
=== How do I become a Funtoo developer? ===
+
 
+
Funtoo is a personal project of mine, so I'm the only real developer. However, I involve everyone on the [http://groups.google.com/group/funtoo-dev funtoo-dev mailing list] and [irc://irc.freenode.net/funtoo #funtoo] in what I am doing so that patches, feedback, requests, etc. can be shared. My advice is to get involved in the Funtoo community on the mailing list and irc channel.
+
 
+
== General Funtoo Stuff ==
+
 
+
=== What is funtoo.org? ===
+
 
+
Funtoo.org is the online home of Daniel Robbins (me) and is a place to put all my stuff.
+
 
+
=== What kind of stuff? ===
+
 
+
Well, I have Funtoo Linux, which is a Gentoo Linux variant. Then I have technical articles -- some new, and some updated versions of originals that appeared on IBM developerWorks.
+
 
+
Then I have [[Metro]], an operating system build tool, and I have [[Keychain]], which is a tool to help you manage RSA and DSA keys for ssh.
+
 
+
So Funtoo is not just Funtoo Linux.
+
 
+
=== What is 'Funtoo' all about? And 'Funtoo Linux'? ===
+
 
+
<tt>Funtoo</tt> by itself refers to this site, or the larger <tt>Funtoo</tt> project run by Daniel Robbins. That's just a fancy way of saying that <tt>Funtoo</tt> refers to all the stuff I'm doing.
+
 
+
''Funtoo Linux'' refers specifically to my variant of Gentoo Linux.
+
 
+
If you see me use the phrase <tt>Funtoo Portage tree</tt> or <tt>Funtoo ebuild</tt>, I'm just talking about our separate (and slightly different) Portage tree, or our version of an ebuild.
+
 
+
=== What is 'tnufoo'? ===
+
 
+
<tt>tnufoo</tt> is <tt>funtoo</tt> rotated 180 degrees vertically.
+
 
+
=== How many developers are working on Funtoo Linux? ===
+
 
+
Funtoo Linux development is led by Daniel Robbins, along with a [[Core Team]] that also makes significant contributions to Funtoo Linux development and Funtoo infrastructure.
+
 
+
=== Is Funtoo Linux a fork of Gentoo Linux? ===
+
 
+
It depends on your definition of <tt>fork</tt>. Officially, I am calling Funtoo Linux a <tt>Gentoo Linux variant</tt>, meaning that it is more like another flavor of Gentoo than a fork.
+
 
+
We share our changes and bug fixes with the Gentoo project, so Gentoo is free to merge in any of our changes at any time. We also merge in Gentoo's changes every 12 hours.
+
 
+
I could officially call Funtoo Linux a fork of Gentoo Linux, but Gentoo could merge most of our changes into Gentoo proper and then what would Funtoo Linux be? It'd be my variant of Gentoo, that's what it'd be. So let's just call it a variant of Gentoo.
+
 
+
=== What is the best way to interact with the Funtoo community? ===
+
 
+
I recommend joining the [http://groups.google.com/group/funtoo-dev funtoo-dev mailing list] and, if desired, hanging out in the [irc://irc.freenode.net/funtoo #funtoo] on freenode.
+
 
+
The [http://groups.google.com/group/funtoo-dev funtoo-dev mailing list] as well as the [irc://irc.freenode.net/funtoo #funtoo] are unmoderated, open discussion forums for both Funtoo Linux users and developers. In addition, these are ''also'' the official lists for discussing other Funtoo projects such as [[Metro]] and [[Keychain]].
+
 
+
=== What Architectures does Funtoo Linux support? ===
+
 
+
While Funtoo Linux can run on any architecture that Gentoo Linux supports, we are only maintaining Funtoo Linux for x86 and amd64 architectures. Adding support for other architectures may require a little bit of unmasking work in our Portage tree -- or not. We're not testing anything but x86 and amd64, so we don't know :)
+
 
+
=== How should a developer use package.mask? ===
+
 
+
We currently have four files in the package.mask directory -- <tt>gentoo</tt>, <tt>funtoo</tt>, <tt>funtoo-cautionary</tt> and <tt>sunrise</tt>. Gentoo is an almost pristine version of the upstream gentoo package.mask. It differs from gentoo only in that we will remove stuff from it that we no longer want in it, but we don't ''add'' masks to this file. So if there is a mask in <tt>gentoo</tt>, you know it came upstream from Gentoo.
+
 
+
<tt>funtoo</tt> is where we place our masks. <tt>funtoo-cautionary</tt> is where we place masks that are designed to shield us from upstream unstable version changes to core packages, since we don't want to simply follow Gentoo unstable -- instead, we want to control when gcc and glibc switch to new versions. <tt>sunrise</tt> contains a bunch of sunrise and other miscellaneous masks from the <tt>mpd</tt> overlays. It is currently sort of our &quot;junk drawer&quot; that we'll get around to cleaning up at some point.
+
 
+
=== Do you use the normal Gentoo system profiles? ===
+
 
+
I've made some minor changes to the Funtoo Linux <tt>profiles/</tt> directory, and I'll continue to make improvements as time goes on. The most recent change I made (as of 17 Jul 2009) was to add <tt>net-dns/openresolv</tt> to the core system profile. Since Funtoo development focuses primarily on the core system, you can expect our system profiles to be somewhat different from Gentoo's. However, from a user perspective, you use them the same way and we have the same profile names that are in Gentoo.
+
 
+
=== Is Funtoo Linux More Stable Than Gentoo Linux? ===
+
 
+
That is a hard question to answer directly, as one person's definition of &quot;stable&quot; may be different than another person's, and I do not know how you intend to use Funtoo Linux. So rather than tackle the question head-on, I can give you some additional information that may help you decide:
+
 
+
* The goal of Funtoo Linux is to allow me to improve the Gentoo core system and tools. That does mean that I will be periodically changing various parts of Gentoo plumbing from time to time. When I do this, I try to be careful and provide notices of upcoming major changes on the mailing list, Atom feed and on the Web site.
+
* Both Funtoo Linux and Gentoo Linux have a stable and unstable (<tt>~</tt> - called "current" in Funtoo) tree
+
* The Funtoo and Gentoo trees are 99% identical. However, there are signficant differences in certain areas, particularly the core system and Perl, Python and Ruby.
+
* Funtoo and Gentoo trees do have some significant differences for core packages, particularly <tt>openrc</tt>, <tt>baselayout</tt>, <tt>udev</tt> and <tt>lvm2</tt>.
+
* If it is important to you, Metro is tested daily to ensure that it can build Funtoo Linux (and Gentoo Linux) successfully. However, these builds are not performed in advance of the changes hitting the public git-based Portage tree.
+
* Any Metro Funtoo Linux build failures found are typically fixed in the Funtoo Portage within 0-1 days. Gentoo build failures are only fixed if they are related to an issue with Metro. So there is very fast response in Funtoo to core system build failures. In Gentoo, this process is not as integrated.
+
* Funtoo merges in upstream changes from Gentoo Portage every 12 hours.
+
* I focus on testing the core, non-GUI/non-X system. Sometimes Funtoo will trail behind in udev revisions that cutting-edge desktop users want to run.
+
* Both Funtoo Linux stable and current have OpenRC, dhcpcd-5 and OpenResolv integrated by default.
+
* Funtoo Linux current tries to upgrade certain core packages such as <tt>udev</tt>, <tt>gcc</tt> and <tt>glibc</tt> much less frequently and in a more controlled manner than Gentoo unstable. This may or may not be a benefit to you, depending on what you are looking for. Basically, I am trying to offer the package updates of Gentoo Linux unstable without as much of the (too frequent, in my opinion) core system changes that can often cause problems for people.
+
* The Funtoo receives Gentoo changes once every 12 hours. In contrast, the Gentoo rsync tree receives updates hourly. This means that the changes in the Funtoo tree are compressed into a single monolithic event, whereas the Gentoo tree undergoes more continual, but less signficant, change every hour.
+
* Significant build-related bugs found by Funtoo that also impact Gentoo Linux are sent upstream to [http://bugs.gentoo.org bugs.gentoo.org].
+
 
+
=== Do you use Gentoo's Guide XML for Documentation? ===
+
 
+
I originally created Gentoo's Guide XML format (which I originally created for Gentoo) for documentation, and started to transition away from it in favor of [http://docutils.sourceforge.net/rst.html ReStructuredText]. However, now I am trying to support Guide XML ''and'' [http://docutils.sourceforge.net/rst.html ReStructuredText] as they are both useful for different types of things.
+
 
+
Many funtoo.org articles and documents are maintained in ReStructuredText format. HTML versions of the ReStructuredText documentation are generated by first converting the <tt>.rst</tt> file to XML using <tt>rst2xml.py</tt> (part of the docutils distribution), and then using XSLT to convert the resultant XML to HTML.
+
 
+
To view the plaintext [http://docutils.sourceforge.net/rst.html ReStructuredText] version of a document, append <tt>/index.rst</tt> to any funtoo.org URL. For example, here is the [http://www.funtoo.org/en/funtoo/faq/index.rst ReStructuredText version of this document]
+
 
+
=== Are you looking for translators? ===
+
 
+
Many kind people have provided translations of the funtoo.org pages, and the old version of the site used to contain these translations. However, after much consideration, I've decided to not provide translated versions of funtoo.org pages, for several reasons:
+
 
+
* Translated documents tend to become out-of-date
+
* Updating the translated documents is quite a bit of work
+
* Most people online seem to have at least a basic grasp of English
+
 
+
For these reasons, I'm going to focus on improving the quantity and quality of English documentation, and not focus on translations for now.
+
 
+
== Forking the Portage Tree ==
+
 
+
=== I want to fork the Portage tree. How do I do this? ===
+
 
+
The old way used to involve forking our huge, complete Portage tree. Currently, the best way to do it involves forking the [http://www.github.com/funtoo/funtoo-overlay funtoo-overlay], which is much smaller, or creating your own overlay. I have scripts that combine the Funtoo overlay and the Gentoo tree to create a unified Portage tree.
+
 
+
=== I have forked my own Portage tree. How do I generate metadata for it? ===
+
 
+
You should only do this if you are creating a unified Portage tree for distribution to users. Otherwise, it is much more efficient to use an overlay for this purpose.
+
 
+
First, add <tt>FEATURES=&quot;metadata-transfer&quot;</tt> to your <tt>/etc/make.conf</tt> file. Then type the following commands:
+
 
+
<console>
+
###i## cd /usr/portage
+
###i## egencache --update --jobs=4
+
###i## cd metadata/cache
+
###i## git add .
+
###i## git commit -a
+
</console>
+
<tt>egencache</tt> is part of {{Package|sys-apps/portage}} and was kindly integrated by Zack Medico, Portage maintainer.
+
 
+
=== Where can I learn more about <tt>git</tt>? ===
+
 
+
So, you want to learn more about <tt>git</tt>, do you? A collection of excellent git resources is now available on the [[Git Guide]].
+
 
+
[[Category:HOWTO]]
+

Revision as of 08:03, 25 May 2013

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.1.11.31 2.3.5-r5 (funtoo) 2.1.11.40 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).

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.