Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
 iakovlev.org 
 Kernels
 Boot 
 Memory 
 File system
 0.01
 1.0 
 2.0 
 2.4 
 2.6 
 3.x 
 4.x 
 Интервью 
=> Kernel
 HOW-TO 1
 Ptrace
 Kernel-Rebuild-HOWTO
 Runlevel
 Linux daemons
 FAQ
NEWS
Последние статьи :
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
  SQL 30.07   
  JFS 10.06   
  B-trees 01.06   
 
TOP 20
 Trees...615 
 Go Web ...398 
 Python...199 
 Rubni-Corbet -> Глав...197 
 2.0-> Linux IP Networking...183 
 Steve Pate 3...174 
 Stein-MacEachern-> Час...167 
 Стивенс 9...155 
 Rubni-Corbet -> Глав...141 
 Stevens-> Глава 4...139 
 Daniel Bovet 2...138 
 Mike Perry...138 
 Stewens -> IPC 9...137 
 Advanced Bash Scripting G...136 
 Stewens -> IPC 7...135 
 Secure Programming for Li...134 
 Rubni-Corbet -> Глав...134 
 Rodriguez 6...134 
 Ethreal 4...133 
 Stevens-> Глава 23...129 
 
  01.12.2017 : 2356398 посещений 

iakovlev.org
Перед компиляцией ядра необходимо сконфигурировать его опции , которые лежат в файле 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