Дистрибутивы основанные на gentoo. Установка Gentoo Linux - пошаговая инструкция. Кратко об идеологии Gentoo

Операционная система Linux известна во всем мире. Чаще всего неопытные пользователи используют дистрибутив Ubuntu, т. к. именно он прост и бесплатен. Впрочем, хотя другие дистрибутивы тоже бесплатные, они пользуются меньшей популярностью. Достаточно сложной можно назвать установку Gentoo. Но с нашей инструкцией наверняка все получится.

Что такое Gentoo Linux?

Который известен благодаря широким возможностям, комплексности, возможности настройки. Но стоит отметить, что он не для всех, и при работе придется активно включать мозги, ведь без специализированных знаний не получится воспользоваться полным функционалом этой ОС. Часто придется обращаться к разного рода инструкциям, но это уже после. Важно помнить, что установка пакетов в Gentoo осуществляется из источников при помощи специального инструмента PORTAGE. Это сложнее, но зато пользователь может сам выбирать, какие пакеты и функции устанавливать.

В зависимости от объема сборки, установка может занять очень мало времени (пару минут), а может длиться днями.

Преимущества и недостатки

Считается, что именно Gentoo Linux является самым быстрым дистрибутивом. Но везде и всегда есть определенные недостатки. "Гента" (или "Дженту") относится к дистрибутивам Source-based Linux, отчего растет скорость работы. Но часто сэкономленное время приходится тратить на длительную установку (читай: компиляцию) пакетов. Одна из ключевых особенностей "Дженту" - под аппаратное обеспечение. Это достигается благодаря USE-флагам (о них будет информация ниже) оптимизации и сборкам программ из исходников, подключению/отключению разных модулей.

Ключевым плюсом дистрибутива является возможность сделать из него что угодно. Благодаря Portage, Gentoo может стать обычным сервером или рабочей станцией. Второй плюс - гибкость применения. Данный дистрибутив является мультиплатформенным и работает с любыми архитектурами процессоров. Система уже была успешно портирована на следующие архитектуры:

  1. PowerPc970.
  2. PowerPC.
  3. Dec Alpha.
  4. IBM/390.
  5. Sparc.
  6. PA-RISC.
  7. MIPS.
  8. SuperH.
  9. PowerPC G5.

Также Gentoo защищена от разного рода уязвимостей. Обновление пакетов происходит очень быстро, как и латание дыр уязвимостей. Есть множество сайтов с неофициальными сборками программ и официальных бинарных сборок.

В качестве недостатка укажем процесс установки Gentoo. Новичкам, которые ранее не имели опыта использования этого дистрибутива, будет сложно. Но благодаря инструкции все получится.

Как установить Gentoo? Инструкция

Для начала на компьютере должен быть установлен дистрибутив Ubuntu. Вам понадобятся права суперпользователя, поэтому убедитесь, что они есть. Также необходимо подключение к интернету.

Самый первый шаг - это установка в Gentoo chroot. Сделать это можно двумя способами:

  1. В командной строке прописать: sudo apt-get install dchroot debootstrap.
  2. С помощью Synaptic установить пакеты debootstrap и dchroot. Это нужно для того, чтобы ОС Linux думала, что ее "родной" каталог отличается от обычного.

Теперь нам нужно перераспределить разделы диска либо создать новые, если есть свободное место. Но работать с разделами нужно аккуратно, ведь есть риск потерять все данные. На многих форумах пишут, что предпочтительнее иметь много разных разделов. Как минимум нужен будет основной раздел (/), а также разделы /boot и /var. Хотя есть еще /swap (используется для подкачки) и домашний /home.

После создания новых разделов форматируем их. Для разделов /boot, /home, основной (/), /var нужно использовать файловую ext3 или reiser2.

Теперь создаем папки /mnt/gentoo. Для каждого созданного нами раздела необходима своя папка.

Монтируем сюда новые разделы. Для этого в командной строке прописываем:

  1. sudo mount /dev/sda5 /mnt/gentoo.
  2. sudo mount /dev/sda6 /mnt/gentoo/home.

Разделы sda5 и sda6 будут содержать корневой и домашний каталоги.

Обязательно проверьте, правильно ли настроена дата. Если нет, то с помощью команды и синтаксиса можно установить правильную дату: date MMDDhhmmYYYY.

Теперь открываем браузер и переходим на сайт загрузки дистрибутива. Там ищем подходящее зеркало для вашего местоположения.

Из директории releases/ia64/2008.0/stages загружаем tar-архив stage3. Теперь перемещаем архив в папку Gentoo. Делаем это с помощью команды: mv stage3*.bz2* /mnt/gentoo.

Переходим в данный каталог (cd /mnt/gentoo) и проверяем архив при помощи md5. Пишем в командной строке: md5sum -c stage3*.md5. Так вы сможете проверить, не поврежден ли архив и все ли с ним в порядке. Если вы не получите ответа ОК, то придется качать его повторно.

Переходим к следующему шагу установки и настройки Gentoo. Нужно извлечь файлы из архива. Используйте команду: sudo tar xvjpf stage3*.bz2 и ждите завершения.

Настройка Gentoo

Теперь у нас есть в разделе Gentoo основные программы. В обязательном порядке нам понадобится Portage - специальный инструмент для управления пакетами. Благодаря ему мы получим контроль над установленными программами. Для этого снова идем на сайт загрузки. В разделе snapshots ищем последний по дате добавления Portage. Качаем его и перемещаем в папку /mnt/gentoo. Удобнее всего просто прописать команду: tar xvjf /mnt/gentoo/portage-.tar.bz2 -C /mnt/gentoo/usr.

Что такое Portage?

Пару слов следует сказать об этом инструменте. Portage - это система, с помощью которой можно управлять пакетами в дистрибутиве. Она призвана упростить процедуру установки программ и исходных кодов. С ее помощью можно удалять пакеты, обновлять их, проводить синхронизацию по протоколу rsync. Как только Portage загружает файлы, система собирает программу, используя загруженные исходники, и оптимизирует ее.

На этом этапе устанавливаем compile flags. Открываем make.conf, который находится в каталоге /gentoo/etc. Используем обычный текстовый редактор. В документе make.conf.example описана инструкция с переменными make. Хорошо ознакомьтесь с ней. Используйте указанные переменные и конфигурационный файл для установки.

Нам следует убедиться, что настройки были перенесены из дистрибутива Ubuntu без изменений. Главное - это dns-настройка (sudo cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf) и система proc (sudo mount -t proc none /mnt/gentoo/proc).

Если с настройками все в порядке, переходим к chroot. Чтобы сделать его, нужно:

  1. Поменять корневой каталог. В командной строке пишем: sudo chroot /mnt/gentoo /bin/bash
  2. Обновить среду и дать понять терминалу, где он располагается. В командной строке: /usr/sbin/env-update.
  3. Поместить это в память: source /etc/profile.

С этого момента вы находитесь внутри системы Gentoo.

Компиляция ядра

Самый важный этап - ядра - части системы, которая определяет, когда и какой программе давать доступ. Без ядра ни одна операционная система не работает. Также устанавливаем пакеты с rsync-сервера. Вводим для этого команду: emerge --sync. Для ясности предположим, что устанавливаться будет ядро версии 2.6. На этом этапе нужно объявить флаги USE, которые дают понять компилятору, какие опции и характеристики применять. Важно указывать правильные флаги, иначе результат может быть не вполне ожидаемым.

Каждый добавляемый флаг - это слово. Удаляемые опции обозначаются знаком "-" перед словом. К примеру, для установки и компиляции программ и опций с поддержкой ogg нам нужно просто добавить ogg. Если это нам не нужно, то пишем -ogg.

Чтобы понять, какие USE-флаги нужно выбирать, обязательно смотрите документацию Gentoo.

После выбора флагов открываем make.conf в каталоге /etc/ и вводим их.

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

Следующий этап - установка часового пояса. Все они есть в каталоге /usr/share/zoneinfo. Переходим сюда, вводим команду ls и видим список доступных. Нужный нам часовой пояс копируем в /etc/localtime. Используем для этого команду: # cp /usr/share/zoneinfo/GMT /etc/localtime.

После настройки часового пояса можно проводить загрузку и компиляцию ядра. Вводим команду: # emerge gentoo-sources. Теперь самый сложный шаг - настройка ядра таким образом, чтобы оно имело поддержку нужных нам пакетов. Если ядро будет установлено неправильно, то нужные функции могут быть недоступными.

Запускаем:

  • cd /usr/src/linux;
  • make menuconfig.

Так мы попадаем в настройки ядра. Выбираем все нужные для загрузки системы драйверы. Нужно проверить, чтобы все они встраивались в ядро, иначе система банально не сможет загрузиться. Не забывайте включить поддержку вашей файловой системы. Выбирайте по возможности все нужные сетевые драйверы: беспроводной и локальной сети, а также тип и семейство процессора.

Теперь для начала компиляции вводим: make && make modules_install. Процесс займет некоторое время. Затем вводим: make -j2 && make modules_install. Образ ядра копируем в папку /boot.

Последнее - настройка модулей ядер. Чтобы найти все доступные модули, запустите команду: find /lib/modules/(kernel version)/ -type f -iname "*.o" -or -iname "*.ko". Добавляем из списка в папку /etc/modules.autoload.d/kernel-2.6 те, которые загружаются автоматически. На этом этапе установка Gentoo завершена. Вы можете приступать к работе с ОС.

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

Часто возникают споры о том, как установить Gentoo на UEFI. Важно, чтобы был создан раздел EFI. Он должен быть вариантом файловой системы FAT. В спецификации UEFI написано, что UEFI-firmware работает с FAT12, 16 и 32, однако рекомендуется применять систему FAT32.

Также в tar-архиве может отсутствовать группа и пользователь portage. При использовании schroot на хост-системе их нужно создать вручную. В этом случае файлы в каталоге /gentoo/etc и пароль будут перезаписаны (изменить их можно напрямую).

  • Системное администрирование ,
  • IT-инфраструктура ,
  • *nix
  • Дочка Убунту прибежала к Дебиану и, весело смеясь, поцеловала его в лоб: "С днём рождения, папа!". Затем она окинула радостным взглядом сидящих за столом гостей и спросила своим звонким голосом:
    - Папа, а где Gentoo, разве он ещё не пришёл?
    - Нет, он ещё только собирается.

    Среди прочих Linux дистрибутивов Gentoo выделяется тем, что его окружает множество мифов, светлой и темной окраски. Я его использую более 10 лет в качестве домашней и офисной рабочей станции и хочу с вами разоблачить несколько мифов и создать парочку новых.

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

    Миф №1 - прирост производительности

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


    Это на самом деле не совсем миф, но вы скорее всего не заметите прироста производительности , если не ставите целью доказать это статистически, вооружившись Phoronix Test Suite или чем-то подобным. Возможно исключение для FireFox , собранного с профилированием , USE="pgo" .


    На чем основан этот миф? Действительно узкий круг вычислительных программ можно ускорить при компиляции под определенную платформу, задавая компилятору включение инструкций SIMD, AESNI, или AVX . Бинарные дистрибутивы из-за чрезмерной заботы о совместимости со старой архитектурой базой зачастую приносят подобные оптимизации в жертву. Вернее будет сказать, что так было раньше, а сейчас это не играет большой роли.


    Определенно, не за это адепты ценят Gentoo.

    Миф №2 - обновления съедают много времени

    Технически это верно, таки да, иногда программы обновляются долго, но обходные пути очень хорошо проторены, что и делает этот тезис мифом. Вот мои рекордсмены.


    (5:515)$ sudo qlop -t libreoffice firefox qtwebengine libreoffice: 15028 seconds average for 20 merges firefox: 3127 seconds average for 32 merges qtwebengine: 8884 seconds average for 5 merges

    Во-первых никто не мешает долгоиграющие обновления запускать ночью. Во-вторых в любой момент задание emerge и компиляцию исходников можно поставить на паузу (Ctrl+Z), возобновив позже в фоновом режиме (bg) или явно (fg). В-третьих можно задать автоматическое обновление через небольной скрипт, например такой .


    # Part 1 layman -S emerge --sync eix-update # Part 2 emerge -avuND --with-bdeps=y --complete-graph=y --backtrack=30 --keep-going --verbose-conflicts --exclude "gentoo-sources firefox libreoffice chromium glibc perl python gcc" world smart-live-rebuild -- -av --with-bdeps=y --complete-graph=y emerge -av --exclude "gentoo-sources firefox libreoffice chromium glibc perl python gcc" @preserved-rebuild eclean distfiles

    Миф №3 - в Gentoo самые свежие версии программ

    Конечно, если сравнивать с Debian Linux, то в целом это так, однако и тут бывают исключения. Тот же Debian раньше стал использовать Grub 2 в стабильной ветке и Perl какое-то время был более новой версии, нежели в Gentoo. Если же сравнивать стабильные ветки менее консервативных дистрибутивов с таковыми в Gentoo, то результат может быть каким угодно. Все зависит от кучи обстоятельств, насколько данный пакет обеспечен мейнтейнером и волонтерами. Например QEMU обновляется почти одновременно со стабильной веткой Github, а MATE - застрял в Gentoo на версии 1.12.2 из-за того, что у него мало разработчиков.


    (5:499)$ eix -ce qemu;eix -ce mate [I] app-emulation/qemu ([email protected]): QEMU + Kernel-based Virtual Machine userland tools [N] mate-base/mate (1.12-r1): Meta ebuild for MATE, a traditional desktop environment

    +1 - необычайная гибкость настроек

    Поговорим теперь немного о достоинствах Gentoo Linux. Гибкость и возможность настроить очень многие аспекты ОС под себя это то, чем блещет дистрибутив. Вот всего лишь несколько таких примеров.

    • Systemd или OpenRC , решайте сами.
    • Pulseaudio ставить или нет, думайте.
    • Включить поддержку dri3 в mesa и Xorg или оставить dri2 ?
    • Собрать незамутненную 64-битную ОС без 32-х битных библиотек совместимости или не стоит упарываться нарываться?
    • Какие кодеки включить в ffmpeg , mpv , vlc ?
    • Как насчет альтернативного пакетного менеджера, если штатные emerge и portage вас не устраивают?

    +2 - скользящие релизы

    Для меня это одно из основных преимуществ дистрибутива. Из-за того, что вы невнимательно читали RSS ленту вашего дистрибутива вы не окажетесь в ситуации , когда вам на голову свалился новый инит, файловая система или принцип работы сетевых интерфейсов.


    Все важные изменения доносят до пользователей заблаговременно через механизм рассылки новостей. Прочитать последние актуальные новости дистрибутива можно командой eselect news read .


    (5:501)$ sudo eselect news read No news is good news.

    +3 - хорошая документация

    ± emerge и portage

    Основная система управления пакетами portage и штатное средство управления пакетами emerge являются очень мощным и функциональным в руках опытного и внимательного к докам пользователя. Именно благодаря системе portage возможны тонкие и гибкие настройки операционной систему и пользовательского ПО (см. выше в +1). Даже беглое описание возможностей emerge/portage заслуживает отдельного поста, поэтому ограничусь общим описанием.

    • Установка и обновление программ позволяет указать нужные и ненужные опции, которые соответственно будут включены в них или исключены из них во время сборки. Это задается USE флагами, которые транслируются в --enable-<опция> и --disable-<опция> инструкции.configure скрипта установки из исходников.
    • Удаление программ тупо их удаляет, не заботясь о зависимостях. Так что будьте осторожны с тем, что вы собираетесь удалить. Если удалить python или gcc , придется затем скачивать бинарные пакеты , так как emerge впадет в ступор и будет не в состоянии собрать программу из исходников.
    • Поиск в базе данных пакетов, список файлов в пакете, определение пакета по заданному файлу, зависимости данного пакета, история операций emerge и прочие полезности.
    • Настройка производится правкой текстовых файлов, что не удивительно. С другой стороны таких файлов несколько и надо знать, что за что отвечает.
    • Обсчет зависимостей, парсинг древа портов происходит довольно медленно и это зачастую нервирует. Стандартная проверка обновлений может занять 2 минуты прежде чем выдать результат на экран.
    • Иногда случаются блокировки, конфликты между пакетами в момент обновления. В большинстве случаев такие ситуации устраняются за пару минут, если пользователь сносно знает матчасть. Однако в крайне редких случаях можно встрять надолго и распутывать зависимости по часу, а то и более.

    Из-за чего могут возникать такие ситуации? По самым разным причинам, изменения в лицензировании продукта, необходимость замаскировать, или наоборот размаскировать пакет, изредка ляпы разработчиков. Тут наблюдается обратная зависимость от частоты обновлений, поэтому рекомендуется регулярно и по возможности часто обновлять систему , чтобы накопленная энтропия в древе портов не порождала цепной реакции.

    -1 - начальная установка занимает много времени

    Полная ерунда, вот установка с помощью однострочника.


    wget goo.gl/5Y2Gj -O install.sh && sh install.sh

    А если серьезно, то действительно весь процесс займет времени намного больше, чем при установки бинарных дистрибутивов, таких как Дебиан, или Убунту. Однако трудности более чем преодолимы, ввиду следующих обстоятельств.

    1. Качественная документация, о чем говорилось выше.
    2. SystemRescueCd - дистрибутив, созданный с целью восстановления работоспособности системы после аварии, основан на Gentoo. SystemRescueCd очень полезен в качестве установщика, позже на заключительном этапе вам пригодится образ ядра загрузочного LiveCD образа, если возникнут трудности с настройкой и сборкой ядра.
    3. Средство автоматизированной сборки ядра genkernel позволяет безболезненно пройти самый запутанный и неформализуемый процесс конфигурации и сборки ядра. Другие утилиты из набора portage-utils , eix , eselect и другие позволят хорошо ориентироваться в порядке и зависимостях установленных пакетов и избежать состояний блокировки.

    Маленькие хитрости

    Если по каким-то причинам компиляция пакета прервалась (выключился свет, завис компьютер и т. д.), но технически может быть возобновлена, можно продолжить процесс с этого самого места. Это особенно ценно для LibreOffice, Chromium или qt-webengine, которые собираются не один час.

    1. ebuild /usr/portage/cate-gory/prog/prog-x.y.z.ebuild compile
    2. ebuild /usr/portage/cate-gory/prog/prog-x.y.z.ebuild install
    3. ebuild /usr/portage/cate-gory/prog/prog-x.y.z.ebuild qmerge

    Смонтируйте /var/tmp/portage и /usr/portage на SSD, а если у вас немерено оперативной памяти, то можно и на tmpfs , это даст заметный прирост скорости работы emerge .


    Можно сделать бинарный бэкапы системных пакетов на всякий пожарный случай.


    quickpkg --include-config y <установленная программа>

    Использованные материалы и полезные ссылки

    Теги:

    • gentoo
    • linux
    • мифы и реальность
    Добавить метки

    Gentoo Linux - универсальный, быстрый и полностью бесплатный дистрибутив на платформе Linux, ориентированный на разработчиков и сетевых специалистов.

    В отличие от других дистрибутивов, Gentoo Linux имеет развитую систему управления пакетами под названием Portage. Portage разработана в лучших традициях BSD портов, но основана на Python и включат набор расширенных функций, включая зависимости, детальное управление пакетами, “поддельные” установки (в стиле OpenBSD), безопасное разъединение, системные профили, виртуальные пакеты, управление файлами конфигурации и т.д.

    Обзор возможностей Gentoo Linux

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

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

    Portage является основным компонентом Gentoo, который включает множество ключевых функций. Portage является системой распространения программного обеспечения для Gentoo. Для того, чтобы получить последнюю версию приложения для Gentoo, Вам нужно ввести всего одну команду: emerge -sync. После этого Portage станет обновлять так называемое дерево "Portage tree" из Интернета на локальную машину. Локальное дерево содержит полноценную коллекцию скриптов, используемых Portage для создания и установки свежих пакетов Gentoo. На данный момент Portage tree содержит более 10000 пакетов, а новые обновления и дополнения появляются регулярно.

    Portage является системой построения системы и установки пакетов. Когда Вам нужно установить пакет, Вы просто вводите emerge [имя пакета], и Portage построит специальную версию пакета, которая будет соответствовать вашим спецификациям, будет оптимизирована под аппаратную часть компьютера и будет включать все ожидаемые от пакета функции.

    Достоинства Gentoo Linux

    1. Требовательные пользователи дистрибутива Gentoo Linux могут лучше узнать устройство операционной системы Linux. Установка ОС и программ не так проста, как в Ubuntu, Fedora (Red Hat), Linux Mint, Backtrack, Debian и других дистрибутивах с бинарными пакетами. Следовательно, пользователи Gentoo станут лучше понимать, как работает ОС Linux.
    2. Любое ПО, которое можно установить на Gentoo Linux может быть скомпилировано и установлено из исходного кода. Тем не менее, многие программы доступны также в бинарном виде. Пользователям доступна также установка из исходного кода, причем в этом случае можно внести локальные изменения, адаптировав решение под конкретные нужды. Системы управления пакетами разработана на модульной основе, и каждый пакет может быть настроен и оптимизирован отдельным пользователем.
    3. Gentoo Linux - дистрибутив с очень быстрой схемой обновления. После выхода новой версии программы, она появляется в репозитории Gentoo в течение 1 или 2 дней. Пользователь может обновить ПО в любое время.
    4. При использовании Gentoo Вам не нужно часто устанавливать Linux OS для обновления до последней версии, в отличие от Ubuntu, Fedora или Debian.

    Недостатки Gentoo Linux:

    1. В режиме графической оболочки Gentoo Linux по-прежнему связан с производными Ubuntu.
    2. Потенциальные сбои, которые реже встречаются в критически важных серверах.
    Дочка Убунту прибежала к Дебиану и, весело смеясь, поцеловала его в лоб: "С днём рождения, папа!". Затем она окинула радостным взглядом сидящих за столом гостей и спросила своим звонким голосом:
    - Папа, а где Gentoo, разве он ещё не пришёл?
    - Нет, он ещё только собирается.

    Среди прочих Linux дистрибутивов Gentoo выделяется тем, что его окружает множество мифов, светлой и темной окраски. Я его использую более 10 лет в качестве домашней и офисной рабочей станции и хочу с вами разоблачить несколько мифов и создать парочку новых.

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

    Миф №1 - прирост производительности

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


    Это на самом деле не совсем миф, но вы скорее всего не заметите прироста производительности , если не ставите целью доказать это статистически, вооружившись Phoronix Test Suite или чем-то подобным. Возможно исключение для FireFox , собранного с профилированием , USE="pgo" .


    На чем основан этот миф? Действительно узкий круг вычислительных программ можно ускорить при компиляции под определенную платформу, задавая компилятору включение инструкций SIMD, AESNI, или AVX . Бинарные дистрибутивы из-за чрезмерной заботы о совместимости со старой архитектурой базой зачастую приносят подобные оптимизации в жертву. Вернее будет сказать, что так было раньше, а сейчас это не играет большой роли.


    Определенно, не за это адепты ценят Gentoo.

    Миф №2 - обновления съедают много времени

    Технически это верно, таки да, иногда программы обновляются долго, но обходные пути очень хорошо проторены, что и делает этот тезис мифом. Вот мои рекордсмены.


    (5:515)$ sudo qlop -t libreoffice firefox qtwebengine libreoffice: 15028 seconds average for 20 merges firefox: 3127 seconds average for 32 merges qtwebengine: 8884 seconds average for 5 merges

    Во-первых никто не мешает долгоиграющие обновления запускать ночью. Во-вторых в любой момент задание emerge и компиляцию исходников можно поставить на паузу (Ctrl+Z), возобновив позже в фоновом режиме (bg) или явно (fg). В-третьих можно задать автоматическое обновление через небольной скрипт, например такой .


    # Part 1 layman -S emerge --sync eix-update # Part 2 emerge -avuND --with-bdeps=y --complete-graph=y --backtrack=30 --keep-going --verbose-conflicts --exclude "gentoo-sources firefox libreoffice chromium glibc perl python gcc" world smart-live-rebuild -- -av --with-bdeps=y --complete-graph=y emerge -av --exclude "gentoo-sources firefox libreoffice chromium glibc perl python gcc" @preserved-rebuild eclean distfiles

    Миф №3 - в Gentoo самые свежие версии программ

    Конечно, если сравнивать с Debian Linux, то в целом это так, однако и тут бывают исключения. Тот же Debian раньше стал использовать Grub 2 в стабильной ветке и Perl какое-то время был более новой версии, нежели в Gentoo. Если же сравнивать стабильные ветки менее консервативных дистрибутивов с таковыми в Gentoo, то результат может быть каким угодно. Все зависит от кучи обстоятельств, насколько данный пакет обеспечен мейнтейнером и волонтерами. Например QEMU обновляется почти одновременно со стабильной веткой Github, а MATE - застрял в Gentoo на версии 1.12.2 из-за того, что у него мало разработчиков.


    (5:499)$ eix -ce qemu;eix -ce mate [I] app-emulation/qemu ([email protected]): QEMU + Kernel-based Virtual Machine userland tools [N] mate-base/mate (1.12-r1): Meta ebuild for MATE, a traditional desktop environment

    +1 - необычайная гибкость настроек

    Поговорим теперь немного о достоинствах Gentoo Linux. Гибкость и возможность настроить очень многие аспекты ОС под себя это то, чем блещет дистрибутив. Вот всего лишь несколько таких примеров.

    • Systemd или OpenRC , решайте сами.
    • Pulseaudio ставить или нет, думайте.
    • Включить поддержку dri3 в mesa и Xorg или оставить dri2 ?
    • Собрать незамутненную 64-битную ОС без 32-х битных библиотек совместимости или не стоит упарываться нарываться?
    • Какие кодеки включить в ffmpeg , mpv , vlc ?
    • Как насчет альтернативного пакетного менеджера, если штатные emerge и portage вас не устраивают?

    +2 - скользящие релизы

    Для меня это одно из основных преимуществ дистрибутива. Из-за того, что вы невнимательно читали RSS ленту вашего дистрибутива вы не окажетесь в ситуации , когда вам на голову свалился новый инит, файловая система или принцип работы сетевых интерфейсов.


    Все важные изменения доносят до пользователей заблаговременно через механизм рассылки новостей. Прочитать последние актуальные новости дистрибутива можно командой eselect news read .


    (5:501)$ sudo eselect news read No news is good news.

    +3 - хорошая документация

    ± emerge и portage

    Основная система управления пакетами portage и штатное средство управления пакетами emerge являются очень мощным и функциональным в руках опытного и внимательного к докам пользователя. Именно благодаря системе portage возможны тонкие и гибкие настройки операционной систему и пользовательского ПО (см. выше в +1). Даже беглое описание возможностей emerge/portage заслуживает отдельного поста, поэтому ограничусь общим описанием.

    • Установка и обновление программ позволяет указать нужные и ненужные опции, которые соответственно будут включены в них или исключены из них во время сборки. Это задается USE флагами, которые транслируются в --enable-<опция> и --disable-<опция> инструкции.configure скрипта установки из исходников.
    • Удаление программ тупо их удаляет, не заботясь о зависимостях. Так что будьте осторожны с тем, что вы собираетесь удалить. Если удалить python или gcc , придется затем скачивать бинарные пакеты , так как emerge впадет в ступор и будет не в состоянии собрать программу из исходников.
    • Поиск в базе данных пакетов, список файлов в пакете, определение пакета по заданному файлу, зависимости данного пакета, история операций emerge и прочие полезности.
    • Настройка производится правкой текстовых файлов, что не удивительно. С другой стороны таких файлов несколько и надо знать, что за что отвечает.
    • Обсчет зависимостей, парсинг древа портов происходит довольно медленно и это зачастую нервирует. Стандартная проверка обновлений может занять 2 минуты прежде чем выдать результат на экран.
    • Иногда случаются блокировки, конфликты между пакетами в момент обновления. В большинстве случаев такие ситуации устраняются за пару минут, если пользователь сносно знает матчасть. Однако в крайне редких случаях можно встрять надолго и распутывать зависимости по часу, а то и более.

    Из-за чего могут возникать такие ситуации? По самым разным причинам, изменения в лицензировании продукта, необходимость замаскировать, или наоборот размаскировать пакет, изредка ляпы разработчиков. Тут наблюдается обратная зависимость от частоты обновлений, поэтому рекомендуется регулярно и по возможности часто обновлять систему , чтобы накопленная энтропия в древе портов не порождала цепной реакции.

    -1 - начальная установка занимает много времени

    Полная ерунда, вот установка с помощью однострочника.


    wget goo.gl/5Y2Gj -O install.sh && sh install.sh

    А если серьезно, то действительно весь процесс займет времени намного больше, чем при установки бинарных дистрибутивов, таких как Дебиан, или Убунту. Однако трудности более чем преодолимы, ввиду следующих обстоятельств.

    1. Качественная документация, о чем говорилось выше.
    2. SystemRescueCd - дистрибутив, созданный с целью восстановления работоспособности системы после аварии, основан на Gentoo. SystemRescueCd очень полезен в качестве установщика, позже на заключительном этапе вам пригодится образ ядра загрузочного LiveCD образа, если возникнут трудности с настройкой и сборкой ядра.
    3. Средство автоматизированной сборки ядра genkernel позволяет безболезненно пройти самый запутанный и неформализуемый процесс конфигурации и сборки ядра. Другие утилиты из набора portage-utils , eix , eselect и другие позволят хорошо ориентироваться в порядке и зависимостях установленных пакетов и избежать состояний блокировки.

    Маленькие хитрости

    Если по каким-то причинам компиляция пакета прервалась (выключился свет, завис компьютер и т. д.), но технически может быть возобновлена, можно продолжить процесс с этого самого места. Это особенно ценно для LibreOffice, Chromium или qt-webengine, которые собираются не один час.

    1. ebuild /usr/portage/cate-gory/prog/prog-x.y.z.ebuild compile
    2. ebuild /usr/portage/cate-gory/prog/prog-x.y.z.ebuild install
    3. ebuild /usr/portage/cate-gory/prog/prog-x.y.z.ebuild qmerge

    Смонтируйте /var/tmp/portage и /usr/portage на SSD, а если у вас немерено оперативной памяти, то можно и на tmpfs , это даст заметный прирост скорости работы emerge .


    Можно сделать бинарный бэкапы системных пакетов на всякий пожарный случай.


    quickpkg --include-config y <установленная программа>

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

    В формате обзора Gento linux мы постараемся на практике оценить возможности этого дистрибутива, и сделать идеальную персональную систему. Познакомимся с Portage, научимся избавляться от лишнего функциональность в программах, оптимизировать систему под железо. Мы не будем описывать процесс установки 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. Так же советуем вам почитать о и