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.
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:
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:
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
First, boot the CD in order to begin the installation process. You'll be
presented with a login screen. The username is
# ifconfig fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=8<VLAN_MTU> 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 <full-duplex>) status: active lo0: flags=8007<LOOPBACK,MULTICAST> mtu 16384
If the original DHCP request during the CD bootup failed, you can use the
# dhclient fxp0 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
Now that we have a mount point, it's time to partition the drive. This is done
with the
# sysinstall diskPartitionEditor diskPartitionWrite
We recommend that you use the default layout. Press enter at the dialog, then press a followed by q 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.
This next step also uses
# sysinstall diskLabelEditor diskLabelCommit
Here, we'll refrain from using the automatic layout, and create one giant root
partition, followed by a swap partition. Hit c 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
When choosing a different mountpoint than
# disklabel ad0s1 | sed 's/^ d:/ a:/' > label # disklabel -R ad0s1 label
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 (
# mount ... /dev/ad0s1a on /mnt (ufs, local)
Now that you have mounted the target partition, it is time to start on the Gentoo setup.
First, we need to download a stage3 tarball and unpack it into the chroot.
Point your browser to
# cd /mnt/(Any other Gentoo mirror which includes the experimental/ directory will also work.) # wget http://gentoo.osuosl.org/experimental/x86/freebsd/stages/stage3-x86-freebsd-6.2.tar.bz2 # tar -jxvpf stage3-x86-freebsd-6.2.tar.bz2(You can delete the tarball with the following command if you want to.) # rm stage3-x86-freebsd-6.2.tar.bz2
In order for your install to work, you need to mount the
# mount -t devfs none /mnt/dev/ # cp /etc/resolv.conf /mnt/etc/ # chroot /mnt/ /bin/bash # env-update && source /etc/profile
After you obtain the Gentoo/FreeBSD overlay, it's time to link
Now, you have to obtain a copy of the main Gentoo Portage tree, which depending on your connection might take quite a while.
# emerge --sync(It's also possible to retrieve the Portage tree in another way:) # cd / # wget http://gentoo.osuosl.org/snapshots/portage-latest.tar.bz2 # tar -xjf portage-latest.tar.bz2 -C /usr/ # emerge --metadata
# ln -sf /usr/portage/profiles/default-bsd/fbsd/6.2/x86/ /etc/make.profile # nano /etc/make.conf(Please make sure you add at least the following entries:) CHOST="i486-gentoo-freebsd6.2" FEATURES="collision-protect"
If you want, you can now rebuild the system's core packages.
# emerge -e system
First make sure your date and time is set correctly using
(Check the clock) # date Mon Mar 6 00:14:13 UTC 2006(Set the current date and time if required) # date 200603060016(Format is yyyymmddHHMM) Mon Mar 6 00:16:00 UTC 2006
Next, set your time zone information by using the correct listing in
# ls /usr/share/zoneinfo(Using Brussels as an example) # cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime # date Wed Mar 8 00:46:05 CET 2006
Edit
# nano -w /etc/conf.d/clock TIMEZONE="Europe/Brussels"
If you ran
# emerge freebsd-sources
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
# cd /usr/src/sys/
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
# cd i386/conf/ # ls .cvsignore GENERIC Makefile PAE DEFAULTS GENERIC.hints NOTES SMP
The main files to note are
# cp GENERIC.hints /boot/device.hints
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
# config GENERIC Kernel build directory is ../compile/GENERIC Don't forget to ''make cleandepend; make depend''
# cd ../compile/GENERIC # make cleandepend && make depend && make && make install
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:
# emerge boot0(Leave the chroot environment) # exit(Issued from outside the chroot) # fdisk -B -b /mnt/boot/boot0 /dev/adX # chroot /mnt/ /bin/bash # disklabel -B adXsY
If you need additional information on setting up
The next section will look at using the alternative bootloader,
As of grub 0.97-r1, UFS slices are readable to
# emerge grub # disklabel -B adXsY
Now run
(This is done to prevent disk error 29) # sysctl kern.geom.debugflags=16 # grub(Example using ad0s1d) grub> root (hd0,0,d) Filesystem type is ufs2, partition type 0xa5 grub> setup (hd0) 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> quit
To make the loader find the kernel on a specific slice (the default is 'a'),
add a
# echo 'vfs.root.mountfrom="ufs:ad0s1d"' >> /boot/loader.conf
When you first boot, you may not receive a grub menu. If so, run this at the prompt:
grub> find /boot/grub/stage1(The output here is what you'll use in the next command) (hd0,0,d) grub> kernel (hd0,0,d)/boot/loader [FreeBSD-a.out, loadaddr=0x200000, text=0x1000, data=0x3a000, bss=0x0, entry=0x200000] grub> boot
First, we are going to setup the filesystem mounting points in
# nano /etc/fstab(This is an example, replace X and Y with the correct numbers for your hard disk.) #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
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
# rc-update add net.fxp0 default
Your system's hostname can be changed in
# nano /etc/conf.d/hostname(Set the HOSTNAME variable to your hostname) HOSTNAME="tux"
You should also configure your domain name, which is done in the
# nano /etc/conf.d/domainname(Set the dns_domain variable to your domain name, and lo to your local network interface) dns_domain_lo="homenetwork"
If you have a NIS domain, you need to define it in the
# nano /etc/conf.d/domainname(Set the nis_domain variable to your NIS domain name, and lo to your local network interface) nis_domain_lo="my-nisdomain"
In case you need to use another keyboard layout for your language, you have to
set the correct value in
# nano /etc/conf.d/syscons KEYMAP="spanish.iso.acc"(Possible layouts can be found in /usr/share/syscons/keymaps).
Now would be a good time to set a password for the
# passwd # adduser Username: fred Full Name: Fred Smith(Accepting the default here, just hit Enter.) Uid (Leave empty for default):(OK to accept the default here as well; hit Enter.) Login group [fred]:(Enter your groups here, space separated. They must exist.) Login group is fred. Invite fred into other groups? []: wheel portage(OK to accept the default here, hit Enter) Login class [default]:(Somewhat of a personal preference. Make sure the shell exists in /etc/shells) Shell (sh bash tcsh csh esh ksh zsh sash nologin) [sh] bash(OK to accept the default here, hit Enter for all these) User password-based authentication [yes] Use an empty password (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: password goes here Enter password again: retype it(OK to accept the default here, hit Enter) Lock out the account after creation? [no]: Username : fred Password : ***** Full Name : Fred Smith(This will vary) Uid : 1002 Class : Groups : fred wheel portage Home : /home/fred Shell : /bin/bash Locked : no(Confirm the information is correct) OK? (yes/no): yes adduser: INFO: Sucessfully added (fred) to the user database Add another user? (yes/no): no Goodbye! #
Congratulations, you have just finished your Gentoo/FreeBSD installation which you can start exploring after the final reboot. Have fun!
# exit # reboot
There are many things you could help with, depending on your skill level and spare time:
At the moment, there are still quite a lot of known issues. Here are the ones really worth noting:
A list of Gentoo/FreeBSD developers can be found at the