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

(Difference between pages)
 
(Git complains and aborts when I emerge --sync.)
 
Line 1: Line 1:
This Section will give you an overview of kernels used in funtoo.
+
== Common Misconceptions, Rumors, etc. ==
  
Funtoo Linux provides a number of new kernels for your use. This is the official page for all Funtoo Linux kernel information.
+
=== Does Funtoo Linux use a Red Hat kernel? ===
  
Some points of interest:
+
Funtoo Linux users are free to choose their own kernel, and we offer additional kernels from other Linux distributions such as Debian, Red Hat Enterprise Linux and others. These are documented on the [[Funtoo Linux Kernels]] page.
  
* Most Funtoo Linux kernels support the handy ''<code>[[#Binary USE|binary]]</code>'' USE flag, described below.
+
=== Does Funtoo use an overlay? ===
* Funtoo Linux offers quality kernels from other Linux Distributions, like ''<code>ubuntu-server</code>'' and ''<code>debian-sources</code>''.
+
* A detailed [[#Kernel Features and Stability|Kernel Features and Stability]] table can be found below.
+
* Advanced users may want to take a look at [[Additional Kernel Resources]].
+
* There is a quick'n dirty howto to compile your own [[kernel]] with initramfs the funtoo way.
+
  
== Overview of Kernels ==
+
An overlay is a Portage tree that is added "on top of" an existing Portage tree. Funtoo Linux allows you to use overlays, and we use overlays for development, but we deliver a single Funtoo Portage tree via git. This tree is generated automatically from the Gentoo Portage tree and a number of other overlays, and merged into a single tree. This is the tree that you get when you run <tt>emerge --sync</tt>.
  
=== sysrescue-std-sources --> {{Package|sys-kernel/sysrescue-std-sources}} ===
+
=== Can I Turn my Gentoo system into Funtoo Linux by using <tt>funtoo-overlay</tt>? ===
  
This kernel is from the [http://www.sysresccd.org SystemRescueCD project], and is based on Fedora 14/15, plus some other patches related to booting from a live CD. It is a quality kernel, and is generally pretty stable. It is not suitable for production servers but is a good choice for Funtoo Linux desktops. Earlier,the [[Funtoo Linux Installation]] Guide recommended this kernel for general users, but now 'debian-sources' is recommended. Note however,  that by design all audio functions are removed from SystemRescue,  ie no sound when using this kernel.
+
We do have a primary development repository called <tt>funtoo-overlay</tt>, and its name is somewhat of a misnomer. You can't simply use it as an overlay on top of a Gentoo Portage tree to create a Funtoo Linux system.
  
=== vanilla-sources --> {{Package|sys-kernel/vanilla-sources}} ===
+
== Using Funtoo Linux, Portage and Git ==
  
This will install the "vanilla" (unmodified) Linux kernel sources. Current recommended version is 3.x. Funtoo Linux fully supports Linux 3.x. The advantages of this kernel include recent improvements to [[Linux Containers]], a very modern networking stack with lots of bug fixes, and high reliability for desktops and servers. The downside is that this kernel must be manually configured by the user and does not have built-in ''<code>genkernel</code>'' support via the ''<code>binary</code>'' USE flag at this time.
+
=== How do I start using Funtoo Linux? ===
  
=== gentoo-sources --> {{Package|sys-kernel/gentoo-sources}} ===
+
For information on how to start using Funtoo Linux, see [[Funtoo Linux Installation]].
  
This kernel tree is based on stable kernels from [https://www.kernel.org/ kernel.org] with genpatches applied [http://dev.gentoo.org/~mpagano/genpatches/about.htm genpatches].
+
=== Is it possible to convert an existing Gentoo Linux install to Funtoo Linux? ===
Gentoo patchset aims to support the entire range of Gentoo-supported architectures. List of available genpatched kernels: [http://dev.gentoo.org/~mpagano/genpatches/kernels.htm genpatches-kernels]
+
  
=== openvz-rhel6-stable --> {{Package|sys-kernel/openvz-rhel6-stable}} ===
+
Yes, it is possible, but not supported. Some people have done it, but you should not rely on it to always work. It is always best to install Funtoo Linux by following the steps in [[Funtoo Linux Installation]].
  
This is a RHEL6-based kernel with OpenVZ support. This kernel is now the preferred kernel for production OpenVZ deployments. It requires gcc-4.4.5 to build, which it will use automatically without the user needing to use ''<code>gcc-config</code>''. We use this version of gcc since this is the version of gcc used by Red Hat to build this kernel.
+
=== What is mini-manifest? ===
  
=== openvz-rhel5-stable --> {{Package|sys-kernel/openvz-rhel5-stable}} ===
+
Manifests are files that you will find inside a Portage tree on a Gentoo Linux or Funtoo Linux system, one associated with each package -- for example <tt>dev-lang/php</tt> will have a single Manifest file for all PHP ebuilds. Traditionally, the Manifest files contain cryptographic hashes of all files in the Portage tree, plus hashes of all downloadable files (distfiles) used to build the package.
  
This kernel is based on the latest Red Hat Enterprise Linux 5.6 kernel, and contains additional OpenVZ (virtual containers) patches from the [[OpenVZ on Funtoo Linux|OpenVZ]] project. It is a very stable and reliable kernel, and is recommended for use in production environments. The only major downside to this kernel is that it is based on Linux 2.6.18 -- some parts of the kernel are out-of-date, and it is not compatible with modern versions of udev. However, it is pretty trivial to downgrade udev to an earlier version on Funtoo Linux and this kernel has a track-record of being rock-solid. When stability is paramount, you put up with the udev downgrade, use this kernel, and can enjoy hundreds of days of uptime. For more information on how to use this kernel with Funtoo Linux, see the [[RHEL5 Kernel HOWTO]].
+
A feature introduced by Funtoo Linux, and now integrated upstream into Gentoo's Portage, are mini-Manifests. Because we use git for our Portage tree, which uses cryptographic hashes internally, we don't need Manifests to include hashes for all files ''in'' Portage, just files that need to be downloaded from mirrors. This is what mini-Manifests are -- Manifest files that have gone on a diet.
  
=== ubuntu-server --> {{Package|sys-kernel/ubuntu-server}} ===
+
=== How do I get my initial Portage tree, or update my Portage tree? ===
  
This is the kernel from Ubuntu Server. Version ''<code>2.6.32.32.62</code>'' is the same version used in Ubuntu Server 10.04 LTS, and version ''<code>2.6.35.28.50</code>'' is the one used in Ubuntu Server 10.10 (currently masked). In our testing of ''<code>2.6.32.32.62</code>'', it has been very reliable and offers very good performance. One exception, which is common among 2.6.32-based kernels, is that it's recommended that you emerge {{Package|net-misc/broadcom-netxtreme2}} if you have any Broadcom-based NICs, as the in-kernel drivers have compatibility issues with certain models. This kernel is a very good option if you want a relatively modern server kernel and do not need [[OpenVZ]] support. We use gcc-4.4.5 to build this kernel. It will use gcc-4.4.5 automatically, without requiring the user to use ''<code>gcc-config</code>''.
+
This is done by typing:
  
=== debian-sources --> {{Package|sys-kernel/debian-sources}} ===
+
<console>
 
+
###i## emerge --sync
This is the Debian kernel. '''These ebuilds now support the ''<code>binary</code>'' USE flag.''' Daniel has added a special <tt>config-extract</tt> command which can be used to list all available official Debian kernel configurations, and generate them from the Debian files included with the kernel. This kernel has optional [[OpenVZ]] support, but it is much better to use <tt>openvz-rhel6-stable</tt> if you want a production-quality OpenVZ installation. For more information about how to use <tt>debian-sources</tt> and <tt>config-extract</tt>, see [[#Using Debian-Sources with Genkernel|Using debian-sources with Genkernel]] below.
+
</console>
 
+
=== debian-sources-lts --> {{Package|sys-kernel/debian-sources-lts}} ===
+
  
This is the Debian long-term stable kernel. '''These ebuilds now support the <tt>binary</tt> USE flag.''' Daniel has added a special <tt>config-extract</tt> command which can be used to list all available official Debian kernel configurations, and generate them from the Debian files included with the kernel.
+
Emerge will use the <tt>git pull</tt> command to update your tree for you, or will use <tt>git clone</tt> if one doesn't exist.
  
== Binary USE ==
+
=== I set up my initial git-based Portage tree, but <tt>/usr/portage</tt> seems to be empty. ===
  
Many of the kernel ebuilds in Funtoo Linux support the very useful <code>binary</code> USE flag. By enabling this USE flag and emerging the kernel, the ebuild will automatically build a binary kernel image, initramfs and kernel modules and install them to <code>/boot</code>. The binary kernel image and initramfs can be used to boot your Funtoo Linux system without requiring any additional configuration. This is a great way to get a Funtoo Linux system up and running quickly. Here's how to do it:
+
You forgot to type:
  
 
<console>
 
<console>
###i## echo "sys-kernel/openvz-rhel5-stable binary" >> /etc/portage/package.use
+
###i## cd /usr/portage
###i## emerge openvz-rhel5-stable
+
###i## git checkout funtoo.org
###i## nano -w /etc/boot.conf
+
###i## boot-update
+
 
</console>
 
</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.
  
More information can be found in the [[Funtoo Linux Installation]] Guide.
+
=== What is the status of Funtoo's UTF-8 support? ===
  
== Funtoo Linux Genkernel ==
+
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>.
  
Funtoo Linux contains a forked/enhanced version of genkernel with the following new capabilities:
+
=== What if I want to use a non-English locale/language? ===
  
* genkernel can use a build directory that is separate from the kernel source directory. This is enabled using the new <tt>--build-dst</tt> option.
+
I recommend two things. First, it's strongly recommended that you always use a UTF-8-based locale.
* <code>--build-src</code> is a new option that is equivalent to the <tt>--kerneldir</tt> option.
+
* <code>--fullname</code> can be used to specify the entire name of the kernel and initramfs images -- everything after <tt>kernel-</tt> and <tt>initramfs-</tt>.
+
* <code>--firmware-src</code> - a new option that works identically to <tt>--firmware-dir</tt>.
+
* <code>--firmware-dst</code> - a new capability - you can now define where genkernel installs firmware.
+
* Genkernel uses Funtoo Linux <code>lvm2</code> rather than building its own.
+
* Some compile fixes.
+
  
== Kernel Features and Stability Overview ==
+
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.
  
{{Fancywarning|'''SPARC64''': All kernels beyond 3.9 series and before 3.14-rc8 are subject to a [http://www.spinics.net/lists/sparclinux/msg11805.html bug] that stalls the kernel on sun4v machines '''only'''. Those latter are machines provided with UltraSPARC T1 and later CPUs (e.g. SunFire T1000, SunFire T2000, SunFire T52x0/T54x0 series...), all sun4u machines (UltraSPARC IV and prior CPUs) are not subject to this problem and any kernel version is functional. }}
+
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:
 +
<pre>
 +
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? ===
  
{| {{table}}
+
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>.
!Kernel Name
+
!Version
+
!USE flags
+
!Stability
+
!Extra Features
+
!Req'd udev
+
!Notes
+
|-
+
|<tt>{{Package|sys-kernel/vanilla-sources}}</tt>
+
|3.13.1
+
|N/A
+
|'''Excellent''' - recommended for desktops and servers.
+
|N/A
+
|Any
+
|Recommended for modern networking stack, hardware and [[Linux Containers]] support. This kernel must be manually configured by the user. New Features: [http://kernelnewbies.org/Linux_3.12 kernelnewbies.org/linux_3.12]  New Drivers: [http://kernelnewbies.org/Linux_3.12-DriversArch kernelnewbies/Linux_3.12-DriversArch]
+
|-
+
|<tt>{{Package|sys-kernel/gentoo-sources}}</tt>
+
|3.13.1
+
|N/A
+
|'''Excellent''' - recommended for desktops and workstations
+
|N/A
+
|Any
+
|Recommended for modern networking stack, hardware and [[Linux Containers]] support. This kernel must be manually configured by the user. New Features: [http://kernelnewbies.org/Linux_3.12 kernelnewbies.org/linux_3.12]  New Drivers: [http://kernelnewbies.org/Linux_3.12-DriversArch kernelnewbies/Linux_3.12-DriversArch]
+
|-
+
|<tt>{{Package|sys-kernel/sysrescue-std-sources}}</tt>
+
|3.0.21.302
+
|<tt>binary</tt>
+
|''Good'' - recommended for desktops
+
|N/A
+
|Any
+
|Nvidia card users: binary use flag installs nouveau drivers. Not compatible with nvidia-drivers.
+
|-
+
|<tt>{{Package|sys-kernel/openvz-rhel6-stable}}</tt>
+
|2.6.32.042.079.5
+
|<tt>binary</tt>
+
|'''Excellent''' - recommended for production servers
+
|N/A
+
|Any
+
|This kernel is built with gcc-4.4.5. <tt>emerge broadcom-netxtreme2</tt> for reliable BCM5709+ support (integrated NIC)
+
|-
+
|<tt>{{Package|sys-kernel/openvz-rhel5-stable}}</tt>
+
|2.6.18.028.095.1
+
|<tt>binary</tt>
+
|'''Excellent''' - recommended for production servers
+
|OpenVZ
+
|=sys-fs/udev-146*
+
|Broadcom <tt>bnx2</tt> driver module bundled with kernel appears to be OK. This kernel is built with gcc-4.1.2. Enabling the <tt>binary</tt> USE flag will cause gcc-4.1.2 to be emerged and used for building the kernel.
+
|-
+
|<tt>{{Package|sys-kernel/ubuntu-server}}</tt>
+
|2.6.32.32.62
+
|<tt>binary</tt>
+
|'''Excellent''' - recommended for production servers (still in extended testing)
+
| N/A
+
|Any
+
|This kernel is built with gcc-4.4.5. <tt>emerge broadcom-netxtreme2</tt> for reliable BCM5709+ support (integrated NIC)
+
|-
+
|<tt>{{Package|sys-kernel/ubuntu-server}}</tt>
+
|2.6.35.28.50
+
|<tt>binary</tt>
+
|''not yet tested''
+
| N/A
+
|Any
+
|This kernel is built with gcc-4.4.5. <tt>emerge broadcom-netxtreme2</tt> for reliable BCM5709+ support (integrated NIC)
+
|-
+
|<tt>{{Package|sys-kernel/debian-sources}}</tt>
+
|3.12.3
+
|<tt>openvz</tt>
+
|''Good'' - default kernel recommended by Funtoo
+
|OpenVZ (optional)
+
|Any
+
|See [[#Using debian-sources with Genkernel]], below.
+
|-
+
|}
+
  
== Using Debian-Sources with Genkernel ==
+
=== Does Funtoo Linux use an older udev? ===
  
{{ fancyimportant|Debian-sources is now fully compatible with the ''binary'' USE flag and recommended for desktop users. The below example is valid for manual installation. At least 12G of ''/var/tmp'' required to build }}
+
Historically, we have, in order to avoid problems introduced with newer udev versions.
  
 +
We have just recently migrated to <tt>eudev</tt>, an udev fork, and will be keeping udev up-to-date.
  
This section describes how to build a binary kernel with ''<code>debian-sources</code>'' and ''<code>genkernel</code>'', and it also explains how to use Funtoo Linux's ''<code>config-extract</code>'' tool to list and create official Debian kernel configurations.
+
=== What is the minimum kernel version I can use with Funtoo Linux? ===
  
=== First step: emerging the required packages ===
+
We test and support 2.6.32 and above, and maintain compatiblity with RHEL 6 kernels, which are based on 2.6.32 and heavily patched.
  
The first step is to emerge:
+
=== Why is package.mask a directory? ===
  
# The Debian sources
+
Portage allows <tt>/usr/portage/profiles/package.mask</tt> to be a directory. We use this to organize our package masks into categories so they are easier to maintain.
# Genkernel itself
+
  
This is achieved by running the following:
+
=== Git complains and aborts when I emerge --sync. ===
  
<console>
+
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:
###i## emerge -av sys-kernel/debian-sources sys-kernel/genkernel
+
</console>
+
  
Once the Debian kernel sources are deployed, you should find a directory named '''linux-debian-''version''''' (e.g. linux-debian-2.6.32.30) under '''<code>/usr/src</code>'''. Update your the '''<code>linux</code>''' symlink to point on this directory:
 
 
<console>
 
<console>
###i## cd /usr/src
+
###i## cd /usr/portage
###i## rm linux
+
###i## git reset --hard
###i## ln -s linux-debian-2.6.32.30 linux
+
 
</console>
 
</console>
 +
This should restore your portage tree to a consistent state and allow future <tt>emerge --sync</tt> commands to complete successfully.
  
Alternatively, emerge the debian-sources with the ''<code>symlink</code>'' USE flag.
+
If this doesn't work, the simplest way to fix this is to delete your <tt>/usr/portage</tt> directory and run <tt>emerge --sync</tt> again. This will download a fresh tree.
  
=== Second step: Grabbing a configuration file ===
+
=== How do I tell if a problem I am having originates from Gentoo or Funtoo? ===
  
If is now time to download the kernel configuration file. For this tutorial we will use a configuration file for AMD64 (several others architectures like MIPS or SPARC64 are available.)  To view a complete list of available kernel configurations, type <code>./config-extract -l</code> '''in the Debian kernel source directory''':
+
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.
  
<pre>
+
=== How can I see the differences between the Gentoo and Funtoo Portage trees? ===
ninja1 linux-debian-2.6.32.30 # ./config-extract -l
+
  
====== standard featureset ======
+
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.
  
      alpha: alpha-generic, alpha-legacy, alpha-smp
+
=== Is Paludis compatible with the Funtoo Portage tree? ===
      amd64
+
      armel: iop32x, ixp4xx, kirkwood, orion5x, versatile
+
        hppa: parisc, parisc-smp, parisc64, parisc64-smp
+
        i386: 486, 686, 686-bigmem, amd64
+
        ia64: itanium, mckinley
+
        m68k: amiga, atari, bvme6000, mac, mvme147, mvme16x
+
        mips: 4kc-malta, 5kc-malta, r4k-ip22, r5k-ip32, sb1-bcm91250a, sb1a-bcm91480b
+
      mipsel: 4kc-malta, 5kc-malta, r5k-cobalt, sb1-bcm91250a, sb1a-bcm91480b
+
    powerpc: powerpc, powerpc-smp, powerpc64
+
        s390: s390x, s390x-tape
+
        sh4: sh7751r, sh7785lcr
+
      sparc: sparc64, sparc64-smp
+
    sparc64: sparc64, sparc64-smp
+
  
====== vserver featureset ======
+
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.
  
      amd64
+
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.
        i386: 686, 686-bigmem
+
        ia64: itanium, mckinley
+
    powerpc: powerpc, powerpc64
+
        s390
+
      sparc
+
    sparc64
+
  
====== xen featureset ======
+
=== What about pkgcore? ===
  
      amd64
+
Pkgcore is not currently compatible with Funtoo Linux but efforts are under way to resolve this.
        i386
+
  
====== openvz featureset ======
+
=== How do I report a bug? ===
  
      amd64
+
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.
        i386
+
</pre>
+
  
Type <tt>config-extract -h</tt> for extended usage information:
+
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.
  
<pre>
+
* More informations: [[Reporting Bugs|Guidelines for Reporting Bugs]].
ninja1 linux-debian-2.6.32.30 # ./config-extract -h
+
This work is free software.
+
  
Copyright 2011 Funtoo Technologies. You can redistribute and/or modify it under
+
=== How do I become a Funtoo developer? ===
the terms of the GNU General Public License version 3 as published by the Free
+
Software Foundation. Alternatively you may (at your option) use any other
+
license that has been publicly approved for use with this program by Funtoo
+
Technologies (or its successors, if any.)
+
  
usage: config-extract [options] arch [featureset] [subarch]
+
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.
  
  -h  --help        print this usage and exit
+
== General Funtoo Stuff ==
  -l  --list        list all available kernel configurations
+
  -o  --outfile    specify kernel config outfile --
+
                    defaults to .config in current directory
+
  [featureset]      defaults to "none" if not specified
+
  [subarch]        defaults to the only one available; otherwise required
+
  
This program was written by Daniel Robbins for Funtoo Linux, for the purpose of
+
=== What is funtoo.org? ===
easily and conveniently extracting Debian kernel configurations. To see a nice
+
list of all available kernel configurations, use the --list option.
+
  
Debian's kernel configs are specified internally in arch_featureset_flavor
+
Funtoo.org is the online home of Daniel Robbins (me) and is a place to put all my stuff.
format, such as: "amd64_openvz_amd64". The featureset typically describes an
+
optional kernel configuration such as "xen" or "openvz", while the flavor in
+
Debian terminology typically refers to the sub-architecture of the CPU.
+
  
When using this command, you must specify an arch. A featureset of "none" is
+
=== What kind of stuff? ===
assumed unless you specify one, and by default this program will pick the only
+
available subarch if there is only one to choose from. If not, you will need to
+
pick one (and the program will remind you to do this.)
+
  
The kernel configuration will be written to ".config" in the current directory,
+
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.
or the location you specified using the -o/--outfile option.
+
</pre>
+
  
Let's use <tt>config-extract</tt> to create a kernel configuration for an amd64 system:
+
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.
  
<console>
+
So Funtoo is not just Funtoo Linux.
# ##i##cd linux
+
# ##i##./config-extract amd64
+
Wrote amd64_none_amd64 kernel configuration to /usr/src/linux-debian-2.6.32.30/.config.
+
</console>
+
  
<tt>config-extract</tt> also allows you to extract special Debian featuresets, such as settings for Xen and [[OpenVZ]] kernels:
+
=== What is 'Funtoo' all about? And 'Funtoo Linux'? ===
  
<console>
+
<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.
# ##i##./config-extract amd64 openvz
+
Wrote amd64_openvz_amd64 kernel configuration to /usr/src/linux-debian-2.6.32.30/.config.
+
</console>
+
  
'''It is necessary to name the kernel configuration file something other than ".config" to avoid errors with genkernel.'''
+
''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.
  
After using <tt>config-extract</tt>, run <tt>make oldconfig</tt> and accept all default options by hitting Enter at all prompts.
+
=== What is 'tnufoo'? ===
  
 +
<tt>tnufoo</tt> is <tt>funtoo</tt> rotated 180 degrees vertically.
  
{{fancynote|if you are using the XFS file system as your root partition: Run <tt>make menuconfig</tt> and ensure that "File Systems --> XFS filesystem support" and "Library Routines --> CRC32c (Castagnoli, et al) Cyclic Redundancy-Check" are both set to * (and not [m]).}}
+
=== How many developers are working on Funtoo Linux? ===
This is needed to ensure that your system can boot up correctly for kernel versions >= 3.10.11.
+
  
=== Third step: Building and installing the kernel ===
+
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.
  
This is simply achieved by:
+
=== Is Funtoo Linux a fork of Gentoo Linux? ===
  
<console>
+
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.
# ##i##genkernel --kernel-config=config-2.6.32-5-amd64 all
+
</console>
+
  
* --kernel-config: use the given configfile. If you only give a filename here, it is searched for in your current working dir. You can also use a relative or an absolute path leading to your configfile here (for example: "--kernel-config=/usr/src/linux/configfile").
+
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.
* all: rebuild the kernel image and the initramfs ramdisk image (aside of kernel modules, the ramdisk image contains tools such as BusyBox and some generic startup scripts, depending on options you use on the command line several additional tools like lvm or raid volume management can be incorporated as well).
+
  
{{ fancyimportant|Unless explicitly stated via ''--no-clean'' or ''--no-mrproper'', Genkernel will do a '''make mrproper''' in the kernel source tree, thus cleaning a previous build '''and removing the previous kernel configuration file''' in it.  
+
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.
  
If you use Genkernel to rebuild a Linux kernel on SPARC64, remember to either:
+
=== Where can I learn more about <tt>git</tt>? ===
* Set '''sparc64-unknown-linux-gnu-''' in ''General setup --> Cross-compiler tool prefix''
+
* Put '''--kernel-cross-compile=sparc64-unknown-linux-gnu-''' on the Genkernel command line
+
  
Once the kernel has been compiled and the ram disk has been generated, the kernel image plus its companion files (initramfs image and System.map) are placed in the /boot directory. You can use your favourite tool to update your bootloader configuration files.
+
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:Internals]]
+
[[Category:HOWTO]]
[[Category:Funtoo features]]
+
[[Category:Kernel]]
+
[[Category:Official Documentation]]
+

Revision as of 06:27, 18 June 2014

Contents

Common Misconceptions, Rumors, etc.

Does Funtoo Linux use a Red Hat kernel?

Funtoo Linux users are free to choose their own kernel, and we offer additional kernels from other Linux distributions such as Debian, Red Hat Enterprise Linux and others. These are documented on the Funtoo Linux Kernels page.

Does Funtoo use an overlay?

An overlay is a Portage tree that is added "on top of" an existing Portage tree. Funtoo Linux allows you to use overlays, and we use overlays for development, but we deliver a single Funtoo Portage tree via git. This tree is generated automatically from the Gentoo Portage tree and a number of other overlays, and merged into a single tree. This is the tree that you get when you run emerge --sync.

Can I Turn my Gentoo system into Funtoo Linux by using funtoo-overlay?

We do have a primary development repository called funtoo-overlay, and its name is somewhat of a misnomer. You can't simply use it as an overlay on top of a Gentoo Portage tree to create a Funtoo Linux system.

Using Funtoo Linux, Portage and Git

How do I start using Funtoo Linux?

For information on how to start using Funtoo Linux, see Funtoo Linux Installation.

Is it possible to convert an existing Gentoo Linux install to Funtoo Linux?

Yes, it is possible, but not supported. Some people have done it, but you should not rely on it to always work. It is always best to install Funtoo Linux by following the steps in Funtoo Linux Installation.

What is mini-manifest?

Manifests are files that you will find inside a Portage tree on a Gentoo Linux or Funtoo Linux system, one associated with each package -- for example dev-lang/php will have a single Manifest file for all PHP ebuilds. Traditionally, the Manifest files contain cryptographic hashes of all files in the Portage tree, plus hashes of all downloadable files (distfiles) used to build the package.

A feature introduced by Funtoo Linux, and now integrated upstream into Gentoo's Portage, are mini-Manifests. Because we use git for our Portage tree, which uses cryptographic hashes internally, we don't need Manifests to include hashes for all files in Portage, just files that need to be downloaded from mirrors. This is what mini-Manifests are -- Manifest files that have gone on a diet.

How do I get my initial Portage tree, or update my Portage tree?

This is done by typing:

# emerge --sync

Emerge will use the git pull command to update your tree for you, or will use git clone if one doesn't exist.

I set up my initial git-based Portage tree, but /usr/portage seems to be empty.

You forgot to type:

# cd /usr/portage
# git checkout funtoo.org

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 the status of Funtoo's UTF-8 support?

Funtoo Linux has UTF-8 enabled by default, even for the root user. This allows UTF-8 files to be edited without issue, root GNU screen sessions to display UTF-8 character sets properly, etc. The classic sort order of ls -a has been preserved by setting LC_COLLATE to POSIX. All other locale settings inherit the system default defined in the LANG variable, which is set to en_US.UTF-8.

What if I want to use a non-English locale/language?

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 ~/.bashrc. This will preserve English log output in /var/log 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 /etc/env.d/02locale file that contains something like this:

LANG="fr_CA.UTF-8"

You will need to run env-update and source /etc/profile to apply changes immediately to any open shells, and reboot to apply changes fully.

What is different with Funtoo's Ruby?

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 "ruby19" for the RUBY_TARGETS setting in /etc/make.conf.

Does Funtoo Linux use an older udev?

Historically, we have, in order to avoid problems introduced with newer udev versions.

We have just recently migrated to eudev, an udev fork, and will be keeping udev up-to-date.

What is the minimum kernel version I can use with Funtoo Linux?

We test and support 2.6.32 and above, and maintain compatiblity with RHEL 6 kernels, which are based on 2.6.32 and heavily patched.

Why is package.mask a directory?

Portage allows /usr/portage/profiles/package.mask to be a directory. We use this to organize our package masks into categories so they are easier to maintain.

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:

# cd /usr/portage
# git reset --hard

This should restore your portage tree to a consistent state and allow future emerge --sync commands to complete successfully.

If this doesn't work, the simplest way to fix this is to delete your /usr/portage directory and run emerge --sync again. This will download a fresh tree.

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 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 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 package.mask 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 package.mask (and package.keywords, 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 udev and baselayout 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 package.mask 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 funtoo-dev mailing list. Another option is to ask for support in the #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 funtoo-dev mailing list so we are aware of the issue.

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 funtoo-dev mailing list and #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'?

Funtoo by itself refers to this site, or the larger Funtoo project run by Daniel Robbins. That's just a fancy way of saying that Funtoo 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 Funtoo Portage tree or Funtoo ebuild, I'm just talking about our separate (and slightly different) Portage tree, or our version of an ebuild.

What is 'tnufoo'?

tnufoo is funtoo 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 fork. Officially, I am calling Funtoo Linux a Gentoo Linux variant, 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 funtoo-dev mailing list and, if desired, hanging out in the #funtoo on freenode.

The funtoo-dev mailing list as well as the #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 -- gentoo, funtoo, funtoo-cautionary and sunrise. 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 gentoo, you know it came upstream from Gentoo.

funtoo is where we place our masks. funtoo-cautionary 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. sunrise contains a bunch of sunrise and other miscellaneous masks from the mpd overlays. It is currently sort of our "junk drawer" 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 profiles/ 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 net-dns/openresolv 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 "stable" 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 (~ - 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 openrc, baselayout, udev and lvm2.
  • 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 udev, gcc and glibc 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 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 ReStructuredText. However, now I am trying to support Guide XML and 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 .rst file to XML using rst2xml.py (part of the docutils distribution), and then using XSLT to convert the resultant XML to HTML.

To view the plaintext ReStructuredText version of a document, append /index.rst to any funtoo.org URL. For example, here is the 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 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 FEATURES="metadata-transfer" to your /etc/make.conf file. Then type the following commands:

# cd /usr/portage
# egencache --update --jobs=4
# cd metadata/cache
# git add .
# git commit -a

egencache is part of Portage (Funtoo) and was kindly integrated by Zack Medico, Portage maintainer.

Where can I learn more about git?

So, you want to learn more about git, do you? A collection of excellent git resources is now available on the Git Guide.