В начало → Gentoo Linux: установка и настройка → Третий этап — внутри 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 |