Вы можете получить исходные тексты с помощью анонимного 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
для
США.
Войдите в систему как администратор или выполните команду 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 -
Замечание: Некоторое из этого являются повторенниями/пояснениями
подобного раздела файла 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
', то не
беспокойтесь -- сопроцессор все рано будет использоваться, а эмуляция
будет проигнорирована. Для любой современной машины этот ответ будет `нет',
но не волнуйтесь если вы случайно ответите `да'; если это будет не нужно,
то эта возможность не будет использована.
Вам вероятно необходима эта поддержка; это означает, что ядро будет поддерживать стандартные жесткие диски 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
', если вы абсолютно уверены
в своем выборе.
Одно из лучших определений IPC (Interprocess Communication,
Межпроцессного сообщения) дано в в глоссарии книги по Perl. Не удивительно,
что некоторые программисты на Perl используют этот механизм чтобы позволить
процессу общаться с другими процессами, так же как и другие пакеты (самый
заметный из них это DOOM), так что ответ n
не является хорошей
идеей, пока вы не будете точно уверены в том, что вы делаете.
(в старых ядрах: используйте флаг -m486 для оптимизации для процессора 486)
Традиционно, это делает некоторую оптимизацию для выбранного процессора; ядра работают быстрее, но ядро может быть несколько больше. В новых ядрах, это однако больше не является правдой, так что вы должны ввести процессор для которого вы компилируете ядро. Ядро для ``386'' будет работать на всех машинах.
Если у вас есть устройства 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.
Из Linus README:
действие опции настройки ``kernel hacking'' обычно проявляется в более большом или медленном ядре (или оба симптома), и может даже сделать ядро менее стабильным из-за настройки некоторых подпрограмм на попытку активно сломать плохой код, чтобы найти проблемы с ядром (kmalloc()). Таким образом вам скорее всего надо ответить `n' на этот вопрос для ``production'' ядер.
После того как вы завершите настройку, вас выдадут сообщение о том, что
ваше ядро было настроено, вы можете ``проверить (настроить) основной
Makefile
для дополнительных настроек'', и т.п.
Теперь вы можете посмотреть в Makefile
. Вам вероятно не
понадобится изменять его, но вы не повредите его если посмотрите. Вы можете
также изменить опции в нем с помощью команды `rdev
' после того как
поместите ядро на его место. Если вы чувствуете себя неуверенно, когда
глядите в этот файл, то тогда не беспокойтесь о нем.