
Гайд по установке gentoo с графическим окружением xfce4
Далее изложена пошаговая последовательность действий по установке операционной системы gentoo с системой инициализации openrc, графическим окружением XFCE4 и LightDM:
## 1. Подготовка и разметка диска
```
sudo su
```
или (на Live CD от Gentoo):
```
sudo -i
```
Разметка диска:
```
cfdisk /dev/sda
```
где `sda` — диск, на который производится установка.
- Загрузочный раздел: 1 GB, тип EFI system.
- Всё остальное — раздел для системы (Linux filesystem).
Проверка разделов:
```
lsblk
```
Форматирование:
```
mkfs.vfat -F 32 /dev/sda1
mkfs.ext4 /dev/sda2
```
Флаг `-F 32` явно задаёт FAT32 для EFI-раздела — некоторые прошивки UEFI придирчивы к типу файловой системы загрузочного раздела, при небольшом размере раздела `mkfs.vfat` может ошибиться с автоопределением.
Монтирование корневого и загрузочного разделов:
```
mkdir /mnt/gentoo
mount /dev/sda2 /mnt/gentoo
mkdir -p /mnt/gentoo/boot/efi
mount /dev/sda1 /mnt/gentoo/boot/efi
mkdir -p /mnt/gentoo/{proc,sys,dev,run,boot}
```
Монтируем виртуальные файловые системы (под root):
```
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
```
## 2. Установка Stage 3
Загрузка образа Stage 3 (desktop) с сайта Gentoo: https://www.gentoo.org/downloads/amd64/#stages
```
wget *.tar.xz
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner -C /mnt/gentoo
```
например:
```
tar xpvf stage3-amd64-desktop-openrc-20260712T170110Z.tar.xz --xattrs-include='*.*' --numeric-owner -C /mnt/gentoo
```
Копируем настройки DNS для интернета внутри chroot:
```
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
```
Переходим в устанавливаемую систему:
```
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
```
Важно: внутри chroot вы — root. До установки пакета `app-admin/sudo` (см. раздел 9) команда `sudo` недоступна — используйте все команды без неё.
## 3. Базовая настройка make.conf
```
nano /etc/portage/make.conf
```
Заносим значения, соответствующие конфигурации компьютера (CPU-флаги, видеокарта, система инициализации и т.д.).
```
mkdir -p /var/db/repos/gentoo
emerge-webrsync
```
Флаги `CPU_FLAGS_X86` узнаём через `cpuid2cpuflags`:
```
emerge --ask app-portage/cpuid2cpuflags
cpuid2cpuflags
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
```
## 4. Часовой пояс и локали
Устанавливаем свою часовую зону:
```
ln -sf ../usr/share/zoneinfo/Europe/City /etc/localtime
echo "Europe/Kyiv" > /etc/timezone
emerge --config sys-libs/timezone-data
```
Локали:
```
nano -w /etc/locale.gen
locale-gen
eselect locale list
eselect locale set 5
```
(номер — из списка `eselect locale list`, соответствующий нужному языку)
Перезапускаем окружение:
```
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
```
## 5. Профиль и обновление системы
```
eselect profile list
```
Выбираем нужный профиль (например, для системы с графическим окружением на OpenRC):
```
eselect profile set 3
```
Обновляем базовый профиль:
```
emerge --ask --verbose --update --deep --newuse @world
```
Устанавливаем шрифты:
```
echo "media-fonts/noto extra" >> /etc/portage/package.use/fonts
emerge --ask media-fonts/dejavu media-fonts/jetbrains-mono media-fonts/wqy-zenhei media-fonts/noto media-fonts/noto-cjk media-fonts/noto-emoji
```
## 6. fstab
Смотрим UUID разделов (в Gentoo нет штатного `genfstab`, эта утилита из мира Arch — используем `blkid`):
```
blkid
nano /etc/fstab
```
Пропишите разделы (root, EFI, при необходимости swap) по UUID.
## 7. Ядро
```
echo "sys-kernel/gentoo-sources ~amd64" >> /etc/portage/package.accept_keywords/kernel
emerge --ask sys-kernel/gentoo-sources sys-kernel/genkernel
cd /usr/src/
```
Смотрим, какое ядро скачано в `/usr/src/`, и линкуем его (без `sudo` — мы root):
```
ln -s /usr/src/linux-7.1.3-gentoo /usr/src/linux
```
Команда линковки ядра `linux-7.1.3-gentoo` приведена для примера, в неё нужно подставлять реальное имя каталога из вывода `ls /usr/src/` — версии в дереве портежей меняются быстро.
Прошивки и микрокод (для Intel; для AMD вместо `intel-microcode` нужен `sys-kernel/linux-firmware` с соответствующим USE, отдельного пакета микрокода AMD как правило не требуется):
```
emerge --ask sys-kernel/linux-firmware sys-firmware/intel-microcode
```
Для lz4-сжатия ядра:
```
emerge --ask app-arch/lz4
```
Можно не устаналвивать, если будет использоваться сжатие zstd.
Генерация ядра с конфигурацией через меню:
```
genkernel all --menuconfig
```
Если планируете использовать `intel-undervolt` (раздел 22), в меню конфигурации убедитесь, что включена поддержка MSR (`Processor type and features → x86 architectural performance events` / `Device Drivers → X86 Platform Specific Device Drivers → /dev/cpu/*/msr`, пункт `CONFIG_X86_MSR`) — без неё утилита не сможет читать/писать регистры процессора.
## 8. Имя компьютера и hosts, для intel42:
```
echo "intel42" > /etc/hostname
nano /etc/hosts
```
В файле `/etc/hosts` укажите реальное имя хоста, а не слово `hostname`:
```
127.0.0.1 localhost
127.0.0.1 intel42
```
## 9. Системные утилиты и загрузчик
Устанавливаем ccache:
emerge --ask dev-util/ccache
nano /etc/portage/make.conf
FEATURES="ccache"
CCACHE_DIR="/var/cache/ccache"
# Создаем директорию ccache, если её нет
mkdir -p /var/cache/ccache
# Даем права пользователю portage, чтобы он мог писать в кэш
chown -R portage:portage /var/cache/ccache
chmod -R 2775 /var/cache/ccache
# Ограничиваем максимальный размер кэша
env CCACHE_DIR="/var/cache/ccache" ccache -M 20G
Проверка использования ccache после компиляции тяжелых пакетов:
ccache -s
```
emerge --ask app-admin/sudo sys-boot/grub sys-boot/os-prober \
sys-fs/xfsprogs sys-fs/exfatprogs sys-fs/dosfstools sys-fs/ntfs3g sys-fs/e2fsprogs \
dev-libs/gobject-introspection sys-fs/simple-mtpfs
```
С этого момента `sudo` установлен, но пользователь всё ещё root в chroot — реально sudo в этой сессии не требуется вплоть до первой загрузки и входа под обычным пользователем.
Сетевые утилиты:
echo "net-misc/networkmanager -bluetooth -ppp -modemmanager" >> /etc/portage/package.use/networkmanager
```
emerge --ask sys-apps/ethtool net-misc/networkmanager net-misc/iperf net-misc/ntp sys-process/cronie
```
При необходимости для беспроводных сетей:
```
emerge --ask net-wireless/iw net-wireless/wpa_supplicant
```
## 10. Пользователь системы
Перед добавлением пользователя нужно проверить, что указываемые группы существуют, например:
```
getent group plugdev usb render
```
Группы `plugdev` и (иногда) `usb`/`render` не создаются в Gentoo по умолчанию — при отсутствии создайте их или уберите из списка ниже:
```
groupadd plugdev
```
Создаём пользователя, например, intel42:
```
useradd -m -G users,wheel,audio,video,render,usb,cdrom,portage,plugdev,disk -s /bin/bash intel42
```
Пароли:
```
passwd intel42
passwd root
```
Права sudo для группы wheel:
```
EDITOR=nano visudo
```
Раскомментируем строку:
```
%wheel ALL=(ALL:ALL) ALL
```
## 11. GRUB
```
grub-install --target=x86_64-efi --efi-directory=/boot/efi --removable
```
Флаг `--removable` пишет загрузчик в fallback-путь `EFI/BOOT/BOOTX64.EFI`, в обход записи в NVRAM через `efibootmgr`. Это осознанный выбор для надёжности на капризных UEFI — при желании можно убрать флаг и настроить обычную NVRAM-запись.
```
echo 'GRUB_DISABLE_OS_PROBER=false' >> /etc/default/grub
grub-mkconfig -o /boot/grub/grub.cfg
```
## 12. XFCE4 + LightDM
```
emerge --ask x11-base/xorg-server x11-terms/xterm \
x11-misc/lightdm x11-misc/lightdm-gtk-greeter xfce-base/xfce4-meta \
xfce-extra/xfce4-notifyd gnome-extra/nm-applet app-editors/mousepad \
xfce-extra/xfce4-screenshooter xfce-extra/xfce4-xkb-plugin xfce-extra/xfce4-taskmanager \
sys-apps/mlocate app-shells/bash-completion x11-apps/xrandr
```
Настраиваем display-manager:
```
nano -w /etc/conf.d/display-manager
```
```
DISPLAYMANAGER="lightdm"
```
## 13. Сервисы OpenRC
```
rc-update add dbus default
rc-update add elogind default
rc-update add NetworkManager default
rc-update add display-manager default
rc-update add cronie default
rc-update add ntp-client default
```
`cronie` и `ntp` были установлены в разделе 9 — без добавления в автозапуск они не будут работать. `ntp-client` синхронизирует время разово при старте; если нужна постоянная фоновая синхронизация — используйте init-скрипт `ntpd` вместо `ntp-client`.
## 14. Автологин в LightDM
```
nano /etc/lightdm/lightdm.conf
```
В секции `[Seat:*]` раскомментируем и указываем:
```
greeter-session=lightdm-gtk-greeter
autologin-user=intel42
autologin-user-timeout=0
autologin-session=xfce
```
После первой загрузки выбираем XFCE на экране входа один раз — далее сессия будет запускаться автоматически.
## 15. Драйверы Nvidia (при наличии видеокарты Nvidia)
Узнайте нужную версию драйвера на официальном сайте Nvidia, затем:
```
nano /etc/portage/package.accept_keywords/nvidia
```
```
=x11-drivers/nvidia-drivers-580.159.04
```
```
nano /etc/portage/package.mask/nvidia
```
```
>x11-drivers/nvidia-drivers-580.159.04
```
## 16. Набор ПО: офис, звук, архиваторы, утилиты
```
emerge --ask x11-drivers/nvidia-drivers media-libs/libglvnd net-p2p/qbittorrent \
app-arch/xarchiver xfce-extra/thunar-archive-plugin media-gfx/gimp media-video/vlc \
net-ftp/filezilla net-misc/tigervnc app-arch/p7zip app-arch/arj app-arch/lha \
app-arch/lzop app-arch/unrar app-arch/rar app-arch/unzip app-arch/zip sys-apps/lm-sensors \
x11-apps/mesa-progs sys-block/gparted net-wireless/blueman dev-vcs/git \
app-eselect/eselect-repository xfce4-cpugraph-plugin sys-apps/inxi \
app-office/libreoffice-bin media-sound/pavucontrol media-video/pipewire \
media-video/wireplumber xfce4-pulseaudio-plugin media-video/mpv media-video/celluloid \
sys-auth/rtkit --autounmask
```
Важно про `--autounmask`: этот флаг только предлагает правки для `/etc/portage/package.*` (unmask, keywords, use-флаги), но не устанавливает пакет, если она требуется. Если для какого-то пакета (например, `sys-auth/rtkit`) нужен unmask — после этой команды его может не оказаться в системе, хотя emerge завершится "успешно" по остальным пакетам. Обязательно проверяем и применяем изменения, затем повторяем emerge:
```
dispatch-conf
# применить предложенные изменения клавишей u
emerge --ask x11-drivers/nvidia-drivers media-libs/libglvnd net-p2p/qbittorrent \
app-arch/xarchiver xfce-extra/thunar-archive-plugin media-gfx/gimp media-video/vlc \
net-ftp/filezilla net-misc/tigervnc app-arch/p7zip app-arch/arj app-arch/lha \
app-arch/lzop app-arch/unrar app-arch/rar app-arch/unzip app-arch/zip sys-apps/lm-sensors \
x11-apps/mesa-progs sys-block/gparted net-wireless/blueman dev-vcs/git \
app-eselect/eselect-repository xfce4-cpugraph-plugin sys-apps/inxi \
app-office/libreoffice-bin media-sound/pavucontrol media-video/pipewire \
media-video/wireplumber xfce4-pulseaudio-plugin media-video/mpv media-video/celluloid \
sys-auth/rtkit
```
Проверяем, что rtkit действительно установлен:
```
equery list sys-auth/rtkit
```
Альтернативно, вместо повторного полного прогона, можно использовать `--autounmask-continue`, чтобы emerge сразу применял изменения и продолжал установку за один проход.
Для остальных пакетов при появлении запросов на изменение конфигов используем:
```
dispatch-conf
```
(применение изменений — клавиша `u`), либо:
```
etc-update --automode -5
```
## 17. Bleachbit
```
nano /etc/portage/package.use/bleachbit
```
```
sys-apps/bleachbit python_single_target_python3_14
```
Указывайте актуальный дефолтный таргет Python вашего профиля (проверить можно через `emerge --info | grep PYTHON`) — фиксация устаревшей версии заставит портеж держать лишний интерпретатор и может привести к конфликтам при будущих апдейтах.
```
emerge --ask sys-apps/bleachbit
```
## 18. Браузер LibreWolf
eselect repository add librewolf git https://codeberg.org/librewolf/gentoo.git
emaint sync -r librewolf
emerge --ask www-client/librewolf-bin --autounmask
Как и выше — после `--autounmask` проверка предложенных изменений через `dispatch-conf` и при необходимости повтор emerge.
## 19. Первая перезагрузка
```
touch /forcefsck
exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
reboot
```
Один reboot — в самом конце, после выхода из chroot и размонтирования всех разделов. Флаг `/forcefsck` заставит проверить файловые системы при следующей загрузке.
---
## Всё, что ниже — выполняется уже после перезагрузки, под обычным пользователем (с sudo)
## 20. Обновление и очистка системы
```
sudo emerge --sync && sudo emerge -uDNav @world && sudo emerge --depclean
```
## 21. Утилиты для Nvidia
```
sudo emerge --ask dev-libs/cudnn dev-util/nvidia-cuda-toolkit app-portage/gentoolkit \
sys-process/nvtop sys-process/btop
```
## 22. Андервольтинг процессора (intel-undervolt)
```
git clone https://github.com/kitsunyan/intel-undervolt && cd intel-undervolt/
sudo ./configure --enable-elogind --enable-openrc
sudo make && sudo make install
```
Загружаем модуль MSR и разрешаем запись в регистры до первого запуска — иначе `apply` может завершиться ошибкой, если `msr` не был подгружен автоматически:
```
sudo modprobe msr
echo 1 | sudo tee /sys/module/msr/parameters/allow_writes
```
```
sudo nano /etc/intel-undervolt.conf
```
```
undervolt 0 'CPU' -90
undervolt 1 'GPU' -90
undervolt 2 'CPU Cache' -90
undervolt 3 'System Agent' -80
undervolt 4 'Analog I/O' -80
tjoffset -20
power package 85 45 # PL2 (short) 85W, PL1 (long) 45W
interval 30000
daemon undervolt once
daemon power
daemon tjoffset
```
```
sudo intel-undervolt apply
sudo intel-undervolt read
```
Автозапуск через init-скрипт (обратите внимание: `--enable-openrc` в конфигурации проекта генерирует init-скрипт только для режима `intel-undervolt-loop`, поэтому для варианта ниже, с постоянным демоном под этим же именем, скрипт создаём вручную):
```
sudo nano /etc/init.d/intel-undervolt
```
```
#!/sbin/openrc-run
description="Apply and maintain intel-undervolt settings"
command="/usr/bin/intel-undervolt"
command_args="daemon"
command_background="true"
pidfile="/run/${RC_SVCNAME}.pid"
depend() {
need localmount
after modules
after dbus
}
start_pre() {
if ! modprobe -q msr; then
eerror "Failed to load msr kernel module"
return 1
fi
if [ -f /sys/module/msr/parameters/allow_writes ]; then
echo 1 > /sys/module/msr/parameters/allow_writes
fi
}
```
```
sudo chmod +x /etc/init.d/intel-undervolt
sudo rc-update add intel-undervolt default
sudo rc-service intel-undervolt start
sudo rc-service intel-undervolt status
```
## 23. Дополнительные браузеры
```
sudo emerge --ask www-client/firefox-bin
sudo emerge --ask www-client/vivaldi
```
## 24. Gammastep (снижение нагрузки на глаза)
```
sudo emerge --ask x11-misc/gammastep
mkdir -p ~/.config/gammastep/
nano ~/.config/gammastep/config.ini
```
```
[general]
; Дневная и ночная температура цвета (в Кельвинах)
; 6500K — стандартный монитор, 3500K — тёплый свет для ночи
temp-day=5700
temp-night=3500
; Плавный переход при восходе/закате (1 — включено, 0 — выключено)
transition=1
; Способ регулировки (для XFCE/X11 лучше randr)
location-provider=manual
adjustment-method=randr
[manual]
; Координаты вашего города (пример — Киев)
lat=50.45
lon=30.52
```
## 25. Параметры ядра в GRUB
```
sudo nano /etc/default/grub
```
```
GRUB_CMDLINE_LINUX_DEFAULT="hugepagesz=1G hugepages=3 default_hugepagesz=1G nowatchdog nmi_watchdog=0 audit=0 split_lock_detect=off page_alloc.shuffle=1 pci=pcie_bus_perf,realloc pcie_ports=native intel_iommu=on iommu=pt pcie_aspm=off pcie_port_pm=off msr.allow_writes=on mitigations=off kvm.nx_huge_pages=off intel_pstate=active transparent_hugepage=madvise i915.enable_psr=0 nvidia-drm.modeset=1"
```
Внимание: параметр `mitigations=off` полностью отключает защиту от уязвимостей класса Spectre/Meltdown. Это осознанный компромисс в пользу производительности — это нужно учитывать, если машина используется не только локально/офлайн.
```
sudo grub-mkconfig -o /boot/grub/grub.cfg
```
## 26. Проверка дисков
```
sudo touch /forcefsck && sudo reboot
```
Этот перезапуск нужен, чтобы применились новые параметры ядра из раздела 25 (они читаются загрузчиком при старте, "на лету" не подхватываются).
## 27. Удаление лишнего ПО
Сначала — правки и деинсталляция без промежуточных пересборок:
```
sudo rc-service cupsd stop 2>/dev/null
sudo rc-update del cupsd default 2>/dev/null
sudo emerge --unmerge net-print/cups
sudo nano /etc/portage/package.use/network
```
```
net-misc/networkmanager -bluetooth -wifi -wext -modern-wireless -ppp -vala -connection-sharing
```
```
sudo rc-update del modemmanager default
sudo rc-service modemmanager stop
sudo emerge --unmerge net-misc/modemmanager
sudo rc-service gpm stop
sudo rc-update del gpm default
sudo emerge --unmerge sys-libs/gpm
sudo nano /etc/portage/package.use/xfce
```
```
xfce-base/xfce4-meta -editor -image -media -archive -search -remote-fs -mpd
xfce-base/thunar -trash-panel-plugin -ioslideshow -remote-nodes
xfce-base/xfce4-settings -libcanberra
xfce-base/xfce4-session -screensaver
```
```
sudo nano /etc/portage/package.use/desktop
```
```
# Отключаем отслеживание геопозиции в системных библиотеках
app-misc/geoclue -systemd
dev-libs/glib -sysprof
```
```
sudo emerge --deselect net-wireless/blueman
sudo rc-update del bluetooth default
sudo rc-service bluetooth stop
```
Теперь применяем все изменённые USE-флаги и физически убираем всё, что стало лишним (включая blueman — `--deselect` сам по себе пакет не удаляет, только снимает пометку "явно установлен"):
```
sudo emerge --ask --changed-use --deep @world
sudo emerge --depclean
```
Чистим кэш дистфайлов и старые бинарные пакеты:
```
sudo eclean-dist --deep && sudo eclean-pkg --deep
```
## 28. Swap-файл
```
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo sysctl vm.swappiness=10
```
В `/etc/fstab` добавьте:
```
/swapfile none swap sw,pri=100 0 0
```
```
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.d/local.conf
sudo rc-update add sysctl boot
sudo rc-service sysctl restart
```
Проверка:
```
swapon --show
```
## 29. Fastfetch при входе в shell
```
sudo su
emerge --ask app-misc/fastfetch
echo "fastfetch" >> /etc/profile.d/fastfetch.sh
chmod +x /etc/profile.d/fastfetch.sh
exit
```
## 30. Чтобы система могла видеть смартфон (MTP)
```
sudo emerge --ask dev-util/android-udev-rules
sudo gpasswd -a intel42 android
sudo udevadm control --reload-rules && sudo udevadm trigger
mkdir -p ~/phone && simple-mtpfs ~/phone
```
---
## Итоговый чек-лист сервисов OpenRC
```
rc-update show default
```
Должны быть в списке как минимум:
- dbus
- elogind
- NetworkManager
- display-manager
- cronie
- ntp-client
- sysctl (boot runlevel)
- intel-undervolt (если использовался)
Проверка rtkit и polkitd (обязательно нужно для исключения проблем со звуком):
```
ps aux | grep -E 'rtkit-daemon|polkitd'
```
Проверка автоматического подъёма процессов, нужных для работы звука:
```
ps -eLo pid,ppid,tid,class,rtprio,comm | grep -E 'pipewire|wireplumber' | grep -v grep
```
Проверка realtime:
```
ps -T -p $(pgrep -x wireplumber) -o pid,tid,class,rtprio,comm
```
Проверка самого звука:
```
pactl info
pactl list sinks short
```
Запуск ssh-сервера:
sudo emerge —ask net-misc/openssh # если не установлен
sudo rc-update add sshd default && sudo rc-service sshd start


