FAQ (FAQ, F.A.Q., Gentoo FAQ, Gentoo Linux FAQ, ЧаВо, ЧЗВ)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

В чём заключается принцип установки Gentoo Linux?

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

Как следует из вышесказанного, базовая система малопригодна для какой бы то ни было полезной работы и повседневного использования. Она "мертва", поскольку не содержит ядра и ей не откуда получить управление.

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

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

Итак, для установки Gentoo Linux необходимы две составляющие - базовая система и база пакетов. Базовая система - чтобы получить доступ к системе сборки и пакетному менеджеру. База пакетов - чтобы установить ядро, загрузчик ядра и дополнительные приложения. Базовая система и база пакетов не имеют жёсткой привязки друг к другу по версиям - это означает, что одна из случано выбранных версий архива stage сможет работать с случайно выбранной версией архива portage.

Вся установка системы сводится к поочерёдной распаковке архивов этих компонент на носитель, временном переключении в базовую систему из любой другой работающей системы и, наконец, установке и настройке дополнительных приложений, включая ядро и, в большинстве случаев, загрузчик ядра. В качестве работающей системы может выступить любая запущенная UNIX-подобная ОС или один из загрузочных дисков Gentoo Linux, который, в зависимости от комплектации, также может содержать графический инсталлятор, который последовательно проделает все те же самые шаги, включая поиск и скачивание архивов stage и portage, в автоматическом режиме, но с некоторыми оговорками.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Сколько времени займёт сборка OpenOffice.org?

Очень сильно зависит от объёма доступной оперативной памяти, процессора, носителя и включенных USE-флагов.

На ноутбуке с 1,5 Гб ОЗУ, двухядерным процессором 1,6 ГГц и не очень быстрым ядром, первоначальная сборка OpenOffice.org 2.3.0, с отключенной поддержкой Java, занимает около 9 часов.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Насколько система, собранная для архитектуры x86_64, будет быстрее системы, собранной для x86?

Скорее всего она не будет быстрее или быстрее, но незначительно... А в некоторых случаях, вероятно даже и медленнее. Почему? Ниже будет рассмотрено.

Следует понимать базовое отличие этих двух популярных архитектур. Увеличение скорости выполнения инструкций не является самоцелью процессоров x86_64. Наиболее значимым отличием является расширенное адресное пространство, 64-х разрядная арифметика и дополнительные регистры...

Расширенное адресное пространство позволяет приложениям получить в своё распоряжение большие объёмы памяти. Ядру системы - одновременно создать большее количество процессов в системе, одновременно открыть больше файлов. А 64-х разрядная арифметика позволяет тем приложениям, которые раньше разбивали большие числа на несколько меньших и тратили время процессора на обработку каждого этого числа по отдельности плюс время на выполнения кода, необходимое для поддержание логики разбиения/объединения, отказаться от подобного разбиения и, таким образом, уменьшить нагрузку на процессор, заставив его выполнить в два раза меньше инструкций, чем раньше.

Подобное разбиение применяется, например, в программах криптографии - скажем для представления 128-разрядного целого числа необходимо 4 32-х разрядных целых на процессорах с архитектурой x86 и 4 вызова инструкции, скажем, копирования. На процессоре x86_64 можно обойтись всего двумя 64-х разрядными числами и, соответственно, двумя вызовами подобных инструкций, которые затрят столько же процессорного времени, сколько и 32-х разрядные варианты тех же инструкций.

Но подобные изменения не произойдут, в большинстве случаев, волшебным образом автоматически при пересборке программы - для этого необходимо изменить саму программу, добавив (сохранив старый код) в неё так же и поддержку 64-х разрядных чисел.

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

Что касается расширенного набора регистров в x86_64 - пожалуй это и есть тот единственный шанс на некоторое повышение производительности... 8 дополнительных регистров (кстати, для сравнения - в других процессора, подобных PPC, их давно больше 8) могли бы с пользой использоваться в ассемблерном коде, создаваемом компилятором из программ, написанных, скажем, на C/C++, а также ядром ОС, таким образом уменьшив количество циклов обращений процессора к памяти... Но, в противовес этому, можно поставить затраты на поддержку этих регистров - сохранение/загрузку (перед входом в функции и т.д.). То есть поддержка использования дополнительных регистров может полностью нивелировать весь выигрыш от использования этих самых регистров.

Далее, большинство программ увеличатся в размерах - там где они использовали для хранения некоторого числа (во многих случаях неоправданно) 4 байта, теперь будут использовать в два раза больше памяти.

И последнее, при включенном режиме x86_64, нагрузка на кеш TLB (кеш, хранящий однажды преобразованные виртуальные адреса) будет больше, и данные из него будут вытесняться быстрее (поскольку при одинаковом размере TLB, 64-х разрядных адресов в него поместится меньше, чем 32-х разрядных), что лишь снизит его эффективность и общую производительность процессора.

Надеюсь, что из всего вышеприведённого понятно, что x86_64 - это скачок в возможностях процессора, а совсем не в скорости.

Можно не сомневаться, что рано или поздно 64-х разрядная архитектура вытеснит, 32-х разрядную, как это было и 16-разрядной, но это будет не победа в скорости, а всего лишь победа маркетинга, моды и небольшого количества специфичных программ, которым на самом деле нужен доступ к огромным, на сегодняшний день, объёмам памяти, 64-х разрядная арифметика или которые могут использовать увеличенные регистры для оптимизации (например можно упаковывать несколько небольших чисел в одно большое и использовать лишь одну инструкцию для его обработки, не полагаясь на суперскалярность процессора - ну это уже из области трюков оптимизации).
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Каковы последствия применения -fomit-frame-pointer в опциях компилятора (make.conf: CFLAGS/CXXFLAGS)?

Опция -fomit-frame-pointer указывает компилятору, что можно не создавать специальный пролог функции, там где это не требуется.

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

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

Компилятор GCC автоматически управляет опцией -fomit-frame-pointer при включенной оптимизации, любого уровня (-O). Это означает, что при сборке программы для архитектуры, на которой невозможно развернуть стек без наличия указателя на кадр стека, опция -fomit-frame-pointer не будет включена.

К архитектурам, на которых наличие опции -fomit-frame-pointer не затруднит отладку программы, относятся, например, x86_64, SPARC и т.д. К архитектурам, на которых опции -fomit-frame-pointer сделает отладку невозможной - x86. Из чего следует, что одновременное использование опции -O и -fomit-frame-pointer имеет смысл лишь при сборке системы только для x86, на x86_64 эта опция будет включена автоматически.

Резюме: если вы собираете систему для x86, вам не требуется отлаживать программы и вы не желаете слать разработчикам детальные отчёты об ошибках, но хотите немного выиграть в скорости - можете спокойно добавить -fomit-frame-pointer в свой CFLAGS/CXXFLAGS. Если же вы собираете для другой архитектуры, такой как x86_64, с включенной оптимизации, то вообще можете не обращать внимание на -fomit-frame-pointer.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Что такое оверлей?

В Portage - это альтернативное хранилище пакетов, существующее в системе независимо от официального дерева пакетов, но имееющее более низкий приоритет.

В Paludis понятия "оверлей" нет - все хранилища равноправны (либо имеют различный приоритет, но только в соответствиями с пожеланиями пользователя) и одновременно являются и "оверлеями" (в терминах Portage) и "официальными деревьями".
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Что означает сообщение "* ERROR: category/package failed."?

Обычно полный вывод пакетного менеджера, при возникновении подобных ошибок, похож на следующий:
*
* ERROR: media-gfx/sane-backends-1.0.18-r5 failed.
* Call stack:
* ebuild.sh, line 46: Called src_compile
* environment, line 2041: Called die
* The specific snippet of code:
* emake || diefunc "$FUNCNAME" "$LINENO" "$?";
* The die message:
* (no error message)
*
* If you need support, post the topmost build error, and the call stack if relevant.
* A complete build log is located at '/var/tmp/portage/media-gfx/sane-backends-1.0.18-r5/temp/build.log'.
* The ebuild environment file is located at '/var/tmp/portage/media-gfx/sane-backends-1.0.18-r5/temp/environment'.
*
Из чего, в большинстве случаев, невозможно сделать какие либо предположения о природе ошибки. Следует, по-меньшей мере, просмотреть файл build.log для того, чтобы понять в чём дело.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Меня не устраивает двоичная сборка 32-х разрядного приложения в 64-х разрядной системе. Что можно сделать?

Если вам необходимо запускать 32-х разрядное приложение в 64-х разрядной системе, то простейшим решением является установка 32-х разрядного окружения для эмуляции 32-х разрядной системы. Данное окружение представляет собою набор двоичных 32-х разрядных библиотек и программ, которые необходимы для работы другого 32-х разрядного приложения. Главным недостатком, для пользователя системы Gentoo Linux, является невозможность отказаться от особенностей пакета, таких как ненужные зависимости, использованных автором при сборке.

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

В этом случае вы получаете две системы и одно ядро. Одна из систем является системой "одна в другой" и представляет собою полноценную 32-х разрядную среду, вход в которую выполняется не при обычной загрузке системы, когда работает связка "загрузчик -> ядро -> init", а в любое время после загрузки основной, 64-х разрядной, системы.

Руководства по подобной методике, можно найти, например, тут.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Как отключить автоматический запуск сервисов net.*?

Изменить значение RC_PLUG_SERVICES в файле /etc/conf.d/rc на "!net.*".

Данный параметр в файле /etc/conf.d/rc контролирует автоматический запуск сервисов, инициируемый демонами hotplug/coldplug.

Можно совсем отключить механизм hotplug/coldplug, установив значения параметров RC_HOTPLUG и RC_COLDPLUG в файле /etc/conf.d/rc в "no", в результате чего также не будут загружены модули ядра для различных устройств, обнаруженных демонами hotplug/coldplug.

Также следует иметь в виду, что попытка запуска любого сервиса, зависящего от сервиса типа net, иницирует запуск одно или нескольких сервисов типа net, если значение параметра RC_NET_STRICT_CHECKING в файле /etc/conf.d/rc установлено в "no" (по умолчанию) или "yes", в независимости от значений RC_PLUG_SERVICES , RC_HOTPLUG и RC_COLDPLUG.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Как узнать каком пакету принадлежит файл с определённым именем?

Экспериментальный сервис, который отображает имя файла на имя пакета, есть здесь: http://www.portagefilelist.de/index.php/Special:PFLQuery2.

Данный сервис не может быть точным и не содержит полную базу файлов официального дерева пакетов. Для определения принадлежности файла какому либо установленному, в конкретной системе, пакету следует использовать утилиты, подобные qfile из пакета app-portage/portage-utils, equery из app-portage/gentoolkit или соответствующие параметры пакетных менеджеров (например "paludis --owner", для Paludis).
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

При установке пакета в системе x86_64 сборка останавливается на ошибке "configure: error: cannot run C compiled programs.". Как исправить?

Пересобрать ядро с включенным параметром CONFIG_IA32_EMULATION. Эта ошибка возникает при установке 32-х разрядных пакетов.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

С чего начать написание собственного файла ebuild для нужного мне пакета?

Официальная документация по написанию ебилдов есть здесь:
- http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml
- http://devmanual.gentoo.org/

Так же будет полезно просмотреть существующие файлы ebuild в дереве пакетов.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Можно ли как-то повлиять на скорость сборки/пересборки пакетов без обновления аппаратной части компьютера?

Да.

- можно использовать файловую систему tmpfs для каталогов с временными файлами: /tmp, /var/tmp/portage, /var/tmp/paludis или другие, которые использует пакетный менеджер (Portage, Paludis, pkgcore и т.д.) в качестве рабочего каталога (следует иметь в виду, что стандарт FHS говорит о том, что каталог /var/tmp предназначен для временных файлов, которые должны сохраняться между перезагрузками, и потому использовать tmpfs для всего /var/tmp не совсем правильно с точки зрения LSB).

- при небольшом количестве оперативной памяти и, соответственно, невозможности использовать tmpfs для рабочего каталога, можно разместить /var/tmp на самом быстром носителе или разделе, имеющемся наличии - например на диске SSD.

- можно использовать вычислительные мощности других компьютеров, имеющихся в наличии (например, в локальной сети), с помощью distcc.

- при пересборке пакетов очень может помочь кеширование однажды скомпилированных файлов исходного кода с помощью ccache.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Существует ли удобный автоматизированный способ сборки собственных архивов базовой системы (stage)?

Да. Существует, по-крайней мере, две системы автоматизированной сборки архивов базовой системы для Gentoo Linux:
- Catalyst
- Metro, изначально разработанный Даниэлом Роббинсом для Funtoo
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Что означает ошибка "Temporary failure in name resolution"?

Для разрешения текстового имени в IP-адрес соответствующему компоненту libc требуется знать знать адрес DNS-сервера.

Подобная ошибка обычно возникает, если отсутствует файл /etc/resolv.conf, /etc/resolv.conf не содержит записи указывающие на DNS-сервер или же /etc/resolv.confсодержит неверные записи. Обычно /etc/resolv.conf создаёт/обновляет клиент DHCP. клиент PPP или resolvconf/openresolv.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Я обнаружил ошибку в пакете, после которой пакетный менеджер прерывает установку. Что делать?

Если вы уверены, что это ошибка в пакете, а так бывает часто, особенно при попытке установки неотлаженного (нестабильного, замаскированного) пакета, то следует попробовать следующие пути решение:

- посетить Gentoo Bugzilla и попробовать найти описание подобной проблемы и пути её решения, которые следует использовать до тех пор пока в дерево пакетов не будет включена исправленная и оттестированная версия пакета
- проанализировать логи сборки и попытаться устранить проблему самостоятельно, возможно написав патч и поделившись им с сообществом
- установить более старую/стабильную версию пакета
- отправить в Gentoo Bugzilla правильно оформленное описание проблемы и ждать когда её исправят
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

После обновления xorg-server, до версии 1.5 или выше, перестали работать устройства ввода. Как исправить?

xorg-server, версии 1.5 и выше, имеет ряд новшеств, в числе которых использование, по умолчанию, HAL для определения всех устройств ввода и их параметров, а также интерфейса evdev для доступа к этим устройствам. Для работы этого механизма требуется запущенный демон HAL, с соответствующими информационными файлами (FDI), поддержка интерфейса evdev в ядре, драйвер evdev для xorg-server и поддержка HAL для xorg-server.

- для автоматического запуска HAL необходимо добавить скрипт /etc/init.d/hald в один из уровней запуска
- для поддержки интерфейса evdev в ядре, достаточно включить параметр "Event interface" в разделе "Input device support"
- современные версии HAL включают в себя все необходимые информационные файлы (/usr/share/hal/fdi/policy/10osvendor/10-x11-input.fdi) и устанавливать их вручную обычно не требуется
- для поддержки HAL в xorg-server достаточно включить USE-флаг hal
- для сборки драйвера evdev для xorg-server, достаточно включить USE-флаг evdev в подгруппе флагов INPUT_DEVICES
- вносить изменения в xorg.conf не требутся

Дополнительную информацию о включении поддержки HAL в xorg-server или же, наоборот, для использования старого, встроенного в xorg-server, механизма определения устройств ввода, можно найти по указанным ссылкам:

- http://www.gentoo.org/proj/en/desktop/x/x1...grade-guide.xml
- http://www.gentoo.ru/node/14450
- http://ru.gentoo-wiki.com/wiki/HOWTO_hal_%...%BE%D0%B4%D0%B0

Развернутое описание HAL: http://people.freedesktop.org/~david/hal-spec/hal-spec.html
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

Каковы типичные ошибки начинающих пользователей Gentoo Linux?

- Инорирование документации

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

- Использование пакетов, помеченных как нестабильные

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

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

- Отключение различных опций, включенных по умолчанию

Возможность отключения и включения дополнительных опций (с целью оптимизации), таких как USE-флаги, параметры ядра и т.д., подразумевает, что может существовать множество программных конфигураций. Понятно, что протестировать всё множество возможных конфигураций очень сложно, особенно это актуально для разработчиков открытого программного обеспечения. В следствии чего всегда существует набор опций, отключении или включение которых не было предусмотрено разработчиками. Типичный итог - пользователь, не имеющий ни желания ни квалификации для анализа этих непонятных ошибок, оказывается в затруднительном положении.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: FAQ

Сообщение serzh-z »

После обновления xorg-server, перестали работать устройства ввода. Как исправить?

Пересобрать драйверы x11-drivers/*.

При использовании Portage нужно предварительно установить пакет app-portage/portage-utils. Получить список установленных драйверов X11 можно так:
QUOTE писал(а):qlist -I -C x11-drivers/

При использовании Paludis получить список можно так:
QUOTE писал(а):paludis --list-packages --repository installed --category x11-drivers | grep '*' | cut -d ' ' -f 2

Примеры пересборки:
QUOTE писал(а):emerge -1 `qlist -I -C x11-drivers/`
QUOTE писал(а):paludis -i1 `paludis --list-packages --repository installed --category x11-drivers | grep '*' | cut -d ' ' -f 2`
QUOTE писал(а):paludis -i1 `qlist -I -C x11-drivers/`

При обновлении xorg-server с версии ниже 1.5, причина отказа устройств ввода может быть другой. См. FAQ
Спасибо сказали:
Закрыто