Handbook:Parts/Installation/Stage

Setting the date and time
Before installing Gentoo, it is a good idea to be sure the date and time are set correctly. A mis-configured clock may lead to strange results: base system files should be extracted with accurate time stamps. In fact, due to several websites and services using encrypted communications (SSL/TLS), it might not be possible to download the installation files at all if the system clock is too far skewed!

Verify the current date and time by running the command:

If the date/time displayed is wrong, update it using one of the methods below.

Automatic
Official Gentoo installation media includes the command (available through the  package). Official media includes a configuration file pointing to ntp.org time servers. It can be used to automatically sync the system clock to UTC time using a time server. Using this method requires a working network configuration and may not be available on all architectures.

Manual
The command can also be used to perform a manual set on the system clock. Use the  syntax (Month, Day, hour, minute and Year).

UTC time is recommended for all Linux systems. Later on during the installation a timezone will be defined. This will modify the display of the clock to local time.

For instance, to set the date to October 3rd, 13:16 in the year 2016:

Multilib (32 and 64-bit)
Choosing a base tarball for the system can save a considerable amount of time later on in the installation process, specifically when it is time to choose a system profile. The selection of a stage tarball will directly impact future system configuration and can save a headache or two later on down the line. The multilib tarball uses 64-bit libraries when possible, and only falls back to the 32-bit versions when necessary for compatibility. This is an excellent option for the majority of installations because it provides a great amount of flexibility for customization in the future. Those who desire their systems to be capable of easily switching profiles should download the multilib tarball option for their respective processor architecture.

Most users should not use the 'advanced' tarballs options; they are for specific software or hardware configurations.

No-multilib (pure 64-bit)
Selecting a no-multilib tarball to be the base of the system provides a complete 64-bit operating system environment. This effectively renders the ability to switch to multilib profiles improbable, but possible. Those who are just starting out with Gentoo should not choose a no-multilib tarball unless it is absolutely necessary.

Downloading the stage tarball
Go to the Gentoo mount point where the root file system is mounted (most likely ):

Depending on the installation medium, there are a couple of tools available to download a stage. One of these tools is, a non-graphical, menu-driven browser. To download a stage, surf to the Gentoo mirror list like so:

To use an HTTP proxy with, pass on the URL with the  option:

Next to there is also the  browser. Like it is a non-graphical browser but it is not menu-driven.

If a proxy needs to be defined, export the http_proxy and/or ftp_proxy variables:

On the mirror list, select a mirror close by. Usually HTTP mirrors suffice, but other protocols are available as well. Move to the directory. There all available stage files are displayed (they might be stored within subdirectories named after the individual sub-architectures). Select one and press to download.

Like with the minimal installation CDs, additional downloads are available:


 * A file that contains a list of all files inside the stage tarball
 * A file that contains checksums of the stage file, in different algorithms
 * A file that, like the  file, contains checksums of the stage file in different algorithms, but is also cryptographically signed to ensure it is provided by the Gentoo project

When finished, press to quit the browser.

After downloading the stage file, it is possible to verify the integrity of the downloaded stage tarball. Use and compare the output with the checksums provided by the  or  file.

For instance, to validate the SHA512 checksum:

Another way is to use the command:

To validate the Whirlpool checksum:

Compare the output of these commands with the value registered in the files. The values need to match, otherwise the downloaded file might be corrupt (or the digests file is).

Just like with the ISO file, it is also possible to verify the cryptographic signature of the file using  to make sure the checksums have not been tampered with:

Unpacking the stage tarball
Now unpack the downloaded stage onto the system. We use to proceed:

Make sure that the same options ( and  ) are used. The  stands for Extract, the   for Verbose to see what happens during the extraction process (optional), the   for Decompress with bzip2, the   for Preserve permissions and the   to denote that we want to extract a File, not standard input. is to include the extended attributes stored in the archive. Finally,  is used to ensure that the user and group IDs of the files being extracted from the tarball will remain the same as the Gentoo release engineering team intended, even if naughty users are not using official Gentoo installation media.

Now that the stage file is installed, continue with Configuring the compile options.

Introduction
To optimize Gentoo, it is possible to set a couple of variables which impacts the behavior of Portage, Gentoo's officially supported package manager. All those variables can be set as environment variables (using ) but that isn't permanent. To keep the settings, Portage reads in the file, a configuration file for Portage.

Fire up an editor (in this guide we use ) to alter the optimization variables we will discuss hereafter.

From the file it is obvious how the file should be structured: commented lines start with "#", other lines define variables using the VARIABLE="content" syntax. Several of those variables are discussed next.

CFLAGS and CXXFLAGS
The CFLAGS and CXXFLAGS variables define the optimization flags for the GCC C and C++ compiler respectively. Although those are defined generally here, for maximum performance one would need to optimize these flags for each program separately. The reason for this is because every program is different. However, this is not manageable, hence the definition of these flags in the file.

In one should define the optimization flags that will make the system the most responsive generally. Don't place experimental settings in this variable; too much optimization can make programs behave bad (crash, or even worse, malfunction).

We will not explain all possible optimization options. To understand them all, read the GNU Online Manual(s) or the gcc info page ( - only works on a working Linux system). The file itself also contains lots of examples and information; don't forget to read it too.

A first setting is the  or   flag, which specifies the name of the target architecture. Possible options are described in the file (as comments). A commonly used value is native as that tells the compiler to select the target architecture of the current system (the one users are installing Gentoo on).

A second one is the  flag (that is a capital O, not a zero), which specifies the gcc optimization class flag. Possible classes are s (for size-optimized), 0 (zero - for no optimizations), 1, 2 or even 3 for more speed-optimization flags (every class has the same flags as the one before, plus some extras). is the recommended default. is known to cause problems when used system-wide, so we recommend to stick to.

Another popular optimization flag is  (use pipes rather than temporary files for communication between the various stages of compilation). It has no impact on the generated code, but uses more memory. On systems with low memory, gcc might get killed. In that case, do not use this flag.

Using  (which doesn't keep the frame pointer in a register for functions that don't need one) might have serious repercussions on the debugging of applications.

When the CFLAGS and CXXFLAGS variables are defined, combine the several optimization flags in one string. The default values contained in the stage3 archive that is unpacked should be good enough. The following one is just an example:

MAKEOPTS
The MAKEOPTS variable defines how many parallel compilations should occur when installing a package. A good choice is the number of CPUs (or CPU cores) in the system plus one, but this guideline isn't always perfect.

Ready, set, go!
Update the file to match personal preference and save (nano users would hit +).

Then continue with Installing the Gentoo base system.