Перед компиляцией ядра необходимо сконфигурировать его опции , которые лежат в файле config .
Его можно просмотреть с помощью обычного редактора , а можно также запустить команду
make menuconfig
Появится текстовой интерфейс с меню . Рассмотрим более подробно эту утилиту .
Можно например зайти в подменю Processor type and features
и отметить нужные опции с помощью пробела , которые отмечены квадратными скобками .
Если опция отмечена угловыми скобками , это относится к модулям .
При этом нужно помнить о некоторых вещах : например , файловая система должна быть встроена в ядро ,
а не быть модулем , иначе система не запустится . Или некоторые админы предпочитают встраивать
драйверы сетевых карт в ядро , хотя это совсем не критично , как например дисковая поддержка .
Второстепенные файловые системы можно вынести в модуль , чтобы они не загромождали память .
При выходе из автоконфига при записи изменений старый config будет сохранен как config.old .
Некоторые важные пункты меню автоконфига :
Support for paging of anonymous memory - поддержка свопа
System V IPC - межпроцессное взаимодействие
Sysctl support - enable изменение параметров ядра через /proc
Для ядра 2.6.0 имеется опция Kernel .config support , которая позволяет сохранять текущее
содержание файла config в образе ядра .
Опция Enable loadable module support должна быть включена всегда , также , как и
опция Automatic kernel module loading.
В ядро встроены оптимизации под конкретные процессоры . Процессор выбирается с помощью опции Processor family.
High memory support - поддержка более 2-х гигов памяти
Symmetric multi-processing support - для машин с более чем оним процессором
MTRR support - графика
Формат исполняемых файлов в линуксе - это в основном ELF , хотя можно и включить поддержку более древнего формата a.out .
Для поддержки драйверов должна быть включена опция Plug and Play support .
К устройствам типа block device относятся флопы и винты . Для них следующие драйвера :
Normal floppy disk support
Loopback device support
Network block device support
RAM disk support
Initial RAM disk (initrd) support
Parallel port IDE device support
К IDE-драйверам относятся :
Disk support
CD-ROM support
Floppy support
SCSI emulation
Поддержка SCSI необходима даже в том случае , если их нет . Она выполняется с помощью драйверов :
SCSI disk support
SCSI tape support
SCSI CD-ROM support
SCSI generic support
Поддержка сетевых драйверов также необходима всегда . Сюда входит
Ethernet (10 or 100Mbit)
PPP support
Обязательной является поддержка следующих сетевых протоколов :
TCP/IP networking
Unix domain sockets
Packet socket
Для поддержки фильтрации пакетов нужно установить опции
Connection tracking
IP tables support
Packet filtering
REJECT target support
Работа с модулями .
При запуске команды make modules_install установит модули в каталог /lib/modules/ver-sion,
где ver-sion - версия ядра . Название модуля имеет расширение .ko для версии 2.6.0 , для более ранних версий - .о .
Для того , чтобы посмотреть , какие модули загружены , наберите команду lsmod
Для загрузки модуля нужно использовать команду modprobe.
Для удаления модуля нужно использовать команду modprobe -r module.
Зависимости между модулями можно найти в /lib/modules/version/modules.dep.
Для того , чтобы ядро автоматически загружало модули без modprobe , нужно при компиляции ядра установить
опцию Kernel module loader. При запуске команда modprobe читает /etc/modprobe.conf.
Можно привязать модули командой install . Например , если SCSI-драйвер не вкомпилирован в ядро ,
можно выполнить следующее :
alias block-major-8 my_scsi_modules
install my_scsi_modules /sbin/modprobe sd_mod; /sbin/modprobe aic7xxx
При этом произойдет следующее :
ядро пытается получить доступ к /dev/sda , которое не замаппировано еще
после этого ядро выполняет modprobe block-major-8
modprobe ищет в /etc/modprobe.conf все,что относится к block-major-8 ,
и находит там алиас
алиас указывает на my_scsi_modules , и запускается 2-й экземпляр modprobe
2-й экземпляр запускает install my_scsi_modules
Последовательность шагов , которую нужно выполнить перед компиляцией ядра из командной строки (Fedora):
1. make mrproper
2. make oldconfig - сохранение конфигурации уже
установленного ядра
3. make config - для выставления каждой опции будет
предложен выбор
из 3-х вариантов : M , Y , N
M - минимально необходимая поддержка опции ядра (модульная поддержка)
Y - максимальная поддержка опции (встроенная в ядро)
N - опция ядра отключается
Следующая таблица показывает опции конфигурации ядра для Fedora core :
Option
|
Description
|
Code maturity level options
|
Determines whether Linux will prompt you for certain types
of development code or drivers.
|
Loadable module support
|
Support for loadable modules versus a monolithic kernel.
Most of the remaining kernel options use loadable modules by default. It is
best to leave this alone in most cases.
|
Processor type and features
|
SMP, Large memory, BIOS and CPU type settings.
|
General setup
|
Support for power management, networking, systems buses
such as PCI, PCMCIA, EISA, ISA
|
Memory technology devices
|
Linux subsystem for memory devices, especially Flash
devices
|
Parallel port support
|
Self explanatory
|
Plug and Play configuration
|
Support of the automatic new hardware detection method
called plug and play
|
Block devices
|
Support for a number of parallel port based and ATAPI type
devices. Support for your loopback interface and RAM disks can be found here
too.
|
Multi-device support (RAID, LVM)
|
Support for RAID, 0, 1 and 5 as well as LVM.
|
Cryptography support (CryptoAPI)
|
Support for various types of encryption
|
Networking options
|
TCP/IP, DECnet, Appletalk, IPX, ATM/LANE
|
Telephony support
|
Support for voice to data I/O cards
|
ATA/IDE/MFM/RLL support
|
Support for a variety of disk controller chipsets
|
SCSI support
|
Support for a variety of disk controller chipsets. Also
sets limits on the maximum number of supported SCSI disks and CDROMs.
|
Fusion MPT support
|
High speed SCSI chipset support.
|
I2O device support
|
Support for specialized Intelligent I/O cards
|
Network device support
|
Support for Ethernet, Fibre Channel, FDDI, SLIP, PPP,
ARCnet, Token Ring, ATM, PCMCIA networking, specialized WAN cards.
|
Amateur Radio support
|
Support for packet radio
|
IrDA subsystem support
|
Infrared wireless network support
|
ISDN subsystem
|
Support for ISDN
|
Old CD-ROM drivers (not SCSI, not IDE)
|
Support for non SCSI, non IDE, non ATAPI CDROMs
|
Input core support
|
Keyboard, mouse, joystick support in addition to the
default VGA resolution.
|
Character devices
|
Support for virtual terminals and various serial cards for
modems, joysticks and basic parallel port printing.
|
Multimedia devices
|
Streaming video and radio I/O card support
|
Crypto Hardware support
|
Web based SSL hardware accelerator card support
|
Console drivers
|
Support for various console video cards
|
Filesystems
|
Support for all the various filesystems and strangely, the
native languages supported by Linux.
|
Sound
|
Support for a variety of sound cards
|
USB support
|
Support for a variety of USB devices
|
Additional device driver support
|
Miscellaneous driver support
|
Bluetooth support
|
Support for a variety of Bluetooth devices
|
Kernel hacking
|
Support for detailed error messages for persons writing
device drivers
|
Если нужно образу ядра придать уникальное имя ,
в Makefile нужно найти строку , начинающуюся с
EXTRAVERSION = -6-new , и к текущему названию образа добавится префикс :
vmlinuz-2.6.5-6-new
4. make bzImage - компиляция сжатого образа
(файл с расширением .img). На 500-м целероне это занимает 20 минут
5. make modules - компиляция модулей ,
при этом результат компиляции складируется в каталоге исходников /usr/src/
6. make modules_install - финальная установка модулей
7. make install - копирует образ в /boot
|
Вовка | Полезное начинание, спасибо!
Но с самого начала бросилось в глаза:
IPC... *межпроцессорное* взаимодействие, хотя насколько я знаю IPC - InterProcess Communication - *межпроцессное* взаимодействие.
Также в опциях ядра - m - модульная поддержка, а y - встроенная в ядро невыгружаемая поддержка функции... 2006-03-02 19:58:21 | Яковлев Се� | Да , конечно :
System V IPC - линукс использует эту технологию для обмена сообщениями между процессами,
семафорами и общей памяти.
Спасибо
2006-03-03 18:33:45 | oleshii | Спасибо за overview. Есть нюанс:
>> MTRR support - графика
MTRR lingo sings a M(emory) T(ype) R(ange) R(egisters)
Иначе говоря, это специальный тип M(odel) S(pecified) R(egisters),
адреса которых на каждой модели чипа свои. В частности, управляют они
теневыми копиями системных регистров защиты, syscall - sysret адреса
хранятся в них.
MTRR управляют ТИПАМИ кэширования ФИЗИЧЕСКОЙ памяти по диапазонам.
Write Through, Write Back, Cached, Read Only, and etch. Затрудняюсь сказать,
имеют ли они НЕПОСРЕДСТВЕННОЕ отношение к графике :-)
2012-09-04 09:03:03 | |
|
|