Linux: Полное руководство — страница 71 из 98

sysctl -а
выводит список всех параметров, доступных для изменения.

20.4. Загрузочные параметры ядра

Полное описание параметров, которые можно передать ядру в ходе начальной загрузки, занимает достаточно много места, поэтому в этом параграфе я рассмотрю только основные из них. За более подробным их описанием вам следует обратиться к документу BootPrompt-HOWTO или к справочной системе (

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

Если ядро загружается средствами BIOS (например, с дискеты), то передать ему параметры невозможно: нужно использовать какой-либо загрузчик Linux. В главе 9 описано применение диспетчеров загрузки LILO и GRUB, то есть вы уже знаете, как указывать параметры в командной строке загрузчика или в его конфигурационном файле. Осталось разобраться с тем, какие это могут быть параметры.

Напоминаю, что синтаксис строки параметров следующий:

имя[=значение1] [, значение2...] [имя2 [=значение2.1] [, значение2.2...]]

Значения разделяются запятой без пробелов, а параметры — пробелами. Пример строки параметров:

root=/dev/hda1 ether=9,0x300,0xd0000,0xd4000,eth0

20.4.1. Параметры корневой файловой системы

root=устройство: указывает устройство, на котором находится корневая файловая система. В качестве устройства допустимо указывать:

/dev/hdaN … /dev/hddN — для IDE-дисков:

/dev/sdaN … /dev/sdeN — для SCSI-дисков;

/dev/xdaN … /dev/xdbN — для XT-совместимых дисков;

/dev/fdN — флоппи-дисковод, где N=0 соответствует диску A:, a N=1 — диску В:

/dev/nfs — псевдоустройство, указывающее ядру, что нужно загружаться по сети;

ro: требует монтировать корневую файловую систему в режиме «только чтение». Используется по умолчанию;

rw: задает монтирование корневой файловой системы в режиме «чтение/запись». При использовании этого параметра нельзя запускать программы типа fsck. Перед запуском программы fsck нужно перемонтировать корневую файловую систему в режиме ro.

20.4.2. Объем памяти

Иногда нужно указать объем ОЗУ, отличный от того, который имеется на самом деле. Например, у вас чипсет Intel 810 с интегрированной видеоплатой, тогда вам нужно указать объем ОЗУ на 1 Мб меньше (а иногда даже на 2 Мб). Это связано с аппаратной особенностью чипсета. Более подробно об этом вы можете узнать на сайте компании Intel (

www.intel.com
).

Объем установленной памяти можно указать с помощью параметра mem:

mem=<число>

Число определяет объем памяти, установленной в компьютере, например, mem = 16384K или mem = 16M.

20.4.3. Управление RAMDISK

При создании загрузочных дискет для ОС Linux необходимо, чтобы на эти дискеты было помещено нужное программное обеспечение и чтобы для этого программного обеспечения хватило места. Обычно поступают следующим образом: создают сжатый архив всего необходимого программного обеспечения и помещают его на загрузочный диск. При загрузке системы в памяти создается виртуальный диск, на который это программное обеспечение распаковывается и записывается. Этот виртуальный диск называется RAM-диском.

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

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

В том случае, если вы для загрузки используете две дискеты (первая содержит ядро — boot, на второй находится образ файловой системы — root), образ файловой системы должен начинаться с нулевого сектора (смещение = 0).

Описываемые далее параметры задают режимы работы с RAM-диском.

load_ramdisk=N: указывает, использовать RAM-диск (N=1) или нет (N=0). Значение по умолчанию равно 0.

prompt_ramdisk=N: сообщает ядру, нужно ли запрашивать дискету, которая содержит образ файловой системы (N=1). Значение по умолчанию равно 1 (запрашивать).

ramdisk_start=<смещение> : разрешает ядру находиться на дискете вместе со сжатым образом RAM-диска и указывает номер блока, с которого начинается RAM-диск.

ramdisk_size=N: указывает максимальный размер (в Кб) RAM-диска. Начиная с версии ядра 1.3.48, память под виртуальный диск выделяется динамически. Значение по умолчанию равно 4096 (4 Мб).

noinitrd: загружаться без использования initrd (см. п. 9.1.1.1).

20.4.4. Управление планировщиком ввода/вывода

Каждой программе, работающей под Linux, время от времени необходим доступ к. диску. Ядро Linux решает, когда именно программа получит этот доступ. Часть ядра, отвечающая за планирование ввода/вывода, называется планировщиком ввода/вывода. Параметр elevator предназначен для указания планировщику алгоритма работы. Существует четыре различных алгоритма работы планировщика:

♦ Режим по умолчанию (noop) — для настольного компьютера он не подходит, и мы его даже рассматривать не будем.

♦ Упреждающее планирование (Anticipatory Scheduling) — при чтении программой данных с диска ядро пытается предугадать, какие данные программа будет читать при следующей операции чтения. Если ядро правильно угадало «мысли» программы, этот алгоритм позволяет существенно повысить производительность системы. Кроме всего прочего, эффективность этого алгоритма сильно зависит и от логики программы.

elevator=as

♦ «Справедливая» очередь (Complete Fairness Queuing) — равные права для всех программ. Ядро равномерно планирует операции ввода/вывода для каждой программы, здесь нет каких-либо программ, которые могут монополизировать доступ к диску. Если несколько программ одновременно запросят доступ к диску, все программы получат ответ. Данный метод в некоторых случаях позволяет повысить производительность системы, а в других, наоборот, снижает общую производительность — все зависит от набора задач, решаемых на конкретной системе.

elevator=cfq

♦ Deadline-планирование или планирование крайних сроков (Deadline Queuing) — все приложения, запросившие доступ к диску, ставятся в очередь. Из очереди извлекается одна программа, которая и получает практически монопольный доступ к диску. Пока эта программа работают, все остальные ожидают в очереди. По истечении определенного времени планировщик переводит эту программу в состояние ожидания и переключается на другую программу — следующую в очереди. Теперь вторая программа получает доминирующий доступ к диску. Потом третья, четвертая и т.д. Этот метод хорош для сервера баз данных, но не для рабочей станции.

elevator=deadline

У каждого алгоритма есть свои преимущества и недостатки. Но только два из них подходят для настольного компьютера (рабочей станции) — второй и третий. В Интернете вы можете найти данные о том, что для настольного компьютера более подходит второй алгоритм.

Для выбора нужного режима перезагрузите компьютер и при загрузке ядра Linux передайте ему параметр elevator с одним из перечисленных выше значений.

20.4.5. Другие параметры ядра

debug: сообщения ядра (важные и не очень) передаются через функцию printk(). Если сообщение очень важно, то его копия будет передана на консоль, а также функции klogd() для его регистрации на жестком диске. Сообщения передаются на консоль, потому что иногда невозможно запротоколировать сообщение на жестком диске (например, отказ самого диска). Предел того, что будет отображаться на консоли, задается переменной console_loglevel. По умолчанию на консоли отображается все, что выше уровня DEBUG (7). Список уровней можно найти в файле kernel.h.

init=/путь: по умолчанию ядро пытается запустить демон init, который продолжит загрузку согласно стартовым сценариям. Если программа init повреждена, то для аварийно-восстановительных работ вы можете запустить вместо нее командный интерпретатор (init=/bin/sh), в котором и будете ремонтировать систему.

no-hlt: процессоры 386 (и выше) имеют инструкцию hlt, которая переводит процессор в режим пониженного потребления энергии, где он ожидает прерывания от устройства. Параметр no-hlt отключает использование инструкции hlt. Существование этого параметра обусловлено тем, что некоторые чипы 486DX-100 имеют проблемы с этой инструкцией. Кроме того, параметр no-hlt позволяет использовать Linux на бракованных процессорах.

no387: отключает использование математического сопроцессора.

no-scroll: отключает функцию прокрутки экрана во время загрузки.

reboot=<режим>: параметр, задающий режим перезагрузки. Возможные значения: cold и warm, то есть «холодная» или «горячая» перезагрузка. Поддерживается ядрами версии 2.0 и выше.

single: загружает систему в однопользовательском режиме — например, для ремонта.

20.5. Компиляция ядра

20.5.1. Зачем обновлять ядро?

Linux развивается быстрее любой другой операционной системы. Регулярно появляются новые версии ядра, реализующие новые функции. Например, едва успел выйти дистрибутив Fedora Core 4 на ядре 2.6.11, а на

www.kernel.org
уже лежит стабильная версия 2.6.12.2. Еще чаще появляются драйверы к новым устройствам и заплатки с исправлением обнаруженных ошибок (например, прорех в системе защиты).

Допустим, новое ядро целиком еще можно установить из бинарного RPM-пакета (см. п.7.4.2). Но для подключения нового драйвера недостаточно просто скопировать его в каталог ядра: нужно интегрировать его код в структуры данных и таблицы ядра, для чего ядро придется строить заново из исходного кода. Исходные коды тем более необходимы для прикладывания заплатки (см. п. 7.4.3).

Пакет исходных текстов ядра может быть включен в ваш дистрибутив. Если это не так, скачайте архив с

ftp://ftp.kernel.org/pub/linux/kernel
(его размер 30-40 Мб в зависимости от версии) и распакуйте его в тот каталог, в котором будете производить сборку (обычно
/usr/src/linux-<версия>
).

20.5.2. Конфигурирование ядра

Когда вы строите из исходников прикладную программу, первым шагом сборки обычно бывает выполнение сценария configure. Ядро тоже нужно конфигурировать. Его настройки находятся в текстовом файле

.config
в каталоге исходных кодов. Этот файл можно редактировать вручную, но это крайне неудобно, поэтому предусмотрены диалоговые конфигураторы (п. 7.2.3, рис. 7.2).

Если вы работаете в среде GNOME, выполните команду

make gconfig
, и вы увидите диалоговое окно, в котором можно выбрать нужные функции и драйверы устройств (Y) и отключить ненужные (N), а также указать, как следует включать в ядро выбранные устройства: статически или в виде модулей (M).

Осталось перечислить модули, доступные для конфигурирования, и дать рекомендации по их включению и отключению. Я расскажу об этом на примере современного ядра 2.6. О настройке ядра версии 2.4 рассказано в третьем издании моей книги «Самоучитель Linux», вышедшем в 2004 г. в издательстве «Наука и Техника», а если вы все еще используете ядро версии 2.2, то вам нужно первое издание этой книги.

20.5.2.1. Code maturity level options

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

20.5.2.2. General setup

Support for paging of anonymous memory

Грозно звучит, не так ли? Я сначала даже не понял, что это. Оказывается, это просто поддержка свопа — своп-устройств и своп-файлов. Настоятельно рекомендуется не отключать эту опцию — сколько бы ни было оперативной памяти, а своп все равно пригодится.

System V IPC

Поддержка средств межпроцессного взаимодействия (Interprocess Communication) System V: очередей сообщений, семафоров, разделяемой памяти и т.д. Отключать не нужно, иначе процессы не смогут «общаться» друг с другом.

BSD Process Accounting

Учет процессов. С помощью специального системного вызова пользовательская программа может попросить ядро записать в специальный файл системную информацию: время создания процесса, идентификатор владельца, командную строку, использование ресурсов, например, памяти и терминалов и т.д. Чтобы все работало как нужно, не отключайте эту опцию.

Sysctl support

Включает поддержку программы Sysctl, позволяющей изменять параметры ядра без перекомпилирования во время загрузки. Поддержка Sysctl увеличивает размер ядра на 8 Кб. Если ядро, которое вы компилируете, не предназначено для дисков загрузки/восстановления, включите эту опцию.

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

♦ 17 — 128 Кб (по умолчанию)

♦ 16 — 64 Кб

♦ 15 — 32 Кб (рекомендуется для SMP)

♦ 14 — 16 Кб

♦ 13 — 8 Кб

♦ 12 — 4 Кб.

Kernel .config support

Поддержка файлов

.config
, содержащих конфигурацию ядра.

20.5.2.3. Loadable module support

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

Enable loadable module support

Включить поддержку загружаемых модулей. Рекомендуется не отключать эту опцию, если вы собираете обычное ядро для настольной системы или сервера. Если же вы собираете компактное ядро, можно эту опцию выключить, а все необходимые модули включить в состав ядра.

Module unloading

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

Forced module unloading

Принудительное удаление. Модуль будет удален из ядра, даже если какой-то процесс его использует. Такое удаление может быть опасным — ведь в результате удаления модуля устройства, которое в данный момент используется процессом, очень велика вероятность потери данных, поэтому лучше эту опцию не включать. Наоборот, когда вы занимаетесь программированием модулей, то есть созданием своих модулей, эта опция очень полезна, поскольку помогает сразу же выгрузить некорректно работающий модуль.

Module versioning support

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

Automatic kernel module loading

Обычно некоторые части ядра выполнены в виде модулей ядра. Когда ядру нужен тот или иной модуль, перед использованием модуля оно должно загрузить его (команда insmod). Если данная опция включена, ядро сможет автоматически загружать необходимые модули. Поэтому рекомендуется включить эту опцию.

20.5.2.4. Processor type and features

Здесь можно указать тип процессора и его функции, например, поддержка памяти более 1 Гб, MTRR, эмулирование математического сопроцессора.

Subarchitecture type

Тип архитектуры процессора:

♦ PC-compatible — PC-совместимый процессор, то есть процессор, использующий систему команд x86;

♦ Voyager (NCR) — SMP-архитектура, разработанная компанией NCP Corp;

♦ NUMAQ — позволяет запускать Linux на архитектуре NUMA (IBM/Sequent);

♦ SGI 320/540 — графические станции SGI.

Processor family

Эта функция используется для оптимизации работы процессора. Очень важно правильно указать тип процессора: после того, как я это сделал, производительность системы повысилась примерно в полтора раза, что стало заметно при загрузке системы. Если вы укажете тип процессора, например 486, 586, Pentium, PPro, ядро не обязательно будет запускаться на более ранней архитектуре. Так, если вы укажете Pentium, ядро будет работать на PPro (хотя и медленнее), но нет никакой гарантии, что оно запустится на 486. В табл. 20.1 приведены типы процессоров, которые рекомендуются для получения наибольшей производительности.


Типы процессоров Таблица 20.1

ТипПроцессоры
386Процессоры производства AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix 486DLC/DLC2, UMC 486SX-S
486/Сх436AMD/Cyrix/Intel/IBM DX4, 486DX/DX2/SL/SX/SX2 AMD/Cyrix 5x86 NexGen Nx586, UMC U5D или U5S
586/K5/5x86/6x86/6x86MXОбычные (самые первые) процессоры Pentium, AMD K5. He используются инструкции RDTSC (Read Time Stamp Counter)
Pentium-ClassicКлассические процессоры Pentium — без поддержки MMX. Используются инструкции RDTSC
Pentium-MMXПроцессоры Pentium с поддержкой MMX
Pentium ProПроцессоры Pentium Pro/Celeron/Pentium II
Pentium II/Celeron (pre-Coopermine)Процессоры Pentium II и Celeron (версия, которая была до Coopermine)
Pentium III/Celeron (Coopermine)/ Pentium III XeonПроцессоры Pentium III и Celeron (Coopermine)
Pentium MМобильная версия процессора Pentium с пониженным энергопотреблением для ноутбуков
Pentium 4–Celeron (P4 based) / Pentium 4 M / XeonПроцессоры Pentium 4, включая версию Pentium 4 M
K6/K6 II/K6 IIIПроцессоры AMD K6, K6-II, K6-III
Athlon/Duron/K7Процессоры AMD Athlon/Duron
Opteron/Athlon 64/ Hammer/K864-разрядные процессоры фирмы AMD
Elan/CrusoeПроцессоры Elan/Crusoe
WihChip-C6Процессоры WinChip C6
WinChip 2A/Winchip-3Процессоры WinChip 2A/Winchip-3
Cyrix III/C3Процессоры IBM Cyrix III/C3

В моем случае ядро было оптимизировано под 586/K5. После того, как я установил Athlon/Duron/K7, Linux заработала быстрее (для справки: тогда у меня был AMD Duron 1.6 ГГц). Выбирайте именно ваш процессор — ваш классический Pentium не заработает быстрее и у него не появится поддержки MMX, если вы выберете Pentium MMX. Если вы попытаетесь таким образом ввести систему в заблуждение, она вообще может зависнуть, поскольку будет пытаться использовать MMX-инструкции, которые не поддерживаются процессором.

Generic x86 support

Базовая поддержка команд x86.

НРЕТ Timer Support

НРЕТ — это следующее поколение таймеров, пришедшее на смену классическому таймеру 8254. Просто включите эту опцию. Даже если ваша BIOS не поддерживает НРЕТ, будет активизирована поддержка классического таймера 8254.

Symmetric multi-processing support

Скорее всего, у вас установлен один процессор. Тогда эту опцию вам нужно отключить — зачем включать лишний код в ядро? Если же вы счастливый обладатель мультипроцессорной машины, включите данную опцию. При включении SMP укажите правильный тип процессора. Вы должны указать хотя бы 586. Ядро не запустится, если у вас выбран тип процессора 486. Также ядро не будет работать, если ваш компьютер оснащен процессором Pentium, а вы установили тип процессора PPro. Если у вас мультипроцессорная машина, вы должны также включить опцию Enhanced Real Time Clock Support. Опция Advanced Power Managament у вас будет отключена при использовании SMP.

Preemptible kernel

Данную опцию следует включить, если вам нужно ядро для RealTime-системы.

Local APIC support for uniprocessors

Поддержка внутреннего контроллера прерываний процессора (Advanced Programmable Interrupt Controller). Если у вас однопроцессорная система с процессором, оснащенным APIC, включите эту опцию. Если ваш процессор не поддерживает APIC, включение данной опции существенно снизит производительность системы.

У вас многопроцессорная система? Тогда APIC будет использоваться по умолчанию вне зависимости от значения этой опции.

Machine Check Exception

Позволяет процессору сообщать ядру о внутренних проблемах, например, о сбое.

Toshiba, DELL laptop support

Поддержка ноутбуков фирм Toshiba и DELL.

/dev/cpu/microcode

Включив эту опцию, вы сможете обновлять микрокод процессоров PPro/PII/PIII/P4/Xeon с помощью устройства /dev/cpu. Для работы этой опции нужно включить файловую систему /dev в разделе File systems. Информацию о микрокоде вы можете получить по адресу:

http://www.urbanmyth.org/microcode
. Если вы откомпилировали эту опцию как модуль, для его загрузки нужно прописать в вашем файле
/etc/modprobe.conf
строку:

alias char-major-10-184 microcode

/dev/cpu/*/msr

Поддержка регистров MSR. Может понадобиться в некоторых случаях для SMP-систем. Вы можете ее со спокойной совестью выключить или хотя бы откомпилировать как модуль.

/dev/cpu/*/cpuid

Поддержка информации о процессоре. Рекомендуется включить эту опцию. Загляните в файл /dev/cpu/0/cpuid — вы узнаете много интересного о своем первом (0) процессоре.

High Memory Support

Поддержка памяти более 1Гб.

Math emulation

Включите эту опцию, если вы используете один из следующих процессоров: 386SX/DX/SL/SLC без 80387, 486SL/SX/SX2.

MTRR

В семействе процессоров Intel P6 (Pentium Pro, Pentium II и выше) используются специальные регистры — Memory Type Range Registers (MTRR). Они задействуются для управления доступом процессора к различным диапазонам памяти. Включение этой опции может существенно повысить производительность системы, особенно если вы используете видеокарту PCI или AGP. Данную возможность поддерживают процессоры и посторонних производителей: Cyrix 6x86, 6x86MX, MII, AMD K6-2 (stepping 8 и выше), K6-3, Centaur C6. Некоторые BIOS устанавливают MTRR для первого процессора, но отключают для второго. Активизация данной опции решает также и эту проблему. Если вы не уверены, поддерживает ли ваш процессор MTRR, все равно включите эту опцию. Поддержка MTRR увеличит объем ядра всего лишь на 3 Кб.

20.5.2.5. Power Management Options

В этом разделе вы найдете все опции, касающиеся управления питанием, В принципе, с опциями Power Management разобраться несложно и самому, в крайнем случае можно все оставить по умолчанию — опции вполне приемлемы. Но есть одна очень интересная экспериментальная (!) опция — Software Suspend. Если она включена, вы можете приостановить машину, а при следующей загрузке сразу же восстановить систему до того состояния, в котором она находилась до приостановки. Работает это так: вы вводите команду swsusp или shutdown -z <время>, система записывает образ содержимого памяти на своп-раздел (или в своп-файл). Затем, при загрузке, вы вводите параметр ядра

resume=/dev/своп-раздел
, и система восстанавливается до исходного состояния. Если вы не ввели данный параметр, то будет невозможно задействовать своп-раздел, который использовался для приостановки системы (создания образа памяти). Опция Suspend to disk позволяет записывать образ памяти на диск, а не только на своп-раздел.

В этом же разделе можно включить опцию Advanced Power Management. Если вам нужно отключить функцию APM во время загрузки, введите в качестве параметра ядра apm=off.

При возникновении проблем (на старых компьютерах) попробуйте следующее:

1. Убедитесь, что раздел подкачки включен, а размер его достаточен.

2. Передайте ядру инструкцию no-hlt.

3. Попробуйте отключить поддержку сопроцессора (инструкция no387).

4. Передайте ядру инструкцию floppy-nodma.

5. Убедитесь, что процессор не «разогнан».

6. Установите новый вентилятор для процессора.

Что же касается APM, следует обратить внимание на следующие опции (таблица 20.2):


Опции APM Таблица 20.2

ОпцияОписание
Enable PM at boot timeВключает APM во время загрузки системы. Если эта опция отключена, BIOS не будет управлять питанием устройств, входить а режимы Standby и Suspend, а также не будет производить никаких действий в ответ на вызовы процессоре CPU Idle. Если ваш компьютер зависает во время загрузки, выключите эту опцию
Make CPU Idle calls when idleВо время цикла простоя ядра разрешает вызовы к APM. Включение данной опции может привести к зависанию компьютера во время загрузки! Если компьютер использует несколько процессоров, эта опция игнорируется. Заметьте, речь идет о том, сколько процессоров именно использует компьютер, а не сколько их в нем установлено. Если у вас два процессора, а вы используете только один и поддержка SMP у вас отключена, данная опция игнорироваться не будет!
Enable console blanking using APMОчищает текстовую консоль (не графическую!) при использовании APM. Некоторые ноутбуки могут использовать эту опцию для того, чтобы отключить подсветку LCD-экрана, когда активизирован хранитель экрана на одной из виртуальных консолей Linux.
RTC stores time in GMTЕсли ваш аппаратный таймер сохраняет время в формате GMT, включите эту опцию, в противном случав отключите ее. Если опция выключена, сохраняется локальное время
Allow interrupts during APM BIOS callsОбычно прерывания внешних устройств запрещены во время выполнений процедур APM. BIOS некоторых ноутбуков разрешает прерывания внешних устройств, например, IBM ThinkPad. По умолчанию данная опция выключена. Если вы не уверены, не включайте ее

20.5.2.6. Bus Options

В этом разделе описываются опции, касающиеся поддержки различных шин PCI, ISA, MCA. Конфигуратор ядра 2.4 держал их в разделе General Setup, а сейчас они вынесены в собственный раздел. Отключайте все, кроме шины PCI — не думаю, что у вас есть ISA или MCA-устройства.

Примечание

MCA — шина передачи данных, разработанная IBM, которая использовалась в системах PS1/PS2. Она давно снята с производства, современные устройства с ней не работают.

PCI access mode

Данная опция определяет режим доступа к PCI-устройствам. Если значение этой опции равно BIOS, значит, Linux будет использовать BIOS для определения PCI-устройств и их конфигураций. Однако на некоторых старых материнских платах BIOS не может корректно определить конфигурацию PCI-устройств. В этом случае нужно выбрать значение Direct, и Linux будет работать с PCI-устройствами напрямую, без BIOS. Если вы выберете Any, то Linux сначала попытается работать напрямую (так быстрее), а потом, если напрямую не получится, уже использовать BIOS.

20.5.2.7. Executable file formats

В этом разделе вы сможете включить поддержку различных форматов исполняемых файлов. Обычно это нужно, если вы хотите запускать в эмуляторах программы других операционных систем, например, DOS- или Windows-программы.

20.5.2.8. Device drivers

В этом разделе находятся опции, касающиеся драйверов устройств. Тут вы можете определить, какие устройства у вас установлены и какие вы хотите использовать в дальнейшем. По сравнению с программой настройки ядра 2.4 многие отдельные разделы «переехали» в этот раздел, например, Parallel port support, MTD, PnP support и т.п.

Memory Technology Devices (MTD)

В этом подразделе вы можете включить поддержку MTD-устройств. Самым ярким примером такого устройства может послужить flash-диск.

Parallel port support

Поддержка параллельного порта.

PnP support

Поддержка устройств Plug and Play.

Block devices

В этом подразделе вы можете настроить блочные устройства, то есть такие устройства, обмен данными с которыми выполняется поблочно (передаются целые блоки информации), а не посимвольно (за одну операцию ввода/вывода передается один байт). Ярким примером блочных устройств выступают дисковые накопители — дисковод для гибких дисков, жесткие диски и т.п.

Normal floppy disk support

Поддержка обычного дисковода для гибких дисков. Обычно поддержка данного устройства требуется, но если вы собираете ядро для сервера или ноутбука, то «флоппик» ему не нужен, поэтому можете эту опцию выключить.

XT hard disk support

Поддержка старых жестких дисков, которые устанавливались на компьютеры типа IBM XT. Отключите эту опцию — она вам не нужна, модуль тоже вам не нужен. Даже если вы где-то и найдете такой диск, вряд ли вы станете его подключать к современному компьютеру.

Parallel port IDE device support

Поддержка IDE-устройств, которые подключаются к компьютеру по параллельному порту. Очень часто к ноутбукам подключаются внешние IDE-устройства. Было время, когда шины USB не существовало, тогда был разработан интерфейс для подключения IDE-устройств по параллельному порту (по последовательному порту обмен информацией занимает много времени).

Compaq SMART2 support

Поддержка контроллеров SMART2 фирмы Compaq. Вряд ли этот параметр вам понадобится.

Compaq Smart Array 5xxx support

To же самое, что и предыдущая опция, но здесь включается поддержка контроллеров 5xxx.

Mylex DAC960/DAC1100 PCI RAID Controller support

Поддержка RAID-контроллера фирмы Mylex.

Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL)

Поддержка специальных карт памяти. Честно говоря, я эти карты и в глаза не видел, и в руках не держал. Если кому-то интересна информация о них, посетите сайт: http://www.umem.com/.

Loopback device support

Вот эту опцию я отключать не советую — многие задачи требуют наличия устройства обратной петли. Поэтому, если хотите сделать ядро компактнее, включите эту опцию хотя бы в виде модуля. Модуль будет называться loop.

Network block device support

Поддержка сетевых блочных устройств. Просто включите эту опцию в виде модуля. Модуль называется nbd.

RAM disk support

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

Initial RAM disk (Initrd) support

Инициализирующий RAM-диск — это RAM-диск, который загружается загрузчиком системы (LILO, GRUB, loadlin) и монтируется как корневая файловая система перед нормальной загрузкой. Он используется для загрузки модулей перед монтированием нормальной корневой системы. Включите эту опцию, Если же вы создаете загрузочный диск, то ее отключение недопустимо вообще!

Support for Large Block Devices

Поддержка больших блочных устройств — с размером более 2 Тб. Отключайте эту опцию — жестких дисков на 2 Тб в ближайшее время в продаже не предвидится.

ATA/ATAPI/MFM/RLL support

В этом подразделе вы можете включить/выключить поддержку ATA-устройств. Тут уж смотрите сами, какие устройства у вас есть и какие вы планируете использовать. Ненужные следует сразу отключать — нечего память забивать. Что нужно? Обыкновенный привод CD-ROM есть у всех. Даже если у вас в данный момент его нет, вы рано или поздно его подключите к своему компьютеру. Не будете же вы из-за этого перекомпилировать ядро? Поэтому опция Include IDE/ATAPI CDROM support (BLK_DEV_IDECD) относится к категории нужных. А вот поддержка Silicon Image chipset совершенно не нужна, хоть и встроена в ядро по умолчанию. Поддержку всех ATA-устройств следует отключить, если у вас сервер и все устройства — SCSI (только не забудьте SCSI включить!)

SCSI device support

Поддержка SCSI-устройств. Все комментарии аналогичны предыдущему пункту — все ненужное отключаем, оставляем самое необходимое. Вот почему мне нравится Linux — можно явно указать, что мне нужно, а что — нет. Ни в одной Windows такое сделать нельзя. Можно, конечно, удалить всю базу с драйверами, но я же сказал «явно».

Old CD-ROM drivers (not SCSI, not IDE)

В этом разделе вы можете включить поддержку старых (я бы сказал, древних) приводов CD-ROM, но, скорее всего, это вам не нужно, поэтому смело отключайте целый подраздел — сэкономим место на диске.

Multi-device support (RAID and LVM)

Поддержка RAID-массивов и LVM-томов (Logical Volume Manager). Если планируете использовать RAID, включите некоторые опции этого раздела, Вы можете указать, какие уровни RAID вам нужны, а какие нет.

IEEE 1394 (FireWire) support

Поддержка последовательной высокоскоростной шины IEEE 1394. Если у вас есть IEEE-адаптер, включите эту опцию. Внимание: поддержка IEEE экспериментальна (для ядра 2.6)!

QoS and/or fair queueing

В этом подразделе можно включить поддержку QoS (Quality of Service).

IrDA (infrared) support

Поддержка IrDA-устройств.

Bluetooth support

Поддержка Bluetooth. Обычно требует включения на современных ноутбуках.

ISDN subsystem

Поддержка технологии ISDN (Integrated Services Digital Networks, во Франции — RNIS). Технология ISDN постепенно уходит в прошлое — вместо нее используется ADSL. Если у вас есть возможность перейти на ADSL, сделайте это.

Telephony Support

Если у вас есть специальная карта, позволяющая подключить обыкновенный телефон для использования голосовых IP-приложений, включите поддержку телефонии. Вам не нужно включать поддержку телефонии для использования обычного модема.

Input device support

Поддержка различных устройств ввода — джойстиков, мышей, сенсорных панелей, клавиатур.

Character devices

Поддержка символьных устройств, например, стримеров.

Multimedia devices

Поддержка TV- и радиотюнеров.

Graphics support

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

Sound

Поддержка систем ALSA (Advanced Linux Sound Architecture) и OSS (Open Sound System). Тут же драйверы звуковых плат.

USB support

Поддержка USB.

Networking support

Это довольно большой подраздел раздела Device Drivers, в котором можно включить поддержку как самой сети, так и отдельных ее компонентов. Поддержка сети нужна обязательно, даже если у вас нет сетевой платы или других сетевых устройств. Функции печати, а также графическая подсистема X Window требуют поддержки сети, а это значит, что, если сеть у вас отключена, вы не сможете ни документ распечатать, ни работать в графическом интерфейсе.

Сетевых опций довольно много, поэтому для их установки воспользуемся таблицей 20.3.


Опции сети Таблица 20.3

ОпцияНазначение
Netlink device emulationОпция обратной совместимости. Скоро будет удалена, но пока она нужна.
Unix domain socketsПоддержка UNIX-сокетов. Не отключайте эту опцию
IPMI socketsПоддержка IPMI-сокетов. Обычно не нужна
PF_KEY socketsТребуется для IPsec, поэтому лучше не отключать ее или включить в виде модуля
TCP/IP networkingПоддержка TCP/IP обязательно должна быть включена!!!
IP: multicastingПозволяет адресовать сразу несколько компьютеров. Данная опция полезна. если вы используете MBONE или другую магистраль для широковещательной передачи аудио- и видеоинформации
IP: advanced routerВключите, если предполагаете использовать данный компьютер в виде маршрутизатора, а заодно нужно включить и все ее компоненты, например, IP: policy routing — довольно интересная функция маршрутизатора. В двух слогах ее не опишешь, а прочитать о ней можно по адресу: http://www.compendium.com.ar/policy-routing.txt
IP: kernel level auto configurationВключает автоматическую конфигурацию IP-адреса сетевых устройств и таблицы маршрутизации во время загрузки ядра на основании информации, переданной ядру в командной строке или по протоколам BOOTP или HARP. Данную опцию имеет смысл включать только на бездисковых машинах, поскольку на обычных системам конфигурация сети задается в загрузочных сценариях
TP: tunnelingДанная опция понадобится вам, если вы будете настраивать виртуальную частную сеть — VPN (Virtual Private Network)
IP: GRE tunnels over IPДанная опция полезна при использовании маршрутизаторов Cisco. Для ее работы необходимо включить предыдущую опцию
IP: multicast routingДанная опция позволяет настроить работу маршрутизатора так, чтобы он отправлял IP-пакеты по нескольким адресам. Очень полезно для широковещания аудио-видео информации по Интернету
IP: ARP daemon support (EXPERIMENTAL)Поддержка ARP-демона. Можно включить на маршрутизаторе/шлюзе небольшой сети
IP: TCP syncookie support (disabled per default)Вот эту опцию я бы включил из соображений безопасности, она поможет защитить вашу систему от так называемых SYN-наводнений, точнее, сообщит вам адрес атакующего хоста
IP: AH transformationПоддержка АН-преобразования для IPSec. Если не уверены в том, что вы делаете, не отключайте эту опцию!
IP: ESP transformationПоддержка ESP-преобразования для IPSec. Если не уверены в том, что вы делаете, не отключайте эту опцию!
IP: IPComp transformationПоддержка IPComp-преобразования (сжатие данных, описано в RFC3173) для IPSec. Если не уверены в том, что вы делаете, не отключайте эту опцию!
IP virtual server support (EXPERIMENTAL)Включение данной опции позволит вам построить виртуальный сервер, который будет использовать ресурсы нескольких физических серверов. Попросту говоря, данная опция позволяет собрать кластер. Раньше для создания кластеров использовались программные продукты посторонних разработчиков, а сейчас поддержка кластеров встроена в ядро. Если заинтересовались, посетите сайт: http://www.linuxvirtualserver.org/
The IPv6 protocol (EXPERIMENTAL)Поддержка протокола IPv6. Пока он практически не используется, поэтому можно эту опцию смело отключить
DECnet SupportДанную опцию на просторах бывшего СССР вряд ли кто-то будет включать, точнее, вряд ли она кому-то понадобится
802.1d Ethernet BridgingЕсли вы включите эту опцию, ваш компьютер превратится в Ethernet-мост, который будет соединять различные сегменты вашей локальной сети
Network packet filtering (replaces ipchains)Поддержка нового поколения бастиона Netfilter, пришедшего на замену IPChains. Если вы настраиваете маршрутизатор, включите эту опцию. Для обыкновенных систем ее нужно выключить
IPsec user configuration interfaceПоддержка IPSec. Если не уверены, просто включите эту опцию
Asynchronous Transfer Mode (ATM)Поддержка ATM
The IPX protocol (IPX)Поддержка протокола IPX (компаний Novell)
Appletalk protocol supportПоддержка протокола компании Apple. Если в вашей сети есть хотя бы один Macintosh, включите эту опцию
CCITT X.25 Packet Layer (EXPERIMENTAL) (X25), LAPB Data Link Driver (EXPERIMENTAL) (LAPB)Данные опции нужно включать, только если вам это действительно необходимо. Если вы не знаете, что они собой представляют, лучше их не трогать!
WAN routerДанная опция превращает ваш компьютер в маршрутизатор глобальной сети. Обычные маршрутизаторы не требуют включения этой опции. В случае включения данной опции в виде модуля модуль будет называться wanrouter
Fast switchingПеред включением этой опции настоятельно рекомендую прочитать документацию. Данная опция выбирает самый быстрый сетевой интерфейс для передачи данных. Внимание! Эта опция несовместима с опцией Network packet filtering
Forwarding between high speed interfacesНе включайте эту опцию!

20.5.2.9. Filesystems

В разделе Filesystems вы можете включить поддержку следующих файловых систем:

♦ Second extended fs (ext2), до недавнего времени бывшей основной файловой системой Linux;

♦ Ext3 journaling file system — журналируемой версии ext2, используемой многими дистрибутивами в качестве основной файловой системы;

♦ ReiserFS — файловой системы Reiser;

♦ JFS filesystem — файловой системы JFS;

♦ XFS — файловой системы XFS;

♦ Minix FS — файловой системы Minix;

♦ CD-ROM/DVD Filesystems ISO 9660 — файловой системы, используемой для записи информации на CD-ROM.

Что включить, а что выключить? Первые две файловые системы, а также файловую систему ISO 9660 включите обязательно. Думаю, не нужно объяснять, почему. Файловую систему Minix можно сразу отключить — она давно устарела и не используется. Файловые системы Reiser, JFS, XFS относятся к разряду новых, но редко использующихся. В принципе, их нужно включить — вдруг кто-то принесет винчестер, на котором разделы будут содержать одну из этих файловых систем? Или просто вы захотите поэкспериментировать и отформатировать раздел в одной из этих систем.

Не забудьте включить средство автоматического монтирования сменных носителей — Kernel automounter support особенно для рабочей станции! А вот поддержка квот (Quota support) окажется полезной, если вы настраиваете сервер.

В подразделе DOS/FAT/NT Filesystems вы можете включить поддержку следующих систем:

♦ Файловая система MS DOS. Включить ее нужно обязательно — в странах бывшего СССР до сих пор встречаются дискеты, записанные в этой файловой системе.

♦ VFAT (Windows-95): это основная файловая система операционных систем Windows 95 и 98.

♦ NTFS — файловая система ОС Windows NT, 2000, XP. Здесь же можно включить поддержку записи на раздел NTFS, которая по умолчанию отключена.

В разделе Pseudo filesystems вы можете включить так называемые псевдосистемы — файловые системы

/proc
и
/dev
.

В разделе Miscellaneous filesystems находятся опции включения поддержки других, редко используемых файловых систем, например, HPFS (High Performance File System), которая используется по умолчанию ОС IBM OS/2.

Включить поддержку файловых систем NFS и SMB (используется для монтирования удаленных Windows-разделов, читайте «общих дисков и папок») можно в разделе Network File Systems.

Раздел Native Language Support позволяет включить поддержку различных кодировок, в которых могут быть представлены имена файлов. Например, отключив кодировку cp-1251, при просмотре содержимого Windows-раздела вы увидите иероглифы вместо русских букв.

20.5.2.10. Kernel hacking

В этом разделе для вас найдутся две полезные опции, даже если вы не занимаетесь разработкой модулей ядра Linux. Опция Prefer small over fast code позволяет сделать ядро более маленьким, но более медленным. Маленький, но медленный код может пригодиться для создания загрузочной дискеты — там важен каждый байт. Вторую опцию Kernel debugging также можно отключить, если вы создаете системную дискету.

20.5.2.11 .Cryptographic options

Различные опции, касающиеся криптографии.

В разделах Library routines и Unofficial 3rd party kernel additions я не нашел для себя ничего интересного.

20.5.3.Сборка ядра

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

Для сборки вам понадобится программное обеспечение, необходимые версии которого перечислены в таблице 20.4.


Необходимое программное обеспечение Таблица 20.4

Программа/библиотекаМинимально допустимая версияГде взять
Gnu С Compiler2.95.3http://gcc.gnu.org
Gnu Make3.78ftp://ftp.gnu.org/gnu/make/
binutils2.12ftp://ftp.kernel.оrg/pub/linux/devel/binutils/
util-linux2.10oftp://ftp.kernel.org/pub/linux/utils/util-linux/
module-init-tools0.9.9http://www.kernel.org/pub/linux/kernel/peoplе/rusty/modules/
procps2.0.9http://procps.sourceforge.net/
e2fsprogs (*)1.29http://e2fsprogs.sourceforge.net/
jfsutils (*)1.0.14http://www-124.ibm.com/jfs/
reiserfsprogs (*)2.1.0http://www.namesys.com/
nfs-utils1.0,5http://nfs.sourceforge.net/
pcmcia-cs3.1.21http://pcmcia-cs.sourceforge.net/
quota-tools3.09http://sourceforge.net/projects/linuxquota/
ppp2.4,0ftp://ftp.samba.org/pub/ppp/
isdn4k-utils3.1pre1http://www.isdn4linux.de/swpat.html
oprofile0.5.3http://oprofile.sourceforge.net/

(*) Данное программное обеспечение зависит от используемой файловой системы. Если вы используете только ext2, обновите только e2fsprogs, если JFS — то jfsutils. Если же вы используете все перечисленные файловые системы ext2, JFS, RelserFS, вам нужно обновить все программы, отмеченные звездочкой.


Ваше старое ядро пока работает и, чтобы не сделать ничего непоправимого, нужно собирать новое ядро под новым именем. Найдите в Makefile (в самом начале файла) строчки:

VERSION=2

PATCHLEVEL=6

SUBLEVEL=<третья_цифра_версии_вашего_ядра>

EXTRAVERSION=

EXTRAVERSION — это суффикс, которым будет отличаться имя нового ядра. Дайте ему значение вроде «new» или «test». Это приведет к тому, что собранное вами ядро будет называться linux-2.6.x-new. Старое ядро никуда не денется, и при загрузке можно будет выбрать нужный вариант ядра.

Команда

make dep
, которая вводилась после конфигурирования ядер 2.4 и ниже, при сборке ядра 2.6 не используется. Вместо нее выполните следующую последовательность команд:

$ make bzImage

$ make modules

Эти пара команд соберет ядро и те модули, которые вы включили в него на этапе конфигурирования. Процесс сборки займет не меньше 20 минут, а то и значительно больше — в зависимости от быстродействия вашей системы и количества выбранных модулей.

Можно выполнять эти команды от имени непривилегированного пользователя. Даже нужно, поскольку идеологически правильнее работать под рутом только тогда, когда иначе нельзя. Без привилегий суперпользователя нельзя обойтись только на этапе установки ядра и модулей:

# make modules_install

# make install

Результатом успешной сборки и установки станут следующие файлы и каталоги:

/boot/vmlinuz-2.6.x-new

/boot/System.map-2.6.x-new

/boot/initrd-2.6.x-new.img

/lib/modules/2.6.x-new

Осталось добавить в конфигурационный файл вашего загрузчика (п.9.1.1) вариант загрузки с новым ядром. Если вы используете GRUB, впишите в

/boot/grub/grub.conf
следующие строки:

title Linux New Kernel

kernel /vmlinuz-2.6.x-new root=/dev/hda5 ro

initrd /initrd-2.6.x-new.img

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

В случае, если ваш загрузчик — LILO, впишите в

/etc/lilo.conf
строки:

image=/boot/vmlinuz-2.6.x-new

label=" Linux New Kernel"

root=/dev/hda5

initrd=/boot/initrd-2.6.x-new.img

read-only

И занесите изменения в загрузочную запись:

# lilo

Теперь перезагрузите систему и попробуйте загрузиться с новым ядром. При появлении каких-либо ошибок вы всегда сможете загрузить старую версию.

Глава 21