<?xml version="1.0" encoding="UTF-8"?>
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/gentoo-freebsd.xml,v 1.26 2007/05/10 22:00:51 cam Exp $ -->
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">

<guide link="/doc/en/gentoo-freebsd.xml">
<title>A short guide to Gentoo/FreeBSD</title>

<author title="Author">
  <mail link="ignacio.arquelatour@gmail.com">Ignacio Arque-Latour</mail>
</author>
<author title="Author">
  <mail link="citizen428@gentoo.org">Michael Kohl</mail>
</author>
<author title="Author">
  <mail link="angusyoung@gentoo.org">Otavio R. Piske</mail>
</author>
<author title="Author">
  <mail link="ka0ttic@gentoo.org">Aaron Walker</mail>
</author>
<author title="Author">
  <mail link="chriswhite@gentoo.org">Chris White</mail>
</author>
<author title="Contributor">
  <mail link="flameeyes@gentoo.org">Diego Pettenò</mail>
</author>
<author title="Editor">
  <mail link="nightmorph@gentoo.org">Joshua Saddler</mail>
</author>
<author title="Editor">
  <mail link="cam@gentoo.org">Camille Huot</mail>
</author>

<abstract>
This document gives some general information on FreeBSD, as well as
installation instructions for Gentoo/FreeBSD. It also includes some reference
for people interested in helping out with development.
</abstract>

<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>

<version>2.9</version>
<date>2007-05-10</date>

<chapter>
<title>Introduction to FreeBSD</title>
<section>
<title>What is FreeBSD?</title>
<body>

<p>
<uri link="http://www.freebsd.org/">FreeBSD</uri> is a free (<uri
link="http://www.freebsd.org/copyright/freebsd-license.html">license</uri>)
Unix-like operating system. Back in 1993 when development of <uri
link="http://www.386bsd.org/">386BSD</uri> stopped, two projects were born:
<uri link="http://www.netbsd.org/">NetBSD</uri>, commonly known to run on a
huge number of architectures, and FreeBSD which supports the x86, amd64, ia64,
sparc64 and alpha platforms. FreeBSD is renowned for its stability, performance
and security, thus being used from small to huge companies all over the world.
</p>

<p>
FreeBSD's current production release is version 6.1, although the release of 6.2
is very near at the time of writing (Release Candidate 2 was released recently).
Gentoo/FreeBSD development is ongoing on this latter version, while older
versions are discontinued and no longer supported.
</p>

</body>
</section>
<section>
<title>What is Gentoo/FreeBSD?</title>
<body>

<p>
<uri link="/proj/en/gentoo-alt/bsd/fbsd/">Gentoo/FreeBSD</uri> is a subproject
of the <uri link="/proj/en/gentoo-alt/">Gentoo/Alt project</uri>,  with the
goal of providing a fully-capable FreeBSD operating system featuring design
sensibilities taken from Gentoo Linux, such as the init system and the Portage
package management system.
</p>

</body>
</section>
<section>
<title>FreeBSD and Linux</title>
<body>

<p>
Users migrating from Linux to FreeBSD commonly consider the two operating
systems "almost the same". In fact, FreeBSD really shares a lot of similarities
with Linux distributions in general. Nevertheless, it has some key differences
that are worth noting:
</p>

<ul>
  <li>
    Contrary to Linux, which actually only refers to the kernel, FreeBSD is a
    complete operating system, consisting of a C library, userland tools and
    much more. This development approach makes the overall system very
    consistent.
  </li>
  <li>
    Contrary to the Linux kernel, FreeBSD development is not led by one person,
    but instead managed by a small group of people called the <uri
    link="http://www.freebsd.org/doc/en_US.ISO8859-1/articles/contributors/staff-core.html">Core
    Team</uri>.
  </li>
</ul>

<p>
Besides, FreeBSD also has some technical differences which set it apart
from Linux. Some of them are very important to know, even if you don't plan on
joining the Gentoo/FreeBSD development effort:
</p>

<ul>
  <li>
    To get run-time dynamic linking functions like <c>dlopen()</c>, programs do
    not need to be linked against libdl like on GNU/Linux. Instead they are
    linked against libc.
  </li>
  <li>
    FreeBSD doesn't have an official tool for kernel compilation, thus you'll
    have to resolve feature dependencies on your own.
  </li>
  <li>
    FreeBSD uses UFS/UFS-2 as its filesystems and has no official support for
    e.g. ReiserFS or XFS. However, there are projects for adding read-only
    support for these filesystems. Accessing ext2/ext3 partitions is already
    possible, but you cannot install your system on them.
  </li>
</ul>

</body>
</section>
</chapter>

<chapter>
<title>Installing Gentoo/FreeBSD</title>
<section>
<title>Booting the CD</title>
<body>

<p>
After this short introduction, it's about time to finally install
Gentoo/FreeBSD. Unfortunately, we currently lack our own installation media, so
you have to choose between two alternative installation methods. The first
would be to use an existing FreeBSD installation to partition your hard drive
and use it as a base for installing Gentoo/FreeBSD. This guide will describe how
to use the <uri link="http://www.freesbie.org/">FreeSBIE LiveCD</uri> as
an installation medium for Gentoo/FreeBSD.
</p>

<note>
If you are intending to use FreeSBIE for installing Gentoo/FreeBSD, please make
sure to use a version based on FreeBSD 6.x, such as FreeSBIE 2.0 (or one of its
release candidates). You can download it from <uri
link="http://torrent.freesbie.org/">FreeSBIE's Bittorrent tracker</uri>.
</note>

<p>
First, boot the CD in order to begin the installation process. You'll be
presented with a login screen.  The username is <c>freesbie</c>, and there is
no password.  Next, run <c>sudo su</c> to become root, and optionally setup a
password. If you want to pass time during the installation process, you can run
<c>startx</c> to enter into an Xfce environment, suitable for web browsing,
AIM, and other things. Unlike Linux, FreeBSD bases the name of your interface
on the driver for the interface. For example, the Intel EtherExpress driver
(fxp) appears as fxp0 (driver fxp, first network card). To see what your
interface is, use <c>ifconfig</c>:
</p>

<pre caption="Finding out the network interface name using ifconfig">
# <i>ifconfig</i>
fxp0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
        options=8&lt;VLAN_MTU&gt;
        inet6 fe80::2d0::b7ff:febc:4fe3%fxp0 prefixlen 64 scopeid 0x1
        inet 192.168.0.106 netmask 0xffffff00 broadcast 192.168.0.255
        ether 00:d0:b7:bc:4f:e3
        media: Ethernet autoselect (100baseTX &lt;full-duplex&gt;)
        status: active
lo0: flags=8007&lt;LOOPBACK,MULTICAST&gt; mtu 16384
</pre>

<p>
If the original DHCP request during the CD bootup failed, you can use the
<c>dhclient</c> command to obtain an IP:
</p>

<pre caption="Obtaining a DHCP address using dhclient">
# <i>dhclient fxp0</i>
DHCPDISCOVER on fxp0 to 255.255.255.255 port 67 interval 9
DHCPOFFER from 192.168.0.1
DHCPREQUEST on fxp0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.106 -- renewal in 302400 seconds
</pre>

<note>
The output presented here will differ based on your network.
</note>

</body>
</section>
<section>
<title>Partitioning the Drive</title>
<body>

<p>
Now that we have a mount point, it's time to partition the drive. This is done
with the <c>sysinstall</c> command:
</p>

<pre caption="Running the sysinstall command to fdisk the drive">
# <i>sysinstall diskPartitionEditor diskPartitionWrite</i>
</pre>

<p>
We recommend that you use the default layout. Press enter at the dialog, then
press <b>a</b> followed by <b>q</b> to accept the default layout. The next
screen will present you with the option of a bootloader. For this option,
choose "None" as we'll be installing the bootloader later on. Next comes the
actual partition sizing and mount points.
</p>

<p>
This next step also uses <c>sysinstall</c>, but with different arguments:
</p>

<pre caption="Running sysinstall to setup partition sizing and mount points">
# <i>sysinstall diskLabelEditor diskLabelCommit</i>
</pre>

<p>
Here, we'll refrain from using the automatic layout, and create one giant root
partition, followed by a swap partition. Hit <b>c</b> to create a new
partition. A dialog prompts you to enter a size. Go ahead and do so, using
MB/GB for setting different sizes, or C for cylinders. For root, choose FS as
the partition type, and set the mount point as <path>/mnt/</path>. <e>If
you do not adjust the mount point, it will overwrite the FreeSBIE
environment!</e> As <path>/boot</path> is not a separate partition, you'll
need to disable soft-updates, or your system will not boot! To do so, use the
arrow keys to navigate to your newly created partition, then hit the <b>s</b>
key, until "Newfs" contains no <b>+S</b>. Now navigate the arrow keys until
the "Disk" line is highlighted, and hit <b>c</b> again to create a swap
partition.  Generally, we recommend a swap space that is twice the size of your
RAM. Choose SWAP as the partition type, and don't worry about soft-updates, as
it does not apply to swap. Now we're finished, so hit <b>q</b> to finish the
process.
</p>

<p>
When choosing a different mountpoint than <path>/</path> for your partition,
<c>sysinstall</c> will actually create a 'd' slice, which the bootloader won't
boot from. To fix this, run the following:
</p>

<pre caption="Fixing the root partition letter">
# <i>disklabel ad0s1 | sed 's/^  d:/  a:/' > label</i>
# <i>disklabel -R ad0s1 label</i>
</pre>

<p>
This will finalize the partitioning process, and format the drive in UFS for
FreeBSD to utilize. This will also mount the drive for you at the mount point
specified earlier (<path>/mnt/</path>). You can verify this worked by
running <c>mount</c>:
</p>

<pre caption="Verifying the new disk layout was mounted with mount">
# <i>mount</i>
...
/dev/ad0s1a on /mnt (ufs, local)
</pre>

<p>
Now that you have mounted the target partition, it is time to start on the Gentoo
setup.
</p>

</body>
</section>
<section>
<title>Gentoo Setup</title>
<body>

<p>
First, we need to download a stage3 tarball and unpack it into the chroot.
Point your browser to
<uri>http://gentoo.osuosl.org/experimental/x86/freebsd/stages/</uri>, grab the
latest snapshot, and unpack it into the mountpoint:
</p>

<pre caption="Obtaining and unpacking a stage3 tarball">
# <i>cd /mnt/</i>
<comment>(Any other Gentoo mirror which includes the experimental/ directory will also work.)</comment>
# <i>wget http://gentoo.osuosl.org/experimental/x86/freebsd/stages/stage3-x86-freebsd-6.2.tar.bz2</i>
# <i>tar -jxvpf stage3-x86-freebsd-6.2.tar.bz2</i>
<comment>(You can delete the tarball with the following command if you want to.)</comment>
# <i>rm stage3-x86-freebsd-6.2.tar.bz2</i>
</pre>

<note>
If you want you can use the transition overlay that contains semi-experimental
ebuilds with patches not yet in the main Portage tree, but does allow a wider
range of supported packages, please refer to the <uri
link="/proj/en/gentoo-alt/contribute/index.xml?part=1&amp;chap=3">Gentoo/ALT
overlay documentation</uri>.  Please note that the overlay is not critical and
you can easily install and use Gentoo/FreeBSD without it.
</note>

<p>
In order for your install to work, you need to mount the <path>/dev</path>
filesystem from the currently running system into the Gentoo/FreeBSD mount
point before proceeding with the chroot.
</p>

<pre caption="Mounting the /dev filesystem and chrooting">
# <i>mount -t devfs none /mnt/dev/</i>
# <i>cp /etc/resolv.conf /mnt/etc/</i>
# <i>chroot /mnt/ /bin/bash</i>
# <i>env-update &amp;&amp; source /etc/profile</i>
</pre>

<p>
After you obtain the Gentoo/FreeBSD overlay, it's time to link
<path>/etc/make.profile</path> to the correct profile and get your
<path>/etc/make.conf</path> ready for Gentoo/FreeBSD.
</p>

<p>
Now, you have to obtain a copy of the main Gentoo Portage tree, which depending
on your connection might take quite a while.
</p>

<pre caption="Obtaining the Portage tree">
# <i>emerge --sync</i>
<comment>(It's also possible to retrieve the Portage tree in another way:)</comment>
# <i>cd /</i>
# <i>wget http://gentoo.osuosl.org/snapshots/portage-latest.tar.bz2</i>
# <i>tar -xjf portage-latest.tar.bz2 -C /usr/</i>
# <i>emerge --metadata</i>
</pre>

<pre caption="Setting up the profile and editing /etc/make.conf">
# <i>ln -sf /usr/portage/profiles/default-bsd/fbsd/6.2/x86/ /etc/make.profile</i>
# <i>nano /etc/make.conf</i>
<comment>(Please make sure you add at least the following entries:)</comment>
CHOST="i486-gentoo-freebsd6.2"
FEATURES="collision-protect"
</pre>

<note>
The <c>~x86-fbsd</c> keyword does not yet fully cover the same tree as
<c>~x86</c>, but please <e>do not</e> put <c>~x86</c> in ACCEPT_KEYWORDS. Rather
use <path>/etc/portage/package.keywords</path> to test packages, and report
working packages on <uri
link="http://bugs.gentoo.org/enter_bug.cgi?product=Gentoo%2FAlt">Bugzilla</uri>.
</note>

<p>
If you want, you can now rebuild the system's core packages.
</p>

<pre caption="Rebuilding the FreeBSD core packages (optional)">
# <i>emerge -e system</i>
</pre>

</body>
</section>
</chapter>
<chapter>
<title>Setting up for Booting</title>
<section>
<title>Set your time zone</title>
<body>

<p>
First make sure your date and time is set correctly using <c>date
yyyymmddHHMM</c>. Use UTC time.
</p>

<pre caption="Set the date and UTC time">
<comment>(Check the clock)</comment>
# <i>date</i>
Mon Mar  6 00:14:13 UTC 2006

<comment>(Set the current date and time if required)</comment>
# <i>date 200603060016</i> <comment>(Format is yyyymmddHHMM)</comment>
Mon Mar  6 00:16:00 UTC 2006
</pre>

<p>
Next, set your time zone information by using the correct listing in
<path>/usr/share/zoneinfo</path>.
</p>

<pre caption="Setting your timezone">
# <i>ls /usr/share/zoneinfo</i>
<comment>(Using Brussels as an example)</comment>
# <i>cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime</i>

# <i>date</i>
Wed Mar  8 00:46:05 CET 2006
</pre>

<p>
Edit <path>/etc/conf.d/clock</path> to define the time zone you used
previously.
</p>

<pre caption="Edit /etc/conf.d/clock">
# <i>nano -w /etc/conf.d/clock</i>
TIMEZONE="Europe/Brussels"
</pre>

</body>
</section>
<section>
<title>Kernel Installation</title>
<body>

<p>
If you ran <c>emerge -e system</c>, the sources for the FreeBSD kernel were
installed to <path>/usr/src/sys</path>. If you skipped this step, you can get
them in the following way:
</p>

<pre caption="Getting the FreeBSD kernel sources">
# <i>emerge freebsd-sources</i>
</pre>

<p>
Configuring and compiling a custom kernel is quite different from compiling
Linux, so if you are not familiar with the process we encourage you to have a
look at <uri
link="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html">
chapter 8</uri> of the FreeBSD handbook. For now, you can do an installation of
the GENERIC kernel, which works on most systems. To begin, enter the source
directory for the kernel:
</p>

<impo>
Please note that currently only the "Traditional" way of building the kernel is
supported on Gentoo/FreeBSD!
</impo>

<pre caption="Entering the kernel source directory">
# <i>cd /usr/src/sys/</i>
</pre>

<p>
Looking over the layout, you'll see various architectures and subdirectories
for various parts of the kernel. To begin the installation, we head into the
<path>i386/conf/</path> directory:
</p>

<pre caption="The kernel configuration directory">
# <i>cd i386/conf/</i>
# <i>ls</i>
.cvsignore      GENERIC         Makefile        PAE
DEFAULTS        GENERIC.hints   NOTES           SMP
</pre>

<p>
The main files to note are <path>GENERIC</path> and <path>GENERIC.hints</path>.
As it will be needed by the installation of the kernel, go ahead and copy
<path>GENERIC.hints</path> file to <path>/boot/device.hints</path>:
</p>

<pre caption="Copying over the GENERIC.hints file">
# <i>cp GENERIC.hints /boot/device.hints</i>
</pre>

<p>
This file is used by the kernel drivers for basic configuration information
such as IRQ settings. Now it's time to configure the kernel. FreeBSD uses the
<c>config</c> command to do this. <c>config</c> uses the given file (in this
instance GENERIC) to copy over the required build files to a
<path>compile</path> directory in the parent directory. <path>GENERIC</path> is
similiar to the <path>.config</path> file for the Linux kernel. Run
<c>config</c> to produce the build directory:
</p>

<pre caption="Configuring the kernel build">
# <i>config GENERIC</i>
Kernel build directory is ../compile/GENERIC
Don't forget to ''make cleandepend; make depend''
</pre>

<p>
<c>config</c> has created a GENERIC build directory for us in the parent
directory. <c>cd</c> into it, then run the following to do a complete build:
</p>

<pre caption="Building and installing the kernel">
# <i>cd ../compile/GENERIC</i>
# <i>make cleandepend &amp;&amp; make depend &amp;&amp; make &amp;&amp; make install</i>
</pre>

<p>
This will give us a complete kernel to work with.  Now we'll need to setup the
bootloader for the kernel to boot. The next chapter will discuss two methods of
setting up the bootloader: <c>boot0</c> and <c>grub</c>.
</p>

</body>
</section>
<section>
<title>Setting up the bootloader (boot0)</title>
<body>

<impo>
<c>boot0</c> is the FreeBSD bootloader. Previously, it was the only supported
bootloader until <c>grub</c> was introduced into ports with UFS slice support.
To install and configure <c>boot0</c>, run the following. Remember to replace
<c>adXsY</c> with the actual number and slice of your disk.
</impo>

<pre caption="Installing and setting up boot0">
# <i>emerge boot0</i>
<comment>(Leave the chroot environment)</comment>
# <i>exit</i>
<comment>(Issued from outside the chroot)</comment>
# <i>fdisk -B -b /mnt/boot/boot0 /dev/adX</i>
# <i>chroot /mnt/ /bin/bash</i>
# <i>disklabel -B adXsY</i>
</pre>

<p>
If you need additional information on setting up <c>boot0</c>, please consult
<uri
link="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/boot.html">chapter
12</uri> of the FreeBSD handbook. Now it's time to do some basic system
configuration and settings.
</p>

<p>
The next section will look at using the alternative bootloader, <c>grub</c>.
</p>

</body>
</section>
<section>
<title>Setting up the bootloader (grub)</title>
<body>

<p>
As of grub 0.97-r1, UFS slices are readable to <c>grub</c>. This lets us use
<c>grub</c> as a bootloader, the prefered method for those coming from a Linux
background. To begin, emerge <c>grub</c> and setup the label as bootable.
Remember to replace <c>adXsY</c> with the actual number and slice of your disk.
</p>

<pre caption="Emerge grub">
# <i>emerge grub</i>
# <i>disklabel -B adXsY</i>
</pre>

<p>
Now run <c>grub</c> to bring up the command prompt, and set up the partition as
shown:
</p>

<pre caption="Setting up grub">
<comment>(This is done to prevent disk error 29)</comment>
# <i>sysctl kern.geom.debugflags=16</i>
# <i>grub</i>
<comment>(Example using ad0s1d)</comment>
grub&gt; <i>root (hd0,0,d)</i>
 Filesystem type is ufs2, partition type 0xa5

grub&gt; <i>setup (hd0)</i>
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/ufs2_stage1_5" exists... yes
 Running "embed /boot/grub/ufs2_stage1_5 (hd0)"... 14 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+14 p (hd0,0,d)/boot/grub/stage
2 /boot/grub/menu.lst"... succeeded
Done.

grub&gt; quit
</pre>

<p>
To make the loader find the kernel on a specific slice (the default is 'a'),
add a <c>vfs.root.mountfrom</c> line to the <path>/boot/loader.conf</path>
file:
</p>

<pre caption="Tell the loader where to look for the kernel">
# <i>echo 'vfs.root.mountfrom="ufs:ad0s1d"' >> /boot/loader.conf</i>
</pre>

<p>
When you first boot, you may not receive a grub menu. If so, run this at the
prompt:
</p>

<pre caption="Booting the kernel with no menu">
grub&gt; <i>find /boot/grub/stage1</i>
<comment>(The output here is what you'll use in the next command)</comment>
 (hd0,0,d)

grub&gt; <i>kernel (hd0,0,d)/boot/loader</i>
  [FreeBSD-a.out, loadaddr=0x200000, text=0x1000, data=0x3a000, bss=0x0, entry=0x200000]

grub&gt; <i>boot</i>
</pre>

<note>
For more information on configuring grub, please refer to the <uri
link="/doc/en/handbook/handbook-x86.xml?part=1&amp;chap=10#doc_chap2">Gentoo
Linux Handbook</uri>.
</note>

<warn>
Grub doesn't follow UFS symlinks so be sure to delete the
<path>/boot/grub/menu.lst</path> symlink and to use <path>menu.lst</path> to
setup Grub (<path>grub.conf</path> isn't used).
</warn>

</body>
</section>
<section>
<title>System configuration</title>
<body>

<p>
First, we are going to setup the filesystem mounting points in
<path>/etc/fstab</path>.
</p>

<pre caption="Editing the filesystem in /etc/fstab">
# <i>nano /etc/fstab</i>
<comment>(This is an example, replace X and Y with the correct numbers for your hard disk.)</comment>
#Device         Mountpoint      Fstype          Options         Dump    Pass
/dev/adXsYb     none            swap            sw              0       0
/dev/adXsYa     /               ufs             rw              1       1
/dev/adXsYe     /usr/home       ufs             rw              2       2
/dev/adXsYd     /tmp            ufs             rw              2       2
/dev/acdX       /cdrom          cd9660          ro,noauto       0       0
</pre>

<p>
Now would also be a good time to set up your network connection before the final
reboot. You can find all the information necessary to configure your network in
the <uri link="/doc/en/handbook/handbook-x86.xml?part=4&amp;chap=1">Gentoo
Handbook</uri>. To have your network interface activated at boot time, you have
to add it to the default runlevel:
</p>

<pre caption="Adding your network adapter to the default runlevel">
# <i>rc-update add net.fxp0 default</i>
</pre>

<p>
Your system's hostname can be changed in <path>/etc/conf.d/hostname</path>.
</p>

<pre caption="Setting up the machine's hostname">
# <i>nano /etc/conf.d/hostname</i>
<comment>(Set the HOSTNAME variable to your hostname)</comment>
HOSTNAME="tux"
</pre>

<p>
You should also configure your domain name, which is done in the
<path>/etc/conf.d/domainname</path> file:
</p>

<pre caption="Setting the domainname">
# <i>nano /etc/conf.d/domainname</i>
<comment>(Set the dns_domain variable to your domain name, and lo to your local
network interface)</comment>
dns_domain_lo="homenetwork"
</pre>

<p>
If you have a NIS domain, you need to define it in the
<path>/etc/conf.d/domainname</path> file:
</p>

<pre caption="Setting the NIS domainname">
# <i>nano /etc/conf.d/domainname</i>
<comment>(Set the nis_domain variable to your NIS domain name, and lo to your local network interface)</comment>
nis_domain_lo="my-nisdomain"
</pre>

<note>
For more information on domainnames and networking, please refer to the <uri
link="/doc/en/handbook/handbook-x86.xml?part=1&amp;chap=8#doc_chap2">Gentoo
Linux Handbook</uri>, and please read the documentation in
<path>/etc/conf.d/net.example</path>.
</note>

<p>
In case you need to use another keyboard layout for your language, you have to
set the correct value in <path>/etc/conf.d/syscons</path>. The following example
uses the Spanish layout, so you'll have to adjust it to your need if you want to
use another one.
</p>

<pre caption="Changing your keyboard layout (Optional)">
# <i>nano /etc/conf.d/syscons</i>
KEYMAP="spanish.iso.acc"
<comment>(Possible layouts can be found in /usr/share/syscons/keymaps).</comment>
</pre>

<p>
Now would be a good time to set a password for the <c>root</c> user and to add
another user account for your day-to-day work.
</p>

<pre caption="Changing the root password and adding a new user">
# <i>passwd</i>
# <i>adduser</i>
Username: <i>fred</i>
Full Name: <i>Fred Smith</i>
<comment>(Accepting the default here, just hit Enter.)</comment>
Uid (Leave empty for default):
<comment>(OK to accept the default here as well; hit Enter.)</comment>
Login group [fred]:
<comment>(Enter your groups here, space separated. They must exist.)</comment>
Login group is fred. Invite fred into other groups? []: wheel portage
<comment>(OK to accept the default here, hit Enter)</comment>
Login class [default]:
<comment>(Somewhat of a personal preference.  Make sure the shell exists in /etc/shells)</comment>
Shell (sh bash tcsh csh esh ksh zsh sash nologin) [sh] <i>bash</i>
<comment>(OK to accept the default here, hit Enter for all these)</comment>
User password-based authentication [yes]
Use an empty password (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password: <i>password goes here</i>
Enter password again: <i>retype it</i>
<comment>(OK to accept the default here, hit Enter)</comment>
Lock out the account after creation? [no]:
Username    : fred
Password    : *****
Full Name   : Fred Smith
<comment>(This will vary)</comment>
Uid         : 1002
Class       :
Groups      : fred wheel portage
Home        : /home/fred
Shell       : /bin/bash
Locked      : no
<comment>(Confirm the information is correct)</comment>
OK? (yes/no): <i>yes</i>
adduser: INFO: Sucessfully added (fred) to the user database
Add another user? (yes/no): <i>no</i>
Goodbye!
#
</pre>

<p>
Congratulations, you have just finished your Gentoo/FreeBSD installation which
you can start exploring after the final reboot. Have fun!
</p>

<pre caption="Rebooting the system">
# <i>exit</i>
# <i>reboot</i>
</pre>

</body>
</section>
</chapter>

<chapter>
<title>Developing for Gentoo/FreeBSD</title>
<section>
<title>How to help</title>
<body>

<p>
There are many things you could help with, depending on your skill level and
spare time:
</p>

<ul>
  <li>
    Working on current ebuilds: this means working closely with ebuild
    maintainers in order to create patches or modify ebuilds in a way that can
    be accepted into the main tree.
  </li>
  <li>
    Security: if you are into security, we need you! Although security
    advisories from the FreeBSD project are tracked and fixed, we can always
    use help in this area.
  </li>
  <li>
    Contacts: we need people who can get in touch with FreeBSD developers to
    maintain contacts between us and the original project to exchange patches
    and discuss various problems and their solutions. Note that this should
    never involve any kind of spamming of mailing lists or IRC channels.
  </li>
  <li>
    Testing: the more people are actively using Gentoo/FreeBSD, the more bugs
    will be discovered, which helps us improving the quality of the port. If
    you are good at describing bugs or problems, we definitely want to hear
    from you.
  </li>
  <li>
    Other areas where we need help include: system ebuilds, creation of
    installation CDs, documentation, kernel hacking.
  </li>
</ul>

</body>
</section>

<section>
<title>Known issues</title>
<body>

<p>
At the moment, there are still quite a lot of known issues. Here are the ones
really worth noting:
</p>

<ul>
  <li>
    Some init scripts depend on the clock service which we don't provide right
    now. You can just remove it from the dependencies of the script and report
    that on our <uri link="http://bugs.gentoo.org/">Bugzilla</uri>. Please
    remember to use the "Gentoo/Alt" product for your submission.
  </li>
</ul>

</body>
</section>
</chapter>

<chapter>
<title>Contact</title>
<section>
<body>

<p>
A list of Gentoo/FreeBSD developers can be found at the <uri
link="/proj/en/gentoo-alt/bsd/fbsd/">project page</uri>. Other ways to contact
Gentoo/FreeBSD developers include our IRC Channel <c>#gentoo-bsd</c> on
Freenode, as well as the <uri link="/main/en/lists.xml">gentoo-bsd mailing
list</uri>.
</p>

</body>
</section>
</chapter>
</guide>
