Linux Kernel HOWTO: Как настраивать ядро

Previous Next Table of Contents

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

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

Вы можете получить исходные тексты с помощью анонимного ftp с `ftp.funet.fi` в директории `/pub/Linux/PEOPLE/Linus`, с его зеркала, или с другого сервера. Они обычно обозначены как `linux-x.y.z.tar.gz`, где `x.y.z` номер версии. Более новые (лучшие?) версии и заплатки (patches) обычно находятся в поддиректориях, таких как ``v1.1`' и ``v1.2`'. Самый большой номер имеет последняя версия и обычно является ``тестовой версией'', это значит, что если вы нелегко плохо чувствуете себя с альфа или бета версиями, то вы должны использовать стабильную версию.

Я настоятельно рекомендую вам использовать сервера-зеркала вместо использования ftp.funet.fi. Здесь приведен короткий список серверов-зеркал и других серверов:

    USA:         sunsite.unc.edu:/pub/Linux/kernel
    USA:         tsx-11.mit.edu:/pub/linux/sources/system
    UK:          sunsite.doc.ic.ac.uk:/pub/unix/Linux/sunsite.unc-mirror/kernel
    Austria:     ftp.univie.ac.at:/systems/linux/sunsite/kernel
    Germany:     ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus
    Germany:     sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus
    France:      ftp.ibp.fr:/pub/linux/sources/system/patches
    Australia:   sunsite.anu.edu.au:/pub/linux/kernel

В общем зеркало сервера `sunsite.unc.edu` является хорошим местом, где можно взять исходные тексты ядра. Файл `/pub/Linux/MIRRORS` содержит список известных серверов-зеркал. Если у вас нет доступа к ftp, то список систем BBS, которые распространяют linux периодически посылается в группу comp.os.linux.announce; постарайтесь получить его.

Если вы ищете общую информацию о Linux и его дистрибутивах, то посмотрите на `http://www.linux.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` файлы, и т.п.

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

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

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

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

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

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

### Эмуляция математических функций ядром

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

### Поддержка обычных (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`', если вы абсолютно уверены в своем выборе.

### Ограничить память до менее 16MB

Существуют работающие с ошибками контролеры DMA на машинах с процессором 386, которые имеют проблемы с адресацией больше 16 Мб ОЗУ; вы можете ответить ``y`' в случае (редком) если у вас такой контроллер.

### System V IPC

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

### Тип процессора (386, 486, Pentium, PPro)

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

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

### Поддержка SCSI

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

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

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

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

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

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

Extended fs - это была первая версия расширенной файловой системы, которая сейчас не является широко используемой. Если вы не знаете точно, что она вам нужна и сомневаетесь, то скорее всего она вам не нужна.

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

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

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

umsdos - эта файловая система расширяет возможности файловой системы MS-DOS обычными Unix-подобными возможностями, такими как длинные имена. Это не является полезным для людей (таких как я), кто ``не работает в DOS.''

/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`'.

OS/2 HPFS - во время написания работает как файловая система только для чтения для OS/2 HPFS.

System V и Coherent - для разделов машин с System V и Coherent (это другие варианты Unix для PC).

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

Хорошо, наберите команду ``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`' где необходимо.

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

Замечание 2: Сейчас Selection считается устаревшей. Имя новой программы ``gpm''. Она может делать более фантастические вещи, такие как трансляцию протокола мыши, работать с несколькими мышами, ..

### Звуковые карты

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

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

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

         http://math-www.uni-paderborn.de/~axel/config_help.html

или через анонимный FTP по адресу:

         ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl_cnfg_hlp.x.yz.tgz

где `x.yz` это номер версии.

Для последних ядер (2.0.x и более поздних), этот список был интегрирован в дерево исходных текстов.

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

Из Linus README:

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

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

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

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

Previous Next Table of Contents