В началоGentoo Linux: установка и настройка → Третий этап — внутри Gentoo
Gentoo-doc HOME Пред.: Этап второй — подготовка к смене корняВ началоУровень выше: Gentoo Linux: установка и настройкаСлед.: Этап четвертый: в недра ядра

6. Третий этап — внутри Gentoo

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

Требуемые к тому действия описываются в предположении: а) установки всех трех тарбаллов и системы портежей, б) помещения в каталог /usr/portage/distfiles (уже относительно нового корня — /mnt/gentoo) некоторого набора минимально необходимых исходников, и в) хоть какого-то соединения с Интернетом (на крайний случай). Без последнего можно, как я неоднократно говорил, и обойтись — но тут уж потребуется ювелирная точность в выборе предварительно скачанных (и ныне помещенных в /usr/portage/distfiles) архивов исходников.

В чем смысл этих действий? Да ни много, ни мало, как в полной пересборке базовой системы (те, кто имел дело с FreeBSD, неизбежно вспомнят тут make world) и доустановки необходимых компонентов. Поскольку это — не apt-get, и не установка прекомпилированных пакетов, все требуемое извлекается непосредственно из исходников. И потому первое, что нам потребуется — настройка условий компиляции.

Глобальные параметры сборки посредством системы портежей описываются в файле /etc/make.conf. Вызываем его в редакторе nano (не забыв про опцию -w, если не решили этот вопрос разом — определением псевдонима) и начинаем действовать.

Первое, что бросается в глаза после открытия вышеупомянутого файла — переменная USE. Смысл ее — в определении условий предкомпиляционного конфигурирования исходников. То есть, она эквивалента опциям --enable/disable или --with/without скрипта ./configure, с исполнения которого начинается ручная сборка любой программы. И, задав значения этой переменной (несложно догадаться, что указав

USE="gpm"

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

USE="-gpm"

таковую отключаем раз и навсегда (на самом деле — не совсем навсегда, но это тема отдельной беседы).

Список включенных по умолчанию значений переменной USE можно подсмотреть в файле /usr/portage/profiles/default-x86-XX/make.defaults. А полный (и логично классифицированный) список доступных значений можно найти в файле документации — use-howto.html. Мы ведь списали его на дополнительный носитель? Да? — тогда можем вызвать с очередной виртуальной консоли...

Следующая переменная файла /etc/make.conf:

CHOST='i686-pc-linux-gnu'

Она указывает на архитектуру машины, на которой будут собираться программы. И ее, при необходимости, нужно будет привести в соответствие с реалиями оной. Правда, ныне такая необходимость возникнет редко — разве что поменять первую шестерку на пятерку в случае Pentium-просто...

А вот следующая строка,

CFLAGS="*"

очень важна. Ею задаются именно те флаги оптимизации, передаваемые компилятору для оптимизации под конкретный процессор. Вдаваться в детали опять же не буду — и это тема особого, и очень подробного, разговора. Достаточно помнить, что флаг -O3 (а именно он указан здесь по умолчанию) устанавливает самый высокий уровень оптимизации, а оба флага -mcpu=* и -march=* указывают, под какой именно процессор оптимизировать следует. Различие между ними — в том, что программа, собранная с флагом -mcpu=i686, будучи оптимизирована под класс процессоров Pentium Pro и выше (а с формальной точки зрения, и P-II, и P-III, и даже P-4 принадлежат к нему), теоретически способна запуститься и на Pentium-100, тогда как флаг -march=athlon-xp потребует именно того процессора, который указан — даже на просто Athlon'е скомпилированная с ним программа работать не будет.

Смысл переменной

CXXFLAGS=

аналогичен — только для программ, написанных не на Си, а на Си++. И ее имеет смысл определить просто, через переменную CFLAGS=

CXXFLAGS="${CFLAGS}"

как это и сделано в example-файле. Остальные строки которого определяют условия скачивания (в частности, ftp-клиента по умолчанию). Менять их на данном этапе — оснований не вижу, кроме разве что идиосинкразии к wget, используемому по умолчанию.

Определившись с условиями, можно начинать перестройку. Для этого меняем каталог

$ cd /usr/portage

и запускаем сценарий

$ scripts/bootstrap.sh

Он производит сборку пакетов binutils, gcc, gettext и glibc (замещая установленные из тарбаллов прекомпилированные их варианты), а после сборки glibc — пересборку binutils, gcc и gettext. Достигая, таким образом, их идеальной оптимизации... Хотя и ценой временных затрат — процесс даже на мощной машине вполне может занять часок-другой.

Теперь можно полюбоваться на список пакетов, установленных в нашей системе — ибо это и есть тот самый base Linux с очень небольшими коррективами. Для этого даем команду

$ emerge -p system

Если есть желание, время, а главное — полный набор исходников в /usr/portage/distfiles, можно завершить пересборку базовой системы командой

$ emerge system

Здесь без постоянного коннекта с очень большой вероятностью рано или поздно последует сообщение об ошибке — о невозможности получить пакет имя_рек с такого-то адреса. Если имеется модем, к подбору исходников мы подошли ответственно, — не беда: активизируем еще одну виртуальную консоль (а на ней будет жить наша первозданная Live-система с CD) и дозваниваемся до провайдера через программу wvdial (а она у нас пока существует только в той самой виртуальной Live-системе), а потом повторяем последнюю команду. И, скорее всего, дело было в каком-нибудь исконно Gentoo'ском патчике объемом в пару килобайт, так что процедура эта нас не разорит. Если же обуяет приступ жадности, можно просто продолжить, а к emerge system вернуться в другой раз — после полного зеркалирования каталога distfiles с сайта Gentoo, и за казенный счет, разумеется :-)

Пред.: Этап второй — подготовка к смене корняВ началоУровень выше: Gentoo Linux: установка и настройкаСлед.: Этап четвертый: в недра ядра
В началоGentoo Linux: установка и настройка → Третий этап — внутри Gentoo