Главная >> Обзоры >> Обзор Gentoo Linux

Обзор Gentoo Linux

Многие из пользователей Linux слышали о таком дистрибутиве как Gentoo. И о том что работа с ним нечто сложное и непостижимое для обычного пользователя. Но на деле все совсем иначе. Gentoo один из не многих дистрибутивов который позволяет без особых усилий весьма гибко настроить систему, при этом сделать это быстро. Огромный набор программного обеспечения в репозиториях  данного дистрибутива дает возможность не отвлекаться на подключение сторонних источников ПО. А система портов позволяет выбирать версию нужного ПО.

В формате обзора Gento linux мы постараемся на практике оценить возможности этого дистрибутива, и сделать идеальную персональную систему. Познакомимся с Portage, научимся избавляться от лишнего функциональность в программах, оптимизировать систему под железо. Мы не будем описывать процесс установки Gentoo, хотя по факту после прочтения этой статьи у вас не возникнет проблем с установкой, ибо разница не особо большая.


Содержание статьи

Гибкость Gentoo

Очень часто в интернете всплывают споры, дает ли Gentoo прирост в производительности. Тут на самом деле все предельно просто. Все зависит от того на сколько тонко вы настроили систему. Многие если не все пользователи Gentoo Linux заявляют что это самый гибкий дистрибутив, чем же обусловлена эта гибкость?

Во первых стоит начать с того что Gentoo это source-based дистрибутив, то есть все ПО распространяется не бинарными пакетами (как например deb или rpm), а в виде исходных кодов. Так же сама система пакетный менеджер (если его можно так назвать) напоминает по принципу работы пакетный менеджер в FreeBSD. В системе есть папка в которой находятся порты, а именно подпапки с .ebuild файлами. Это своеобразные скрипты, они указывают на то откуда качать файлы, как их компилировать, и куда раскладывать то что получилось в итоге. За счет такого подхода достаточно создать всего один ebuild для того что бы установить целый набор программ.

USE флаги

Стоит отметить то что при установке различного ПО в Gentoo, его функциональность можно расширить / сузить за счет использования USE флагов. Например хотим мы установить пакет WireShark, в стандартный набор поставки этой программы в различных дистрибутивах входит весьма приличный пакет дополнительного ПО,  которым скорей всего мы и пользоваться то и не будем. В Gentoo за счет USE флагов можно собрать собственный WireShark, только с нужным функциональностью. Например нам нужен весь стек протоколов, и графический интерфейс на основе Qt. Достаточно включить все флаги кроме doc, doc-pdf и GTK.eq

Проверка USE с помощью equery

В итоге мы получим пакет который будет весить значительно меньше чем аналог для других дистрибутивов.
Флаги можно ставить глобально и локально. Рассмотрим два файла

/etc/portage/make.conf - Глобальный файл настроек portage, к нему мы сегодня будем обращаться очень часто, т.к именно он поможет нам выжать буквально все из нашей системы. В случае с USE флагами все просто, в строчке USE=" " мы можем указать какие флаги надо использовать для каждого пакета, например имеет смысл поставить туда systemd если в дальнейшем будет использоваться эта система инициализации, или же KDE если планируете работать с этой оболочкой. Важно знать что от флагов будут определятся зависимости для пакетов, соответственно чем больше флагов - тем больше будет зависимостей для ПО.

/etc/portage/package.use  - Тут уже можно определить файлы настроек для каждого пакета отдельно, поддерживаются логические выражения. Например :

>=dev-lang/python-3.6.0 examples
<=dev-lang/python-2.7.0 -examples

В таком случае для python версии 3.6 или выше у нас будут устанавливаться примеры программ, а для 2.7 и ниже напротив, примеры будут игнорироваться. Стоит обратить внимание, для того что бы включить флаг достаточно внести его имя, а для того что бы жестко указать portage на игнорирование флага, поставить перед его именем "-".

Так же можно указывать временные флаги, которые будут действовать единожды в процессе сборки.

USE=" <флаг> " emerge <пакет>

Оптимизация под целевую архитектуру

Помимо сокращения бинарных файлов методом изменения USE флагов, так же оптимизировать работу компьютера можно настройкой компилятора под целевую архитектуру.
Как это работает ? - Программы в репозиториях других дистрибутивов находятся в бинарном виде. Разработчики как правило собирают программы без оптимизации под архитектуру, так как их основная задача заставить работать программу на как можно большем количестве ПК. Gentoo же дает нам возможность собрать нужную нам программу под нужную нам архитектуру.

Для того что бы это сделать нам надо заглянуть в файл /etc/portage/make.conf , там нам нужно отредактировать пару пунктов.

CFLAGS - дописываем туда -martch=native или же название своей архитектуры , например -march=haswell
По сути этим можно было и ограничится, но мы будем выжимать все из системы. Добавим флаг -O2 , это "скажет" portage собирать программы с оптимизацией второго уровня. Стоит отметить что в некоторых источниках могут писать что чем больше число тем будет выше степень оптимизации, иногда люди ставят -O10 и больше, но GCC поддерживает только 4 уровня оптимизации, все что выше будет автоматически сброшено до 4.

Оптимизация процесса сборки

  1. MAKEOPTS - тут мы можем указать количество потоков во время сборки, рекомендуется использовать n Ядер + 1;
  2. Это сделает сборку ПО менее долгим процессом.
    ACCEPT_LICENSE = "*" - даем portage разрешение на сборку программ под любой лицензией;
  3. L10N = "ru" и LINGUAS = "ru ru_RU en" - во время сборки программ будет выполняться их локализация (если программа поддерживает это);
  4. FEATURES - тут мы можем указать разные "фичи" которые будет использовать portage во время своей работы. Например : userfetch - Во время загрузки файлов portage будет сбрасывать root привилегии, имеет смысл с точки зрения безопасности. parallel-fetch - Во время компиляции программ будут загружаться исходные коды, это ускорит время установки пакетов. candy - интересная анимация для emerge. fail-clean - очистка TMP после ошибки во время сборки. 2ccache - кешировние GCC, дает весьма заметный прирост во время сборки. Чем больше пакетов собираете - тем больше прирост скорости;
    О других фичах можно прочитать в официальной Wiki проекта Gentoo.
  5. VIDEO_CARDS - оптимизация ПО под вашу видеокарту , например ="i965 intel";
  6. ACCEPT_KEYWORDS - выбор ветки portage. Например при ~amd64 portage будет использовать тестовую ветку amd64;
  7. GRUB_PLATFORMS - во время сборки Grub определит зависимости относительно вашей системы, а установка будет производится с учетом установленного значения. Например ="efi-64" соберет груб для установки на efi раздел, для 64бит`ных систем;

Пару советов по сборке ядра

  1. Прежде чем самому лезть в конфигуратор ядра, имеет смысл загуглить конфиг для сборки. Например мне, с моим T440P это сэкономило кучу времени. Как правило в таких конфигах имеет смысл проверить железо, и довести все до актуального состояния.
  2. Для конфигурировния ядра есть много способов, начиная от элементарного ручного (работа с файлом .config), заканчивая веб-конфигуработором. Но обычно во всех гайдах используется menuconfig, но никто не говорит о том что есть более удобные вариации, GTK - gconfig и Qt - xconfig.
  3. Заранее установите sys-kernel/linux-firmware , и в случае если потребуется сборка модуля которого нет в ядре (например iwlwifi.ucode), то стоит помнить что они находятся в /lib/firmware
  4. Если планируете накладывать патчи, то настоятельно рекомендую использовать sys-kernel/vanilla-sources, ибо именно под него пишутся эти самые патчи.
  5. Использование ccache во время сборки ядра поможет вам сэкономить уйму времени, ибо будут собираться только измененные части ядра.
  6. Рекомендуем прочитать эту статью о сборке ядра linux.

Полезные инструменты

  • gentoolkit  - Набор утилит для администрации Gentoo;
  • layman - Инструмент для управления оверлеями;
  • eix - Удобное приложение для поиска программ в portage;
  • porthole - Графический интерфейс для portage, написан на GTK, в качестве бекэнда использует emerge;

Вывод

В этом обзоре Gentoo linux мы открыли для себя возможности тонкой настройки системы  под конечного пользователя. Исходя из выше написанного можно сделать вывод что Gentoo действительно гибкая система. За счет флагов мы можем уменьшить бинарный файл, как следствие он будет быстрее выгружаться в оперативную память, и меньше занимать места на жестком диске. Тонкая настройка /etc/portage/make.conf дает заметный прирост в производительности.

Система Portage позволяет использовать несколько версий пакетов одновременно, что позволяет работать с самым стабильным ПО, даже если оно использует тестовые библиотеки. Так же мы рассмотрели несколько нюансов сборки ядра, и узнали про пару удобных инструментов для администрирования Gentoo. Так же советуем вам почитать о установке пакетов в Gentoo 

9 комментариев к “Обзор Gentoo Linux”

  1. Если провести неделю в тщательной настройке нужной программы и качественно ее скомпилировать, то можно добиться улучшения производительности на 2-3%. Невероятно. Генту для тех, кто любит скорость и ценит свое время.

    Ответить
  2. Прочитав статью сделал вывод ,что для простого пользователя это действительно сложная система,на начальном этапе точно,но не непостежимая.

    Ответить
  3. "Стоит отметить что в некоторых источниках могут писать что чем больше число тем будет выше степень оптимизации, иногда люди ставят -O10 и больше, но GCC поддерживает только 4 уровня оптимизации, все что выше будет автоматически сброшено до 4."
    Это не верно! Сама gentoo wiki пишит:"Существует семь видов настроек переменной -O: -O0, -O1, -O2, -O3, -Os, -Og и -Ofast. Используйте только одну из них в /etc/portage/make.conf."
    А так же:"Некоторые пользователи хвалятся даже большей производительностью, достигнутой использованием -O4, -O9, и так далее, но в действительности, уровни -O большие чем 3 не имеют никакого эффекта. Компилятор может принимать переменные CFLAGS, такие как -O4, но, на самом деле, ничего с ними не делает. Он только выполняет оптимизацию до уровня -O3, и ничего больше:

    Нужно больше доказательств? Исследуйте исходный код:

    Код Исходный код параметра -O
    if (optimize >= 3)
    {
    flag_inline_functions = 1;
    flag_unswitch_loops = 1;
    flag_gcse_after_reload = 1;
    /* Allow even more virtual operators. */
    set_param_value ("max-aliased-vops", 1000);
    set_param_value ("avg-aliased-vops", 3);
    }
    "

    Ответить
  4. Конечно, если бы была литература по Gentoo, хотя бы такая, как для Fedora, CentOS, или Debian, возможно, возрос бы интерес и к Gentoo. Я после Debian и его клонов перешёл на платформу Red Hat, сейчас на моём домашнем сервере стоит CentOS 7.5, а на десктопе Fedora 28. Конечно, переход с платформы Debian был большим шагом "в толщину", но оно того стоило. Скорость работы, особенно в сети, возросла многократно. Также стабильность связки CentOS - Fedora намного выше, чем Debian - Ubuntu. Подозреваю, что переход на Gentoo будет ещё более широким шагом. Однако стоит попробовать, особенно, если гибкость Gentoo позволит обеспечить и работу домашнего сервера и работу рабочей станции и работу домашнего кинотеатра. Пока, что лучшей системы, чем Windows 10 для домашнего кинотеатра не нашёл. Для полного счастья хотелось бы и домашний кинотеатр перевести на Linux. Но ни одна Linux система не могла сравниться по функциональности и стабильности с последним творением Microsoft. Стоило только настроить систему и отключить автоматическое обновление (обновляю по мере необходимости вручную). Как только ни "дурдыкал" десятку, работает прекрасно и после двухлетней эксплуатации не думает снижать быстродействия, в отличие от предыдущих версий, особенно Windows XP, которую приходилось переустанавливать каждые два месяца.

    Ответить
  5. хр лучшая.......система ........надо правильно...уметь закрывать окна и форточки !!!!а то застудите все......вирусом....короновирусом.ХР ЛУЧШАЯ СИСТЕМА.ГЛАВНОЕ ЕЕ ......НО ЛИНУКС ......ЕЕ КРУЧЕ!!!!!!!!!!!!!!!!!!!!!!!

    Ответить

Оставьте комментарий