Статьи

Гайд по установке gentoo с графическим окружением xfce4




gentoo является одной из лучших операционных систем с открытым исходным кодом на ядре Linux. Ее основная особенность — сборка исполняемых файлов и служебных пакетов из исходных кодов. Это обеспечивает самую высокую производительность (быстродействие), безопасность и надежную работу компьютера.

Работа с gentoo требует значительно большей вовлеченности, чем при использовании систем, по умолчанию использующих готовые бинарные файлы, например, ubuntu и ее клоны. При установке gentoo и работе с ней нужно часто использовать консольные команды, обращаться к мануалам, искать решения для возникающих трудностей. Это не недостаток, а преимущество, так как благодаря этому намного быстрее происходит получение знаний и умений.

gentoo вряд ли подойдет тем, кто имеет слабые навыки работы с системами на основе Linux и не желает учиться. Любители DIY, желающие глубже погрузиться в мир компьютерного железа и программ, найдут в gentoo хороший инструмент для удовлетворения своих потребностей.

В данной статье изложен краткий авторский конспект установки gentoo на HDD компьютера с материнской платой ASUS Intel Z370A с 32GB RAM с модифицированным BIOS-ом под процессор-мутант Intel QTJ0 2.8GHz (8 ядер, 16 потоков, максимальная частота ядер 4.7GHz) с интегрированным видеоядром Intel UHD Graphics 630 плюс графический ускоритель Nvidia Tesla V100. При установке основные проблемы возникали при настройке загрузчика, конфигурировании работы гибридной видеосистемы (вывод изображения через интегрированную видеокарту и 3D-ускорение/compute-вычисления через адаптер Nvidia без видеовыходов)

Статья не претендует на полноту изложения затронутой темы и научность, является субъективным изложением мыслей автора-шпаргалкой для последующей работы.

Этапы установки операционной системы gentoo

Инсталляция gentoo может производиться отдельный накопитель с уже установленной операционной системы, например, ubuntu (xubuntu/lubuntu и т.д.) или с любого Linux Live CD. Во время установки нужно отформатировть и разметить диск, скачать, развернуть, установить и сконфигурировать ядро системы, инсталлировать необходимые служебные пакеты, фирменные прошивки, настроить загрузчик, сетевое окружение, языковые локали, временной пояс, установить подходящее графическое окружение и преодолеть все трудности, возникающие при этом.

Для установки ОС должен использоваться терминал с правами root, запущенный на уже работающей linux-системе, с настроенным выходом в интернет. Подходит, например, вариант с загрузочным носителем, созданным из образа ubuntu/xubuntu, созданного на USB-флеш программой balena etcher. По субъективному мнению автора, лучше использовать второй диск с уже установленной и настроенной системой, из под которой удобнее и быстрее провизодить манипуляции с диском, на который ставится gentoo.

На Live CD от gentoo для получения прав суперпользователя используется команда

  sudo -i

В (x)ubuntu и в самой gentoo для этого достаточно выполнить команду su и ввести пароль. При использовании зарузочного носителя xubuntu используем команду

sudo su

Разметка диска производиться без использования отдельного раздела подкачки. Он вреден для носителей SSD, NVMe и USB-HDD, имеющих ограпниченный ресурс, значительно меньший, чем у обычных HDD. При нехватке оперативной памяти можно будет создать swap-файл на основном диске. Для инсталляции gentoo не стоит использовать USB-флешки, так как они работают очень медленно и даже на мощном компьютере установка с нуля может занять несколько дней. При желании можно установить систему на HDD, а потом клонировать настроенный образ на USB-флешку.

На накопителе создаем два раздела: загрузочный и root. При наличии большого дискового пространства или дополнительного диска на нем можно создать третий раздел для каталога home. Для разбивки диска на разделы можно использовать консольные утилиты fdisk, cfdisk и им подобные, либо gparted. Чтобы иметь возможность работать с большими дисковыми накопителями нужно выбрать разметку gpt:

  cfdisk /dev/sdb

где sdb — диск, на который производится установка.

Для загрузочного раздела можно выделить 512M-1GB дискового пространства, EFI system. Все остальное место можно оставить для системы (диск с файловой системой Linux).

Проверка разделов диска:

  lsblk

Форматирование диска:

  mkfs.vfat /dev/sdb1
  mkfs.ext4 /dev/sdb2

Монтирование корневого и загрузочного разделов:

mkdir /mnt/gentoo


mount /dev/sdb2 /mnt/gentoo


mkdir -p /mnt/gentoo/boot/efi


mount /dev/sdb1 /mnt/gentoo/boot/efi
cd /mnt/gentoo

Загрузка desktop-образа Tarball Stage 3 с сайта gentoo:

и его распаковка:

tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner -C /mnt/gentoo

Создаем файл параметров компиляции при дальнейшей установке:

nano /mnt/gentoo/etc/portage/make.conf

В него заносим следующие значения:

CFLAGS="-march=native -funroll-loops -O2 -pipe"
MAKEOPTS="--jobs 15 --load-average 9"

Число для аргумента jobs задаем или сокращенно «-j2») задается исходя из количества потоков процессора (для 16 поточного процессора Intel QTJ0 — устанавливаем значение jobs в 15-16). Параметр load-average ограничиваем для сохранения отзывчивости компьютера при компиляции.

Если на ккаком-то из этапов нужно будет прервать выполнение команд в терминале, нажимаем сочетание клавиш Ctrl+C.

Задаем разрешение на установку всех лицензий для фирменных/закрытых прошивок/программ:

  ACCEPT_LICENSE="*" 

При желании, вписываем адрес быстрого зеркала gentoo:

  GENTOO_MIRRORS="https://mirrors.your-selected-mirror/gentoo"

Пример содержимого файла make.conf:

COMMON_FLAGS="-march=native -funroll-loops -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
MAKEOPTS="--jobs 15 --load-average 9"
ACCEPT_LICENSE="*"
RUSTFLAGS="-C target-cpu=native"
USE="X xorg dbus gtk systemd alsa pulseaudio glib nls networkmanager -nouveau"
CPU_FLAGS_X86="aes avx avx2 bmi1 bmi2 f16c fma3 mmx mmxext pclmul popcnt rdrand sse sse2 sse3 sse4_1 sse4_2 ssse3"
VIDEO_CARDS="intel nvidia"
LC_MESSAGES=C.UTF-8
GRUB_PLATFORMS="efi-64"

Значения для строки CPU_FLAGS_X86 можно задать в файл конфигурации позже, используя программу cpuid2cpuflags и команды:

  emerge --ask app-portage/cpuid2cpuflags
  cpuid2cpuflags
  echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags

Если команды, поддерживаемые процессором уже известны, их лучше сразу включить в файл make.conf.

Устанавливаем интерент соединения:

  cp --dereference /etc/resolv.conf /mnt/gentoo/etc/

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

  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

Проверяем:

  mount | grep /mnt/gentoo

Переходим в устанавливаемую систему gentoo:

  chroot /mnt/gentoo /bin/bash
  source /etc/profile
  export PS1="(chroot) ${PS1}"

После этого работа производиться непосредственно в устанавливаемой системе (например, в ней уже можно установить и работать с cpuid2cpuflags). При сбоях можно возобновить работу, смонтировав диски и повторив эти же команды. Вот они для удобства :


mkdir /mnt/gentoo
mount /dev/sdb2 /mnt/gentoo
mkdir -p /mnt/gentoo/boot/efi
mount /dev/sdb1 /mnt/gentoo/boot/efi
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
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
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"

Обновляем список репозиториев:
emerge-webrsync

Просматриваем список доступных профилей устанавливаемой системы:

eselect profile list

Задаем нужный профиль, например, для системы с графическим окружением (desktop-oriented) с менеджером systemd:

eselect profile set 4

Обновляем мир с выбранным профилем:

  emerge --ask --verbose --update --deep --newuse @world  

Выбираем свой часовой пояс:

  tzselect

Задаем местное время, например:

  ln -sf /usr/share/zoneinfo/Europe/Vatican City /etc/localtime

Выбираем языковые локали:

  nano -w /etc/locale.gen

Генерируем языковые локали:

  locale-gen

Просматриваем их список ,чтобы выбрать номер, соответствующий желаемому языку для приложений системы

eselect locale list

Выбираем номер нужной локали:

eselect locale set 5

Ставим шрифты:

emerge --ask media-fonts/dejavu media-fonts/liberation-fonts media-fonts/wqy-zenhei media-fonts/noto-emoji

Осуществляем перезапуск окружения для применения внесенных изменений:

env-update && source /etc/profile && export PS1="(chroot) ${PS1}" 

Для сборки ядра на своем компьютере используем репозиторий gentoo-sources с исходниками:

emerge --ask sys-kernel/gentoo-sources

или

emerge --ask sys-kernel/zen-sources

Смотрим, какое ядро скачано и линкуем его командой:

ln -s /usr/src/linux-6.18.12-gentoo /usr/src/linux

Устанавливаем сборщик ядра genkernel:

emerge --ask sys-kernel/genkernel

Устанавливаем пакеты с фирменными прошивками для устройств компьютера:

emerge --ask sys-kernel/linux-firmware sys-firmware/intel-microcode 

Прописываем в fstab UUID файловой системы диска. Для этого в отдельном терминале (в системе, из под которой производится установка) выполняем команды:

sudo su
apt install arch-install-scripts
genfstab -U /mnt/gentoo
genfstab -U /mnt/gentoo | tee /mnt/gentoo/etc/fstab

Переходим терминал, на котором производится установка gentoo и проверяем содержимое fstab:

nano /etc/fstab

Значения UUID файловой системы можно взять из вывода команды cfdisk /dev/sdX

Запускаем генерацию ядра системы:

genkernel all  

После этого настраиваем полученный «скелет» операционной системы:

Указываем имя компьютера:

nano /etc/conf.d/hostname 
nano /etc/hostname

Редактируем файл hosts в соответствии с незванеим компьютера:

nano /etc/hosts
127.0.0.1 localhost
127.0.0.1 hostname

Устанавливаем сетевые утилиты:

emerge --ask net-misc/dhcpcd  sys-apps/ethtool

При необходимости, для беспроводных сетей добавляем:

emerge --ask net-wireless/iw net-wireless/wpa_supplicant

Включаем сетевую службу dhcpcd с помощью менеджера systemd:

systemctl enable dhcpcd

Устанавливаем утилиты для системы и файловых систем:

emerge --ask app-admin/sudo sys-apps/portage sys-boot/grub sys-boot/os-prober sys-fs/xfsprogs sys-fs/exfat-utils sys-fs/dosfstools sys-fs/ntfs3g

Возможно, потребуется внести изменения в конфигурацию системы, например, с помощью

dispatch-conf

Устанавливаем GRUB:
emerge --ask --update --newuse --verbose sys-boot/grub
grub-install --target=x86_64-efi --efi-directory=/boot/efi --removable

Конфигурируем загрузчик:

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

Добавляем пользователя системы в группы:

useradd -m -G users,wheel,audio,video,usb,cdrom,portage,cron -s /bin/bash имя_пользователя

Задаем пароль root и пользователя:

passwd
passwd username

Предоставляем ему привилегии sudo:

EDITOR=nano visudo

Раскомментируем строку

# %wheel ALL=(ALL:ALL) ALL

Удаляем ранее скачаный образ системы:

rm /stage3-*.tar.*  у 

Ставим утилиты:

emerge --ask app-admin/sudo sys-apps/portage

Обновляем файлы конфигурации:

sudo etc-update

Устанавливаем графическую оболочку xfce4 с дисплейным менеджером lightdm и другие программы:

emerge --ask  x11-base/xorg-server x11-base/xorg-drivers gui-libs/display-manager-init
emerge --ask xfce-base/xfce4-meta xfce-extra/xfce4-notifyd


emerge --ask x11-misc/lightdm-gtk-greeter x11-misc/lightdm net-misc/networkmanager gnome-extra/nm-applet xfce4-terminal app-editors/mousepad xfce-extra/xfce4-screenshooter xfce-extra/xfce4-xkb-plugin xfce-extra/xfce4-taskmanager x11-themes/xfwm4-themes x11-terms/xfce4-terminal xfce-base/thunar net-p2p/qbittorrent app-arch/xarchiver xfce-extra/thunar-archive-plugin media-gfx/gimp media-video/vlc net-ftp/filezilla sys-apps/bleachbit net-misc/tigervnc sys-apps/mlocateapp-shells/bash-completion

Поддержка разных форматов архивов:

emerge --ask app-arch/p7zip app-arch/arj app-arch/lha app-arch/lzop app-arch/unrar app-arch/rar app-arch/unzip app-arch/zip

Включаем синхронизацию времени:


emerge --ask net-misc/ntp
systemctl enable ntpd

Добавляем USE flags для включения NVIDIA hardware encoding/decoding:
nano /etc/portage/package.use/nvidia

Вписываем туда:

*/* VIDEO_CARDS: -* nvidia
*/* nvidia vdpau nvenc 

Редактируем файл display-manager для работы с lightdm:

nano -w /etc/conf.d/display-manager
DISPLAYMANAGER="lightdm"
systemctl enable lightdm

Редактируем файл xinitrc:

sudo nano ~/.xinitrc
Добавляем туда:

exec dbus-launch --exit-with-session xfce4-session

Обновляем и чистим систему:
sudo emerge --ask --verbose --update --deep --newuse @world


emerge --depclean

После установки sys-apps/portage пакеты gentoo синхронизируются командой:

sudo emaint --auto sync

Для автоматического входа в систему редактируем lightdm.conf:

nano /etc/lightdm/lightdm.conf

где находим раздел [Seat:*]

и раскомментируем строки

autologin-user=yourusername
autologin-user-timeout=0

Проверка, определены ли звуковые устройства в системе:

cat /proc/asound/card*/codec* | grep Codec
Установка планировщика задач:
emerge --ask sys-process/cronie

Пересборка initramfs:

genkernel --install initramfs
systemd-machine-id-setup
systemd-firstboot --prompt
systemctl preset-all --preset-mode=enable-only
hostnamectl set-hostname

Выход из текущей системы и перезагрузка

  exit
  cd
  umount -l /mnt/gentoo/dev{/shm,/pts,}
  umount -R /mnt/gentoo
  reboot

Ставим драйвера видеокарт:

emerge --ask x11-drivers/nvidia-drivers x11-apps/mesa-progs xf86-video-intel

Если Nvidia Tesla V100 будет использоваться для игр, то нужно ставить grid-драйвер Nvidia от Google.

Чтобы пользоваться разгоном Nvidia выполняем команду:

  sudo nvidia-xconfig -a --cool-bits=31

Для Nvidia Tesla V100, которая не имеет видеовыходов, нужно установить свой файл xorg.conf в папку /etc/X11/. В нем для вывода изображения должна быть прописана интегрированная видеокарта Intel:

Section "ServerLayout"
Identifier "Xorg Configured" 
Screen "Monitor" 
EndSection 

Section "Files" 
FontPath "/usr/share/fonts/corefonts" 
FontPath "/usr/share/fonts/misc" 
FontPath "/usr/share/fonts/droid" 
EndSection 

Section "Module" 
Load "dri" 
Load "i2c" 
Load "bitmap" 
Load "ddc" 
Load "int10" 
Load "vbe" 
Load "glx" # OpenGL X protocol interface 
Load "extmod" # Misc. required extension 
EndSection 

Section "Monitor" 
Identifier "StandardMonitor" 
Option "DPMS" 
EndSection 

Section "Device" 
Identifier "Video" 
Driver "intel" 
Option "NoAccel" "False" 
Option "DRI" "True" 
Option "AccelMethod" "sna" 
EndSection 

Section "Screen" 
Identifier "Monitor" 
Device "Video" 
Monitor "StandardMonitor" 
DefaultDepth 24 

Subsection "Display" 
Viewport 0 0 
Depth 24 
Modes "1920x1080" 
EndSubsection 

EndSection 

Section "DRI" 
Group "video" 
Mode 0666 
EndSection 

Section "Extensions" 
Option "Composite" "On" 
EndSection 

Для обычных видеокарт Nvidia (Ge Force) достаточно установить пакет nvidia-x11-drivers/nvidia-drivers.

Обновление системы для использования обновленных USE-флагов:

  emerge -vauDU @world
  emerge --ask --changed-use --deep @world

При установке программ и появлении запросов о внесении изменений в конфигурационные файлы используем команду

  dispatch-conf

Применение изменений — ключ u.

Настройка звука через pipewire (после загрузки в систему):

emerge --ask media-sound/pavucontrol xfce-extra/xfce4-pulseaudio-plugin --ask media-plugins/alsa-plugins media-libs/libpulse media-video/pipewire
    $ systemctl --user --now disable pulseaudio.service pulseaudio.socket
$ systemctl --user --now disable pipewire-media-session.service
$ systemctl --user --now enable pipewire.socket pipewire-pulse.socket
$ systemctl --user --force enable wireplumber.service

Вывод информации консольной утилитой screenfetch об установленной gentoo при работе в xfce4:

Вывод по команде

  inxi -F

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *