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/Сх436 AMD/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/K8 64-разрядные процессоры фирмы 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 supportTo же самое, что и предыдущая опция, но здесь включается поддержка контроллеров 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 С Compiler 2.95.3 http://gcc.gnu.org Gnu Make 3.78 ftp://ftp.gnu.org/gnu/make/ binutils 2.12 ftp://ftp.kernel.оrg/pub/linux/devel/binutils/ util-linux 2.10o ftp://ftp.kernel.org/pub/linux/utils/util-linux/ module-init-tools 0.9.9 http://www.kernel.org/pub/linux/kernel/peoplе/rusty/modules/ procps 2.0.9 http://procps.sourceforge.net/ e2fsprogs (*) 1.29 http://e2fsprogs.sourceforge.net/ jfsutils (*) 1.0.14 http://www-124.ibm.com/jfs/ reiserfsprogs (*) 2.1.0 http://www.namesys.com/ nfs-utils 1.0,5 http://nfs.sourceforge.net/ pcmcia-cs 3.1.21 http://pcmcia-cs.sourceforge.net/ quota-tools 3.09 http://sourceforge.net/projects/linuxquota/ ppp 2.4,0 ftp://ftp.samba.org/pub/ppp/ isdn4k-utils 3.1pre1 http://www.isdn4linux.de/swpat.html oprofile 0.5.3 http://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