Установка Gentoo. Короткая инструкция.

0. Разбивка диска

  • EFI System Partition (ESP) - для хранения загрузчика и файлов EFI.
  • Swap-раздел - для подкачки и использования в качестве дополнительной памяти, если оперативная память будет исчерпана.
  • Корневой раздел - для хранения основных системных файлов и программ.
  • /home раздел - для хранения пользовательских данных и настроек. Пример разбивки на основном диске /dev/sda:
/dev/sda1 - 512M - EFI System Partition (ESP)
/dev/sda2 - 8G   - Linux swap
/dev/sda3 - 50G  - Linux filesystem (ext4) - корневой раздел /
/dev/sda4 - оставшееся пространство - Linux filesystem (ext4) - раздел /home

Выполните разбивку диска с помощью утилиты gdisk или parted:

gdisk /dev/sda

или

parted /dev/sda

Создайте файловые системы на разделах и смонтируйте их:

mkfs.fat -F32 /dev/sda1
mkswap /dev/sda2
swapon /dev/sda2
mkfs.ext4 /dev/sda3
mkfs.ext4 /dev/sda4

Теперь смонтируйте разделы в соответствующие места:

mount /dev/sda3 /mnt/gentoo
mkdir /mnt/gentoo/home
mount /dev/sda4 /mnt/gentoo/home

После установки Gentoo, не забудьте указать разделы в файле /etc/fstab. Вот пример файла /etc/fstab для данной разбивки диска:

/dev/sda1       /boot/efi       vfat        umask=0077,shortname=winnt 0 2
/dev/sda2       none            swap        sw                      0 0
/dev/sda3       /               ext4        defaults                1 2
/dev/sda4       /home           ext4        defaults                1 2

1. Stage-3

Первым делом загрузите актуальный образ

wget https://distfiles.gentoo.org/releases/amd64/autobuilds/current-stage3-amd64-openrc/stage3-amd64-openrc-20220320T170531Z.tar.xz

извлекаем

tar xpf stage3* --xattrs-include='*.*' --numeric-owner

Монтируем и делаем chroot

cd /mnt/gentoo
mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
mount --bind /run /mnt/gentoo/run
mount --make-slave /mnt/gentoo/run
cp /etc/resolv.conf etc && chroot . /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"

2. Настройка системы

2.1 Конфигурация репозитория

Пример базового make.conf

CFLAGS="-march=broadwell -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"

USE_X=""
USE_SYSTEM=""
USE_MEDIA=""
USE_NET=""
USE_DEV=""
USE_OFFICE=""
USE_VIRT=""

USE_ARCHIVES="lzo rar zip"
USE_CPUFLAGS_LEGACY="aes avx avx2 fma3 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
USE_LLVM=" -llvm_targets_AArch64 -llvm_targets_AMDGPU -llvm_targets_ARM -llvm_targets_AVR -llvm_targets_BPF -llvm_targets_Hexagon -llvm_targets_Lanai -llvm_targets_MSP430 -llvm_targets_Mips -llvm_targets_NVPTX -llvm_targets_PowerPC -llvm_targets_RISCV -llvm_targets_Sparc -llvm_targets_SystemZ -llvm_targets_XCore -llvm_targets_ARC -llvm_targets_CSKY -llvm_targets_M68k -llvm_targets_VE"
USE="-bindist $USE_X $USE_SYSTEM $USE_MEDIA $USE_NET $USE_OFFICE $USE_VIRT $USE_ARCHIVES $USE_DEV $USE_LLVM"

MAKEOPTS="-j8 -s"
EMERGE_DEFAULT_OPTS="--jobs 2 --load-average 10 --quiet-build y"
CPU_FLAGS_X86="aes avx avx2 fma3 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"

FEATURES="parallel-fetch metadata-transfer candy sandbox -xattr"

GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/"
ABI_X86="64"
ACCEPT_LICENSE="*"
# PORTDIR="/var/db/repos/"

REPOSDIR="/var/db/repos"
DISTDIR="${REPOSDIR}/distfiles"
PKGDIR="${REPOSDIR}/packages"
DARKELF_FEATURES="postmerge_distclean"

LINGUAS="ru ru_RU"
L10N="$LINGUAS"
GRUB_PLATFORMS="efi-64"
VIDEO_CARDS="nvidia i965"
ALSA_CARDS="hda-intel intel8x0"
INPUT_DEVICES="evdev mouse"
CAMERAS="ptp2"

PYTHON_TARGETS="python3_10"
PYTHON_SINGLE_TARGET="python3_10"
LLVM_TARGETS="X86 WebAssembly"

Синхронизируем и обновляем

emerge-webrsync && emerge -avuDN @world

2.2 Установка локали

Добавить в /etc/env.d/02locale

LANG=ru_RU.UTF8
LC_COLLATE="C"

Добавить в /etc/locale.gen

ru_RU.UTF-8 UTF-8
en_US.UTF-8 UTF-8
C.UTF8 UTF-8

и запустить

locale-gen

2.3 Установка имени хоста

Добавить в /etc/conf.d/hostname

HOSTNAME="dmitry-pc"

2.3 Установка часового пояса

Делаем симлинк для файла с нужным временем в /etc/localtime

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

2.4 Настройка ядра

2.4.1 Подготовка

Устанавливаем исходники и genkernel

emerge -av sys-kernel/gentoo-sources sys-kernel/linux-firmware sys-kernel/genkernel

Проверяем, что ядро есть в списке

eselect kernel list

и выбираем его как основное

eselect kernel set 1

это создаст симлинк на /usr/src/linux/.

2.4.2 Настраиваем genkernel

Перед конфигурацие ядра надо настроить /etc/genkernel.conf в соответствии с системой где это все будет работать

2.4.3 Настройка и сборка ядра

Генерируем конфигурационный файл ядра и собираем его(sys-apps/pciutils может помочь собрать данные о модулях)

genkernel --menuconfig all

если конфиг уже есть (/usr/src/linux/.config), тогда просто запускаем

genkernel --oldconfig all

2.4.4 Пересобираем систему с новым конфигом ядра (опционально)

emerge -e @world    

2.4.5 Параметры загрузчика

В файле /etc/default/grub устанавливаем параметры ядра с которыми система будет загружена. Т.к. у меня видеокарта Nvidia и использую проприоритарные драйверы по-умолчанию, то добавляю в черный список opensource драйверы и активирую drm

GRUB_CMDLINE_LINUX="rd.driver.blacklist=nouveau modprobe.blacklist=nouveau net.ifnames=0 biosdevname=0 nvidia-drm.modeset=1 resume=/dev/mapper/VolGroup-lvolswap rd.lvm.lv=VolGroup/lvolswap hid_apple.fnmode=2 retbleed=stuff mitigations=off rhgb quiet splash"

Так же переключаю на старое именование сетевых интерфейсов (eth0/1/2,wlan0/1/2) net.ifnames=0 biosdevname=0.

Начиная с ядра 6.2 стало возможно исправить проблему Retbleed установив специальный параметр retbleed=stuff mitigations=off и тем самым немного повысить производительность CPU в системе. Подробнее можно прочитать тут: https://www.phoronix.com/review/skylake-retbleed-stuff

Для сохранения изменений выполняем

sudo grub-mkconfig -o /boot/grub/grub.cfg

3. Настройка пользователей

Устанавливаем пароль для root

passwd

Создаем нового пользователя с группой по-умолчанию

groupadd dmitry

useradd -g dmitry -G wheel,portage,audio,video,usb,cdrom -m dmitry

задаем пароль

passwd dmitry

4. Настройка окружения

4.1 vsonsole

Vconsole - это инструмент для настройки параметров виртуальной консоли, таких как шрифты и раскладки клавиатуры. Установите его и настройте согласно вашим предпочтениям:

emerge --ask sys-apps/v86d
nano /etc/vconsole.conf
...
FONT=ter-v12n

4.2 eix

Eix - это инструмент для поиска и работы с пакетами в Gentoo. Установите его и обновите его базу данных:

emerge --ask app-portage/eix
eix-update

4.2 KDE

Прежде чем устанавливать KDE Plasma, нужно установить Xorg, базовую систему отображения графического интерфейса. Для этого выполните следующую команду

emerge --ask x11-base/xorg-drivers x11-base/xorg-server

Затем следует выбрать профиль, который содержит описания пакетов для KDE

eselect profile list
eselect profile set <номер профиля с KDE>

И устанавливаем мета-пакет

emerge --ask --verbose --update --deep --newuse @world
emerge --ask kde-plasma/plasma-meta

4.2.1 Вход

Еще нужно окно входа в сеанс, будем использовать sddm

emerge --ask x11-misc/sddm
systemctl enable sddm

4.2.2 Звук

Установите систему звука PulseAudio и соответствующие утилиты:

emerge --ask media-sound/pulseaudio

4.2.3 Приложения

Gentoo предоставляет множество приложений KDE, которые можно установить по желанию. Например, установите набор приложений из KDE Applications:

emerge --ask kde-apps/kde-apps-meta

Теперь все готово для использования KDE Plasma на вашей системе Gentoo! Завершите установку, выполнив перезагрузку:

reboot

После перезагрузки вы увидите экран приветствия SDDM, и сможете войти в свой аккаунт. Наслаждайтесь вашим новым рабочим окружением KDE Plasma на Gentoo Linux!

Полную инструкцию по установке и настройке Gentoo всегда можно найти тут: Handbook