Next Previous Contents

3. Как настраивать ядро

3.1 Получение исходных текстов

Вы можете получить исходные тексты с помощью анонимного ftp с ftp.kernel.org в директории /pub/linux/kernel/vx.y где x.y это номер версии (например 2.2), и как указано выше, те имена, которые заканчиваются на нечетное число являются разрабатываемыми (development) ядрами и могут быть нестабильными.

Файлы обычно обозначены как linux-x.y.z.tar.gz, где x.y.z номер версии. Сервера также обычно содержат файлы с суффиксом .bz2, которые запакованы с использованием архиватора bzip2 (эти файлы имеют меньший размер чем обычные и займут меньше времени для передачи).

Лучше всего использовать сервера ftp.xx.kernel.org, где xx это буквенный код вашей страны; например ftp.at.kernel.org для Австрии и ftp.us.kernel.org для США.

3.2 Распаковка исходных текстов

Войдите в систему как администратор или выполните команду su, и перейдите в директорию /usr/src.Если вы устанавливали исходные тексты ядра при установке linux (как делает большинство), то том у вас уже есть директория названная `linux', которая содержит полное дерево устаревших исходных текстов. Если у вас есть свободное дисковое пространство, то вы можете сохранить эту директорию. Хорошая идея -- определить какая версия ядра запущена и соответственно переименовать директорию. Команда `uname -r' выдает номер текущей версии ядра. Поэтому, если команда `uname -r' выдала `1.0.9', то вы должны переименовать (с помощью `mv') `linux' в `linux-1.0.9'. Если вы не чувствуете, что поступаете опрометчиво, то просто сотрите всю директорию. В любом случае убедитесь, что никакой директории `linux' в /usr/src до распаковки полного исходного кода ядра.

Теперь распакуйте в /usr/src исходные тексты, пользуясь командой `tar zxpvf linux-x.y.z.tar.gz' (если вы получили просто файл .tar без расширения .gz на конце, то работает команда `tar xpvf linux-x.y.z.tar'). Содержимое архива будет распаковано. После окончания процесса, будет существовать новая директория `linux' в /usr/src. Перейдите linux и посмотрите файл README. Там будет раздел с заголовком `INSTALLING the kernel (Установка ядра)'. Выполните соответствующие инструкции -- символические ссылки должны быть на своем месте, удалите старые .o файлы, и т.п.

если вы скачали файл с расширением .bz2 и у вас есть программа bzip2 (о ней можно прочитать на сервере http://www.muraroa.demon.co.uk/), то выполните следующую команду:

     bz2cat linux-x.y.z.tar.bz2 | tar xvf -

3.3 Настройка ядра

Замечание: Некоторое из этого являются повторенниями/пояснениями подобного раздела файла README поставляемого Linus.

Команда `make config' выполненная в /usr/src/linux запускает скрипт настройки, которая задает вам много вопросов. Она требует наличия bash, так что проверьте что bash находятся в /bin/bash, /bin/sh, или $BASH.

Однако существуют более удобные альтернативы команде `make config' и вы можете найти их более удобными и легкими для использования. `make menuconfig' вероятно является наиболее широко используемой. Какой бы не был ваш выбор, наверное более приятно работать с интерфейсом, потому-что вы можете вернуться назад если передумаете. Те, кто использует систему X Window могут попробовать `make xconfig', если у вас установлен Tk (`click-o-rama' - Nat). `make menuconfig' -- это для тех, у кого установлен (n)curses и предпочитает текстовые меню. Эти интерфейсы имеют одно явное преимущество: если вы сделали неправильный выбор в течении настройки, то очень легко вернуться и исправить ее.

При использовании `make menuconfig' и `make xconfig' настройки будут отображаться в иерархическом виде.

Теперь вы готовы отвечать на вопросы, обычно ответы выглядят как `y' (да) или `n' (нет). Драйвера устройств обычно имеют опцию `m'. Это означает ``module (модуль)'', обозначая, что система будет компилировать этот драйвер, но не вставит его прямо в ядро, а сделает загружаемым модулем. Более комично эта опция описывается как ``maybe (может быть)''. Некоторые более ясные и не критичные опции здесь не описаны; смотрите раздел ``Другие опции настройки'' для их краткого описания. При использовании `make menuconfig', клавиша пробела производит переключение между вариантами ответов.

В версиях 2.0.x и более поздних, существует опция `?', которая обеспечивает краткое описание параметра настройки. Эта информация скорее всего наиболее свежая. Здесь я приведу список некоторых важных настроек, которые находятся в иерархии настроек и их краткое описание.

Эмуляция математических функций ядром (Тип процессора идополнительные возможности)

Если у вас нет математического сопроцессора (у вас голый 386 или 486SX), то вы должны ответить `y' на этот вопрос. Если у вас есть сопроцессор и вы все равно ответили `y', то не беспокойтесь -- сопроцессор все рано будет использоваться, а эмуляция будет проигнорирована. Для любой современной машины этот ответ будет `нет', но не волнуйтесь если вы случайно ответите `да'; если это будет не нужно, то эта возможность не будет использована.

Поддержка расширенных (MFM/RLL) дисков и дисков/cdrom IDE (блочныеустройства)

Вам вероятно необходима эта поддержка; это означает, что ядро будет поддерживать стандартные жесткие диски PC, которые имеет большинство людей. Этот драйвер не включает поддержку SCSI дисков; их выбор идет далее в настройке.

Затем у вас спросят о драйверах ``old disk-only (только старых дисков)'' и ``new IDE (новых IDE)''. Вы захотите выбрать один из них; основное отличие в том, что старые диски поддерживают только два диска на одном интерфейсе, а новые поддерживают вторичный (secondary) интерфейс и накопители IDE/ATAPI cdrom. Новый драйвер на 4k больше старого и также предположительно ``улучшен'', убирая некоторое количество ошибок, он может улучшить производительность вашего диска, особенно если у вас новое оборудование (типа EIDE).

Поддержка сети (Основная настройка)

В принципе вы должны ответить `y', если ваша машина подключена к сети, такой как internet, или вы хотите использовать SLIP, PPP, term и т.п. для dial up доступа к internet. Однако много пакетов (таких как оконная система X) требует поддержку сети, даже если вы не подключены ни к какой сети, вы должны сказать `y'. Позже у вас спросят, хотите ли вы поддержку TCP/IP; далее скажите `y', если вы абсолютно уверены в своем выборе.

System V IPC (Основная настройка)

Одно из лучших определений IPC (Interprocess Communication, Межпроцессного сообщения) дано в в глоссарии книги по Perl. Не удивительно, что некоторые программисты на Perl используют этот механизм чтобы позволить процессу общаться с другими процессами, так же как и другие пакеты (самый заметный из них это DOOM), так что ответ n не является хорошей идеей, пока вы не будете точно уверены в том, что вы делаете.

Семейство процессоров (Тип процессора и его дополнительныевозможности)

(в старых ядрах: используйте флаг -m486 для оптимизации для процессора 486)

Традиционно, это делает некоторую оптимизацию для выбранного процессора; ядра работают быстрее, но ядро может быть несколько больше. В новых ядрах, это однако больше не является правдой, так что вы должны ввести процессор для которого вы компилируете ядро. Ядро для ``386'' будет работать на всех машинах.

Поддержка SCSI

Если у вас есть устройства SCSI, то ответьте `y'. У вас запросят дополнительную информацию, такую как поддержку CD-ROM, дисков, и какой тип адаптера SCSI у вас имеется. Смотрите SCSI-HOWTO для дополнительной информации.

Поддержка сетевых устройств

Если у вас есть сетевая карта, или вы хотите использовать SLIP, PPP, или адаптер параллельного порта для подключения к Internet, то ответьте `y'. Скрипт настройки запросит у вас тип карты и какие протоколы вы хотите использовать.

Файловые системы

Затем скрипт настройки запросит у вас поддержку для каких файловых систем вы хотите иметь в своей системе:

Стандартная (minix) - Более новые дистрибутивы не создают файловые системы minix, и много людей не используют ее, но все равно хорошая идея настроить ее. Некоторые программы с ``дисками для восстановления (rescue disk)'' используют ее и все еще много гибких дисков могут использовать файловую систему minix, поскольку файловая система minix менее мучительная для использования на гибких дисках.

Second extended - эта файловая система широко используется в новых дистрибутивах. У вас скорее всего она есть и вам нужно ответить `y'.

msdos - если вы хотите использовать разделы вашего жесткого диска с MS-DOS, или монтировать гибкие диски, отформатированные под MS-DOS, то ответьте `y'.

Также имеется поддержка файловых систем других операционных систем.

/proc - (я так предполагаю, идея была бесстыдно украдена у Bell Labs). Она не создает файловую систему proc на диске; она является интерфейсом в виде файловой системы к ядру и процессам. Много программ, выдающих список процессов (таких как `ps') используют ее. Как нибудь попробуйте выполнить `cat /proc/meminfo' или `cat /proc/devices'. Некоторые командные процессоры (в частности rc) используют /proc/self/fd (известный как /dev/fd в других системах) для ввода/вывода. Вы должны почти всегда ответить `y' на этот вопрос; много важных утилит для linux зависят от этого выбора.

NFS - если ваша машина работает в сети и вы хотите использовать файловые системы находящиеся на других машинах с помощью NFS, то ответьте `y'.

ISO9660 - имеется на большинстве CD-ROM. Если у вас есть привод CD-ROM и вы хотите использовать его в Linux, то ответьте `y'.

Но я не знаю какие файловые системы мне нужны!

Хорошо, наберите команду `mount'. Ее вывод будет выглядеть примерно так:

    blah# mount
    /dev/hda1 on / type ext2 (defaults)
    /dev/hda3 on /usr type ext2 (defaults)
    none on /proc type proc (defaults)
    /dev/fd0 on /mnt type msdos (defaults)

Посмотрите на каждую строку; слово идущее за словом `type (тип)' является типом файловой системы. В моем примере мои файловые системы / и /usr являются файловыми системами типа second extended, я использую /proc, и есть гибкий диск смонтированный используя файловую систему msdos.

Вы можете попробовать выполнить `cat /proc/filesystems', если у вас в настоящее время разрешено использование /proc; эта команда перечислит файловые системы, поддержку которых имеет ваше ядро.

Настройка редко используемых, не критических файловых систем может вызвать раздувание вашего ядра; смотрите раздел о модулях чтобы избежать этого и раздел ``Ловушки'' о том, почему раздувшееся ядро является нежелательным.

Символьные устройства

В этом разделе вы выбираете драйвера для вашего принтера (параллельного принтера), шинной мыши, мыши для PS/2 (многие notebook используют протокол мыши PS/2 для своих встроенных трекболов), некоторые ленточные накопители и другие такие же ``символьные'' устройства. Ответьте `y' где необходимо.

Замечание: gpm это программа, которая позволяет вам использовать мышь вне системы X window для вырезания и вставки между виртуальными консолями. Она работает довольно хорошо, если у вас мышь для последовательного порта, потому-что она хорошо работает с X, но вам необходимо выполнить некоторые действия, для того чтобы работали другие типы мышей.

Звук

если вы чувствуете огромное желание слышать рявканье biff, то ответьте `y', и вы сможете сообщить программе настройки все данные о вашей звуковой карте. (Примечание о настройке звуковой карты: когда программа спросит у вас устанавливать ли полную версию драйвера, то ответьте `n' и сохраните некоторое количество памяти в ядре выбором только необходимых возможностей драйвера).

Если вы серьезно относитесь к поддержке звуковой карты, то взгляните и н а свободные драйвера на сервере http://www.linux.org.uk/OSS/ и на коммерческую версию Open Sound System по адресу http://www.opensound.com/.

Другие опции настройки

Не все опции настройки перечислены здесь потому-что они слишком часто меняются или являются очевидными (например, поддержка 3Com 3C509 для компиляции драйвера для данной карты ethernet). Существует довольно полный список всех опций (плюс способ поместить их в скрипт Configure), который был начат усилиями и сопровождается Axel Boldt (axel@uni-paderborn.de) и который доступен в интерактивном режиме. Этот список также доступен как один большой файл Documentation/Configure.help в дереве исходных текстов ядра Linux начиная с версии 2.0.

Работа над ядром (Kernel hacking)

Из Linus README:

действие опции настройки ``kernel hacking'' обычно проявляется в более большом или медленном ядре (или оба симптома), и может даже сделать ядро менее стабильным из-за настройки некоторых подпрограмм на попытку активно сломать плохой код, чтобы найти проблемы с ядром (kmalloc()). Таким образом вам скорее всего надо ответить `n' на этот вопрос для ``production'' ядер.

3.4 Что теперь? (Makefile)

После того как вы завершите настройку, вас выдадут сообщение о том, что ваше ядро было настроено, вы можете ``проверить (настроить) основной Makefile для дополнительных настроек'', и т.п.

Теперь вы можете посмотреть в Makefile. Вам вероятно не понадобится изменять его, но вы не повредите его если посмотрите. Вы можете также изменить опции в нем с помощью команды `rdev' после того как поместите ядро на его место. Если вы чувствуете себя неуверенно, когда глядите в этот файл, то тогда не беспокойтесь о нем.


Next Previous Contents