Gentoo Linux: установка руками — предыстория, философия и базовый старт
Зачем вообще Gentoo, когда «всё уже ставится за 15 минут»
Если коротко: Gentoo выбирают не ради позы, а ради контроля. Это Linux, где ты понимаешь, что именно стоит в системе, почему оно стоит, и какие компромиссы ты осознанно принял. Здесь почти невозможно «случайно поставить лишнее» так, чтобы потом год разгребать последствия. Это не магия — это дисциплина.
Есть дистрибутивы, которые ставятся через инсталлятор и сразу дают «готовую ОС». Это удобно, быстро и иногда даже правильно. Но в таких системах много решений принято за тебя: что включено, что выключено, какие зависимости подтянулись, какие сервисы стартуют, что считается «нормой».
В этой статье мы сознательно не даём инструкций по установке «инсталляторных» дистрибутивов, где всё решает мастер установки (типа тех, что ставятся через Anaconda и аналоги). Здесь другой жанр: руками, проверяемо, без театра.
Gentoo хорош там, где важны повторяемость, предсказуемость и производительность в долгую: домашний сервер, хостинг, лаборатория, билд-ферма, игровая инфраструктура, нестандартное железо, тонкая настройка стека.
Контекст и допущения
Ниже — базовый «скелет» установки Gentoo на UEFI-машину с GPT. Он не завязан на конкретную DE/WM: цель — получить чистую, загружаемую систему с рабочим Portage, сетью и базовыми инструментами. Дальше уже можно наращивать хоть сервер, хоть desktop.
Ставим из Live-среды (любая нормальная Live, хоть SystemRescue): нам нужны только терминал, сеть и возможность примонтировать диски.
Инженерное правило: после каждого крупного шага есть проверка. Если проверка не прошла — не идём дальше, иначе получится «установилось, но не понятно что».
Подготовка диска и файловых систем
Смотрим диски и убеждаемся, что работаем с правильным устройством.
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL blkid
Пример разметки: EFI-раздел и корень. Можно добавить swap, отдельный /home или LVM — но начнём без усложнений.
parted -s /dev/nvme0n1 mklabel gpt parted -s /dev/nvme0n1 mkpart ESP fat32 1MiB 513MiB parted -s /dev/nvme0n1 set 1 esp on parted -s /dev/nvme0n1 mkpart ROOT ext4 513MiB 100%
Форматируем и монтируем.
mkfs.vfat -F32 /dev/nvme0n1p1 mkfs.ext4 -F /dev/nvme0n1p2
mount /dev/nvme0n1p2 /mnt/gentoo
mkdir -p /mnt/gentoo/boot
mount /dev/nvme0n1p1 /mnt/gentoo/boot
Проверка: разделы на месте и примонтированы.
findmnt /mnt/gentoo lsblk -f
Stage3 и базовая распаковка
Gentoo начинается со stage3 — минимального tarball, на котором дальше строится система. Скачиваем stage3 и распаковываем в /mnt/gentoo.
cd /mnt/gentoo wget -O stage3.tar.xz https://distfiles.gentoo.org/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-openrc-*.tar.xz tar xpvf stage3.tar.xz --xattrs-include='*.*' --numeric-owner
Важно: stage3 бывает под OpenRC и под systemd. Выбор зависит от того, как ты собираешься управлять сервисами. Для сервера чаще берут OpenRC за простоту, для systemd-ориентированной инфраструктуры — systemd stage3.
Поднимаем DNS для chroot и монтируем системные псевдо-ФС.
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
mount -t 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
Входим в chroot и настраиваем Portage
chroot /mnt/gentoo /bin/bash source /etc/profile export PS1="(gentoo) ${PS1}"
Синхронизируем дерево Portage и выбираем профиль.
emerge --sync eselect profile list eselect profile set 1
Проверка: Portage жив и профиль установлен.
emerge -pv sys-apps/portage eselect profile show
make.conf: осознанная база, без «магии»
Здесь задаются ключевые параметры сборки. Минимально — CPU-флаги и пара общих вещей. Для старта безопасно выставить автоопределение CPUFLAGS и адекватный параллелизм.
emerge -1 app-portage/cpuid2cpuflags echo '*/* $(cpuid2cpuflags)' > /etc/portage/package.use/00cpu-flags
Пример базовых параметров (подставь число потоков под своё железо).
grep -nE '^(COMMON_FLAGS|CFLAGS|CXXFLAGS|MAKEOPTS|ACCEPT_LICENSE|L10N|LINGUAS)=' /etc/portage/make.conf || true
В Gentoo приятно то, что «быстро» можно сделать один раз, а потом жить годами. Но если ты сейчас накрутишь агрессивные флаги «на глаз», ты получишь нестабильную систему и очень честный урок. Лучше спокойно и воспроизводимо.
Часовой пояс, локаль, базовые инструменты
echo "Asia/Jerusalem" > /etc/timezone emerge --config sys-libs/timezone-data
Локаль. Для русской системы можно сделать ru_RU.UTF-8.
sed -i 's/^#\(ru_RU.UTF-8 UTF-8\)/\1/' /etc/locale.gen locale-gen eselect locale list eselect locale set ru_RU.utf8 env-update source /etc/profile
Ставим базовые утилиты и редактор, чтобы не страдать в минимальной среде.
emerge -1 vim sudo git chrony
Ядро: genkernel или ручная сборка
Для первого запуска можно взять genkernel: он проще и быстрее, особенно если цель — получить загрузку и затем довести систему до идеала.
emerge -1 sys-kernel/gentoo-sources sys-kernel/genkernel genkernel all
Проверка: ядро и initramfs (если генерировался) лежат в /boot.
ls -la /boot
Devil’s advocate: genkernel — не «плохо», он просто компромисс. Если ты строишь минимальный сервер под конкретное железо, ручная конфигурация ядра даст меньше мусора и быстрее загрузку. Но это следующий этап, не первый.
fstab и сеть
Заполняем /etc/fstab. UUID берём из blkid, чтобы не привязываться к именам устройств.
blkid nano -w /etc/fstab
Сеть для старта проще всего через DHCP-клиент. В OpenRC-сценарии это обычно netifrc.
emerge -1 net-misc/netifrc rc-update add dhcpcd default emerge -1 net-misc/dhcpcd
Загрузчик UEFI: GRUB
emerge -1 sys-boot/grub grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Gentoo grub-mkconfig -o /boot/grub/grub.cfg
Проверка: GRUB поставился и конфиг создан.
efibootmgr -v || true ls -la /boot/grub/grub.cfg
Пароль root и выход
passwd
Выходим из chroot, размонтируем и перезагружаемся.
exit umount -l /mnt/gentoo/dev{/shm,/pts,} umount -R /mnt/gentoo reboot
Что получили и почему это лучше «инсталляторного комфорта»
После перезагрузки у тебя не «какой-то Linux», а система, которую ты сам собрал: ты знаешь, где загрузчик, как устроена разметка, почему именно эти пакеты, какая локаль, какие сервисы стартуют, и где искать причину, если что-то пошло не так.
Преимущество Gentoo не в том, что он «быстрее всех». Преимущество в том, что он честный: любые проблемы почти всегда воспроизводимы, решения проверяемы, а настройка не прячется за GUI-мастером.
Если тебе нужно «просто чтобы работало», инсталляторные системы — окей. Если тебе нужно «чтобы работало так, как ты задумал, и чтобы через год это было так же», Gentoo — очень здравый выбор.
Дальше обычно идут два направления: либо превращаем систему в сервер (SSH, firewall, fail2ban, мониторинг, бэкапы), либо в рабочую станцию (графика, звук, DE/WM, драйверы). И вот тут Gentoo раскрывается: всё собирается ровно под твой сценарий.