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

7. Этап четвертый: в недра ядра

На предыдущем этапе были перестроены все компоненты базовой системы, кроме одного — зато самого главного: ядра системы. Перекомпиляция ядра — процедура, рано или поздно неизбежная для пользователя любого дистрибутива Linux, даже самого user-ориентированного. Перед пользователем же Source Based дистрибутива она встает с неотвратимостью рока уже при установке системы.

Gentoo — опять не составляет исключения. Хотя в заключительных разделах я расскажу, как при крайней необходимости можно обойти этот этап, однако по хорошему к тому нет никаких причин. И потому, хотя тема пересборки ядра — совершенно отдельная, и нам придется еще не раз к ней возвращаться, применительно случаю постараюсь осветить ее здесь в минимально возможном объеме.

Чтобы пересобрать ядро, для начала нужно иметь его исходники. Ни на инсталляционном диске, ни в составе тарбаллов stage2-3 мы их не найдем. Что делать?

При подключении к Сети — все просто: к нашим услугам система портежей. Отправляемся в каталог /usr/portage, просматриваем содержимое подкаталога sys-kernel — и остается только дивиться свалившемуся на голову богачеству: даже отметая классово чуждые портежи ядер для Sparc, PPC, Alpha, на выбор предоставляется чуть не дюжина вариантов. Подчеркну, речь идет не о прекомпилированных ядрах, а именно о вариантах исходников, снабженных патчами, обеспечивающими дополнительные опции относительно ядра первозданного.

Разумеется, и последнее, каноническое ядро от Линуса Торвальдса — тоже доступно (под известным именем vanilla-sources) для тех, кто хочет быть святее папы римского. Далее — фирменная коронка, gentoo-sources, это — лучший выбор с точки зрения функциональности). Ну и ac-sources — ядро от Алана Кокса, в патчах которого обычно воплощены новейшие достижения ядреной науки и техники.

Есть и более специфичные варианты: usermode-sources — ядро для запуска Linux в Linux, в т.н. пользовательской моде (предназначается обычно для тестирования); openmosix-sources — ядро с поддержкой одноименной (openMosix) кластерной технологии, и т.д..

Так что в этих условиях главное — определиться с выбором. А потом — простая команда

$ emerge sys-kernel/name-sources

некоторый период ожидания, пока скачиваются сами исходники ядра и все необходимые патчи , еще чуть-чуть времени на развертывание архивов — и вперед, в каталог /usr/src/linux для конфигурирования.

При наличии предусмотрительно скачанных исходников ядра, наиболее явно необходимых патчей и модемного подключения — сложнее, но не намного. Выполняем ту же команду. Если повезет — все по прежней схеме, но предупреждаю, шансов на это мало: почти наверняка при предварительном скачивании какой-то Gentoo-специфичный патч будет пропущен (учтем также наше пока еще очень ограниченное знакомство с системой портежей вообще — в дальнейшем такой ситуации можно и избежать). Но не беда: получив сообщение об ошибке, соединяемся с Сетью и либо скачиваем недостающий патч вручную (хоть через браузер lynx — полный адрес к недостающему компоненту будет выведен), либо (и это, товарищи, правильнее) запускаем процедуру по новой. Разорвав соединение по завершении установки исходников ядра.

И не нужно бояться, что это больно ударит по карману: при соединении по линии, способной вынести протокол V90, скачивание большинства патчей занимает минуты. И wget при обрыве коннекта способен к докачке — так что непроизводительные расходы сведены к минимуму.

Хуже, если нет ни полного комплекта исходников, ни модема. И это не смертельно, но придется кое-чем поступиться (надеюсь, не принципами). То есть: просто тупо распаковываем архив исходников ядра в каталог /usr/src, распаковываем и накладываем минимально необходимые патчи, далее — обычным порядком, как описано ниже. Можно и просто ограничиться каноническим ядром Линуса. Недостаток — кроме возможных потерь некоторых функций, эти действия не будут зафиксированы в базе данных портежей (имеющей место пребывания в каталоге /var/db/pkg), то есть система портежей о них как-бы и не узнает (на самом деле — не совсем, но все равно — этот способ может рассматриваться как временное решение).

И еще одно временное решение — вообще отказаться от пересборки ядра. А как при этом получить возможность загрузить систему — я расскажу под занавес (если вы к тому времени сами не догадаетесь).

В любом случае, кроме последнего, исходники ядра мы получили, так что можно отправляться в вышеупомянутый каталог /usr/src/linux (или /usr/src/linux-номер_версии-имя_варианта, без разницы, — первый лишь символическая на него ссылка). И давать команду

$ make menuconfig

которая сгенерирует меню настройки опций ядра. Любители отвечать черному экрану могут выбрать и make config — но я к ним не принадлежу.

Сам процесс конфигурирования описывать не буду — это совсем другая история. Отмечу только обязательные опции. Первая из них — поддержка экспериментальных и разрабатываемых опций: большинство продвинутых возможностей ядра Linux описываются именно этими терминами (что не мешает им функционировать вполне справно). В секции файловых систем необходимо отметить поддержку файловых систем процессов (procfs), файловой системы виртуальной памяти (Virtual Memory Filesystem) и файловой системы устройств (devfs). И, конечно же, тех файловых систем, которые были размещены на созданных разделах (например, XFS или ext3fs — про поддержку ext2fs, надеюсь, не забудет ни один линуксоид). Ну и учесть поддержку требуемых устройств — сами знаете, что у вас вкручено в машине.

Закончив с конфигурированием, выходим из системы меню (не забыв сохранить изменения) и даем последовательность команд:

$ make dep
$ make clean
$ make bzImage
$ make modules
$ make modules_install

Разумеется, не обязательно последовательно, можно и одной строкой, разделяя символом ; (или, правильнее, &&). А то и вообще в форме, рекомендованной руководством:

$ make dep && make clean bzImage modules modules_install

Теперь остается только скопировать образовавшийся образ ядра в загрузочный каталог

$ cp /usr/src/linux/arch/i386/boot/bzImage /boot

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

$ emerge sys-apps/xfsprogs

установит все необходимое для работы с файловой системой XFS. Напомню, что архив исходников пакета xfsprogs должен иметься в каталоге distfiles.

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

$ emerge sys-libs/gpm

А теперь активизируем ее. Если мы имеем наиболее типичного ныне грызуна с колесиком и под разъем PS/2, это будет выглядеть так:

$ gpm -t imps2 -m /dev/psaux

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

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