User:Greg.fleury

From Gentoo Wiki
Jump to:navigation Jump to:search


This guide is currently under development.

This is a comprehensive guide for creating the ultimate desktop environment on the Gentoo distribution of the Linux-kernel based platform.

Preface

Before I get into the technical details, I wanted to share a few guiding principles for my approach. This guide is very extensive, and contains a lot of detail about how to make a very powerful workstation for any use: development, graphic design, gaming, etc. Since I often work with graphic design in my own profession, I've spent a lot of time evaluating many different desktop environments and customization approaches to balance productivity with a high degree of visual appeal and usability.

This guide is written from a first-person perspective, because it truly is a one man's opinion on how to achieve the ultimate desktop experience. I prefer it this way, because I believe it's easier to read. But don't worry, you will have plenty of access to specifications, howtos, man pages that I base this guide on.

Lastly, I've been running this setup for the better part of a decade. In 2011, I replaced all our workstations with ones that contain a Dell Precision-specific build of this system for all employees, including the non-technical stuff. Everyone loves it so far.

I am a frequent visitor to #gentoo on FreeNode on IRC under the nickname Larzen. By all means come in and chat. Also, feel free to contribute to this guide in any way you see fit.

Desktop Environment Key Components

This section lists the key components and design decisions that we are going to make.


64-bit Linux Kernel and no Multilib

I've made use of the vanilla Linux kernel for the x86 instruction set (64-bit). I prefer to use the LTS (long term) versions, and run the latest patch set. I generally do not require 32-bit compatibility on my systems, so I have excluded multilib and 32-bit options.

UEFI

In this guide I do not employ the use of a Boot Manager, but instead an EFI stub kernel that boots the system directly. Having been a fan of Grub for well over a decade, I've found this method to be very convenient. If you would like to read more about EFI, be sure to check out UEFI Wiki.

Nvidia Display

This guide selected an nvidia card as base display device. This decision was certainly not based on Linux compatibility or their contribution to open source. I use the PC for design, and in that world, Nvidia is leaps and bounds ahead of the competition.

My second choice would be an Intel-based display system.

systemd

systemd bootstraps ther userspace, manages daemons, processes, network connections, etc.. It seems to do more and more each month. We will employ some aspects of the system, but leave other's for you to explore. To read more about systemd, check out Wikipedia's systemd Wiki Page.

Xfce

After using many desktop environments, I settled on Xfce. It is fast, extremely stable, and very feature-full. This one, I am quire strongly attached to, and I feel that it makes all the difference when it comes to the user experience.


Goal of this Guide

The goal of this guide is to create a comprehensive and very practical how-to for building a fully featured Linux workstation, from near-scratch. A secondary goal is for the reader to learn a little about the various Linux sub-systems and supporting software to enhance their overall knowledge of the Linux world. Some guides spend way too much time on teaching you about each system and explaining things that you may not be interested in. My philosophy is pragmatic in nature: give you enough information to Google anything that you want to learn more about.

Target Systems

Although all these steps can be applied to a virtualized environment, the goal is to create a Workstation environment. This guide currently does not make any special provisions for laptops, x86-based tablets, or to be built as guest virtual machines.


Preparing a Bootable Environment

This part of the guide takes you through the process of preparing a bootable Linux environment using UEFI kernel stub and a steel-thread set of tools that are largely based on Gentoo's Stage3 Tarball. However, before we get to booting the system, we need to fetch a few items.

Software You'll Need

There are two key pieces of software that you will need

  • UEFI-bootable Installation Media - ISO of the Gentoo bootstrap with the most common user utilities. You can use nearly any distro to do this, but I highly recommend downloading and building a USB-bootable version of SystemRescueCd. Recent ISOs can be found in their Download section.
  • Stage 3 - No-multilib Systemd amd64 Tarball - This is the base set of tools that covers you for booting and running a bare-metal Linux environment. Tarballs can be downloaded from the Gentoo Website's Download Section It is important that you download the No-multilib systemd variant for amd64.

Please note that the amd64 architecture is intended for use on both AMD 64-bit CPUs and 64-bit Intel Pentium/Core/Xeon/Atom processors.

Creating the Bootable Image

After downloading the ISO, you will need to boot from it in UEFI mode. So first, you will need to use your host system to make the USB stick.

Instructions for creating a bootable USB in EFI mode can be found in How To Make a Bootable USB Stick. This covers a variety of OSes, so regardless what your system of origin is, you should be able to accomplish this task and successfully boot into that environment.

Note
Some may wonder if you can use the Gentoo Minimal CD to do this. The answer is no. The minimal CD does not have EFI boot capability, and therefore cannot be used to build an EFI-bootable system. The whole EFI system requires that you boot in UEFI mode to create the appropriate tables and variables.

You may also want to buy a USB3 stick and use it on a USB3-capable port. This really reduces the amount of time that it takes for files to be written, read, etc.

Booting the System Rescue Image For the First Time

Boot the image, select the default kernel (first option) and let it go to the prompt. You will see a very vanilla like prompt: