Raspberry Pi/Quick Install Guide

Installing Gentoo onto a Raspberry Pi is relatively straight forward and in some ways easier than installing Gentoo on another system because a kernel image is provided by the Raspberry Pi Foundation. This means Gentoo can be quickly installed quickly onto a Raspberry Pi.

This quick install guide presumes the reader will be installing from a Linux based operating system.

Preparing the SD card
The Raspberry Pi boots off a FAT32 partition. It will also require root and swap partitions.

Create the partitions
Use the fdisk utility to create the partitions:

Create the file systems
When using a 4GB SD card:

Installation
The installation will be preformed onto the SD card.

Install kernel and modules
The Raspberry Pi Foundation maintains a branch of the Linux kernel that will run on the Raspberry Pi, including a compiled version which we use here:

Edit fstab
Edit the file to match the previously created partition scheme:

Set boot options
Create a file called in  to pass options to the kernel:

Edit make.conf
The default includes basic CFLAGS. To change the settings to something more 'optimal' for the Pi look at the details on the relevant wiki page.

Configure time zone
View a list of time zones using this command:

Choose the appropriate time zone. Note that some of the listings in the directory are folders that contain more specific time zones. For example, supposing Europe/London is the local time zone:

Next set the timezone:

Clear root password
As we do not chroot before we boot, you will need to unset the root password. Allowing you to login with a blank password for the root user.

Edit the line for root so it looks like the example below.

Unmount the SD card and boot the Raspberry Pi
Unmount the SD card:

Plugin the SD card to your Raspberry Pi, make sure you have a keyboard and monitor also plugged in then connect the power. Hopefully Gentoo will boot giving you a login prompt, login as root and no password. During the first boot you will see a few warnings and errors which we will fix in the next section.

Set root password
Immediately set a root password:

Enabling networking on boot
Assuming you are using DHCP on the eth0.

NOTICE: You have to copy net.lo, a symlink doesn´t work!

Please also note that you might need to run

to force an update of the dependency tree. This may be needed in the event of clock skew (in this specific case the eth0 device will not start up after reboot).

Select profile
List the available profiles.

Select the desired profile, for example [25] default/linux/arm/13.0/armv6j:

Configuring inittab and rc.conf
Uncomment the linux specific rc.conf rc_sys value, to stop warning in boot up.

Comment out the s0 Serial console to stop "INIT: Id "s0" respawning too fast" messages on the console.

Enable software clock
The Raspberry Pi does not have a hardware clock, so you need to disable the hwclock daemon and enable swclock.

You still need to set the date before to install any package or in compiling fase it will complain. Check system time using date command.

If the date/time displayed is wrong, update it using the date MMDDhhmmYYYY syntax (Month, Day, hour, minute and Year). At this stage, you should start use the timezone you setted before in the Configure time zone section. For instance, to set the date to May 02th, 04:21 in the year 2013:

Now you can set the system time using NTP software to setup the system clock on boot.

Overclocking
It is very easy to overclock a Raspberry Pi up to 1000MHz without affecting your warranty

Enabling Overclocking
To enable overclocking select one of the suggest modes from the list above, "Medium" is generally a good starting point. Edit the /boot/config.txt, add the appropriate values and reboot the Raspberry Pi for changes to take effect.

Optional cpupower
To manage the CPU frequency scaling you can use the.

The default scaling governor can be changed in the /etc/conf.d/cpupower file

Confirm the current scaling and CPU using the cpupower command

Force Turbo Option
The force turbo option turns off the dynamic clocks and runs the Raspberry Pi constantly at the highest arm_freq.  Edit the /boot/config.txt, add force_turbo=1 then reboot the Raspberry Pi for changes to take effect.

Changing memory split
Not strictly speaking speaking overclocking, but the memory used by the GPU can be changed. To change the memory used by the GPU down to a minimum of 16MB add the gpu_mem value to /boot/config.txt, then reboot the Raspberry Pi for changes to take effect.

Cross building (Optional)
This is not strictly required, but it is extremely practical given the source driven nature of Gentoo. Building almost anything on the Raspberry Pi takes a very, very long time - especially when there are a lot of dependencies involved.

Fortunately, you can offload much of the heavy lifting work to a more powerful system (such as your main gentoo desktop/server) using crossdev and distcc (though this will only work for packages must compile c/c++).

Full details of using distcc and crossdev on the Raspberry Pi are described in Raspberry Pi Cross building.

Hardware Random Number Generator
The Arch Wiki tells us that the Raspberry Pi has a hardware random number generator.

Hooking it up to /dev/random is done via the following steps.

Apply settings in /etc/conf.d/rngd
Add the following to /etc/conf.d/rngd

Check that /dev/random is slow
To verify that we have done everything correctly, open a new terminal and do: It will start displaying gibberish (random) but will stop at some point or at least slow down. Now issue CTRL+C to stop it.

Test if it works
Again, issue: in another terminal. Now the random information should be flowing faster than the first time around. Now issue CTRL+C to stop it.

On an idling Pi (networked via a Wi-Fi USB dongle, a USB keyboard attached, display connected) /dev/random spews 4-5 "chars" of random information before it blocks. After loading the module and starting rng-tools, it began printing out many lines without blocking.

Add rng-tools to boot
If all is good, add rngd to boot.

Add loading of bcm2708-rng to boot
Add the following to /etc/conf.d/modules so that the module gets loaded at boot

Install Video Core Userland tools and libraries
The ARM side libraries for interfacing to Raspberry Pi GPU are included in a package raspberrypi-userland. Which includes the Video Core tools, GLES2, EGL, openmax and openVG libs that support the Raspberry Pi GPU.

Then optionally add the following to your shellrc (.bashrc/.zshrc) file to be able to call things like vcgencmd directly.

External resources

 * Gentoo Embedded Handbook with more information about embedded hardware, cross compiling and other related topics.
 * Raspberry Pi Hub at eLinux wiki, with more advanced tutorials to get the most out of your Raspberry Pi