Компилируем ядро

Вот мы поставили линукс, прикрутили к нему поддержку русского языка ... давайте его немного пооптимизируем, чтобы он быстрее работал и меньше памяти занимал ...давайте перекомпилируем ядро ... это не так страшно, как кажется, да и рано или поздно Вам придеться это делать - ведь новые версии ядра появляются довольно часто ...Итак, если у вас свежепоставленный линукс и вы не забыли поставить полностью комплекты A,AP,D,К из дистрибутива или скачать linux-x.x.x.tar.gz c ftp.kernel.org (напомню, что речь идет о slackware, хотя другие дистрибутивы можно точно так же апгрейдить ...)
Копируем полученный файл (в случае апгрейда) в /usr/src и говорим gzip -d linux-x.x.x.tar.gz;tar xvf linux-x.x.x.tar .....говорим cd /usr/src/linux если не получилось - значит либо вы не поставили исходники, либо их не развернули. теперь проверим символьные ссылки на нужные для сборки каталоги ... быстренько делаем так

 cd /usr/include
 rm -rf asm linux scsi
 ln -s /usr/src/linux/include/asm-i386 asm
 ln -s /usr/src/linux/include/linux linux
 ln -s /usr/src/linux/include/scsi scsi
 cd /usr/src/linux
 make mrproper
Этими командами мы удалили и заново создали нужные ссылки, а также удалили старые объектные модули, которые могли остаться в системе ... теперь даем команду make menuconfig - если через некоторое время система обругалась - значит скорее всего вы не поставили библиотеки curses, которые необходимы для отрисовки красивых менюшек.
Немного про обозначения - если вы напротив пункта меню видите пустое место - значит соответствующий пункт не включен ... звездочку - включен и будет вкомпилирован в ядро .. буква М - будет модулем ...но некоторые пункты не могут быть модулями, их можно только в ядро вкомпилировать ... Пойдем по порядку.

Code maturity level options --->

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

Processor type and features --->

- Установка типа вашего процессора и некоторых особенностей.
Processor family - тип процессора
Math emulation - включать эмуляцию матсопроцессора.(надо для процессоров sx)
MTRR (Memory Type Range Register) support - поддержка спец.регистров на процессорах Pentium Pro и Pentium II.
Symmetric multi-processing support - поддержка многопроцессорных машин

Loadable module support --->

- поддержка загружаемых в качестве модулей драйверов.
Enable loadable module support - включить поддержку модулей.
Set version information on all symbols for modules - устанавливать в модуль информацию о том, для какой версии ядра он скомпилирован. Если вы установите этот пункт и перекомпилируете модули, а потом перейдете на другую версию ядра, модули откажутся загружаться.
Kernel module loader - поместить автозагрузчик модулей в ядро ? Если нет, то надо будет пускать kerneld.

General setup --->

- основные установки
Networking support - поддержка сети
PCI support - поддержка шины PCI. Если ее включите, то появится следующие три пункта
PCI access mode - режим (BIOS, Direct, Any) доступа до функций PCI.
PCI quirks - я не знаю, что это значит, но по умолчанию у меня это стоит.
Backward-compatible /proc/pci - Обратная совместимость с /proc/pci, по крайней мере это так переводится, но на самом деле это включает отображение информации о PCI устройствах в каталоге /proc/pci.
MCA support - поддержка старой шины MCA
SGI Visual Workstation support - У вас ядро компилируется на Silicon Graphics ?
System V IPC - поддержка System V IPC - у меня выключено
BSD Process Accounting - Поддержка суммирования информации о процесах в стиле BSD - у меня тоже выключена
Sysctl support - Поддержка системных вызовов.
Kernel support for a.out binaries - поддержка ядром старого формата исполнимый файлов.Хоть таких файлов и осталось мало, но все-таки они встречаются, поэтому лучше оставить ее включенной.

Kernel support for ELF binaries --->

- поддержка ядром нового формата исполнимых файлов. Эту опцию обязательно включите.
Kernel support for MISC binaries - поддержка других форматов исполняемых файлов. То есть вы сможете исполнять программы, скомпилированные для BSD,Solaric и так далее, естественно при наличии всех необходимый библиотек и программ.
Parallel port support - поддержка параллельного порта. Зачем эта опция здесь - я не знаю.
Advanced Power Management BIOS support - поддержка APM. То есть линукс научиться сам останавливать винты, засыпать, а при наличии ATX и выключать компьютер.

Plug and Play support --->

- Поддержка стандарта PNP.

Block devices --->

- поддержка флопиков, винтов и прочего.
Floppy, IDE, and other block devices - Здесь мы укажем ядру, что у нас на машине есть в наличии из средств хранения информации.
Normal floppy disk support - У вас флопики в наличии ?
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support - Расширенная поддержка новых и не очень контроллеров.
Use old disk-only driver on primary interface - Использовать старые драйвера ,которые поддерживают только винты на первичном IDE канале. Это опять же для старых IDE контроллеров, которые при попытке ядра пробежаться по всем подключенным к нему устройствам вешают машину (я толко один раз видел такую машину ;-)
Include IDE/ATAPI CDROM support - У нас CD-ROM подключен к IDE ?
Include IDE/ATAPI TAPE support - Накопители на магнитной ленте есть на IDE ?
Include IDE/ATAPI FLOPPY support - Флоппи (ZIP,JAZ, etc)на IDE есть ?
SCSI emulation support - Это надо, если у вас что-то из устройств висит на LPT порту - линукс будет эмулировать их, как SCSI устройства ...
Support removable IDE interfaces (PCMCIA) - Мы на ноутбуке или где ? PCMCIA поддерживать надо ?
CMD640 chipset bugfix/support - Если у Вас этот чипсет на материнской плате, то включите его в конфигурации .. а остальные выключите ...
RZ1000 chipset bugfix/support
Intel 82371 PIIX (Triton I/II) DMA support - то же самое для соответствующих чипсетов ...
Other IDE chipset support - Поддержка других чипсетов (ALI,DTC,Holtek,QDI,UMC) ...
Loopback device support - Поддержка "пустых" устройств. Очень хорошая опция. Она позволит вам монтировать диски сами на себя, монтировать образы дисков, иметь "локальную" сеть при отсутствии настоящей сети. и много другое ...
Multiple devices driver support - Поддержка RAID
RAM disk support - Поддержка виртуально диска в памяти ... Оно Вам это надо ?
XT harddisk support - Поддержка старых дисковых контроллеров.
Parallel port IDE device support - Есть переносные винчестеры, которые подключаются к параллельному порту машины ... они у вас есть ?

Networking options --->

- поддержка и конфигурирование сетевых опций ядра.
Packet socket - я не знаю, для чего эта опция, но она у меня включена по умолчанию.
Kernel/User netlink socket - поддержка сокетов для связи в пределах одной машины.
Network firewalls - если вы планируете использовать машину в качестве файрволла, включите эту опцию.
Network aliasing - нужна для обеспечения подвешивания нескольких адресов(алиасов) на одну физическую карточку.
Socket Filtering - поддержка фильтрации TCP/IP потока.
Unix domain sockets - поддержка сщкетов в формате UNIX - включите ее !!
TCP/IP networking - вообще, поддерживаем TCP/IP ?
IP: multicasting - поддержка широковещетельного формата протокола TCP/IP. То есть машина будет рассылать одинаковый пакеты не каждому хосту отдельно, а всем сразу. Это может понадобиться для RealAudio сервера, например ...
IP: advanced router - улучшенные опции роутинга.
IP: kernel level autoconfiguration - не знаю, что это.
IP: optimize as router not host - оптимизация функция для использования машины больше в качестве роутера, а не обычного сервера.
IP: tunneling - обеспечение IP-туннеллинга.
IP: GRE tunnels over IP - GRE - туннелинг.
IP: aliasing support - поддержка алиасов.
IP: TCP syncookie support (not enabled per default) - не знаю, что это, у меня выключено.
IP: Reverse ARP - обеспечение реверсного ARP. То есть машина не будет принимать пакеты да тех пор, пока не проверит, что заголовок пакета совпадает с MAC-адресом пославшего.
IP: Drop source routed frames - сброс кадров с информацией о роутинге. В этом случае машина сама должна собирать информацию о роутинге с помощью других средств.
IP: Allow large windows (not recommended if <16Mb of memory) - принимать большие кадры. Не рекомендуется для машин с малым объемом памяти.
The IPX protocol
IPX: Full internal IPX network - включите эти два пункта, если вы собираетесь устанавливать Novell - эмулятор или соединяться с новелл-серверами.
Appletalk DDP - поддержка протоколов Macintosh'ей ....

SCSI support --->

- Поддержка SCSI устройств. К сожалению, у меня на машине нет ни одного SCSI устройства, по этому я не буду описывать этот пункт. Но он по содержанию аналогичен пункту Block Devices.

Network device support --->

- поддержка сетевых карточек.
Network device support - вообще поддержка сетевых карточек
ARCnet support - поддержка ARCnet карточек.
Dummy net driver support - поддержка "тупых" сетевых устройств. Используется редко.
EQL (serial line load balancing) support - поддержка балансировки при подключении 2 и более одновременно модемов.
Ethernet (10 or 100Mbit) - поддержка Ethernet - карточек. При этом открываются следующие пункты.
3COM cards -карточки от 3COM
AMD LANCE and PCnet (AT1500 and NE2100) support - от AMD
Western Digital/SMC cards - от SMC
Racal-Interlan (Micom) NI cards - от Racal.
Other ISA cards - другие ISA карточки.
EISA, VLB, PCI and on board controllers - карточки, которые сидят на EISA, VLB, PCI или вмонтированы прямо на матплату машины. Ниже откроется список поддерживаемых чипсетов для этих карточек - выберите тот, который у вас.
Pocket and portable adaptors - Портативные адаптеры.
FDDI driver support - поддержка FDDI
Frame relay DLCI support - поддержка Frame Relay
PPP (point-to-point) support - Поддержка PPP - протокола
SLIP (serial line) support - Поддержка SLIP - старый формат для подключению в инет.
Wireless LAN (non-hamradio) - Радио-карточки.
Token Ring driver support - Tocen Ring карточки.
Control Hostess SV-11 support
COSA/SRP sync serial boards support
Red Creek Hardware VPN (EXPERIMENTAL) - Что из себя представляют эти 3 пункта, я не знаю ....
WAN drivers - поддержка WAN карточек ( это те, которые работают с потоками E1 и подобными им ;-)))

Amateur Radio support --->

- Поддержка карточек, которые работают через X.25, поддержка SoundModem и прочей бяки. У меня ничего подобного нет, поэтому я опускаю этот пункт.

ISDN subsystem --->

- Поддержка ISDN - у меня ее нет.

CD-ROM drivers (not for SCSI or IDE/ATAPI drives) --->

- поддержка старых приводов CD-ROM, которые подключаются не через IDE или SCSI, например через звуковую карточку.

Character devices --->

- поддержка остальных устройств ввода.
Virtual terminal - поддержка виртуальных терминалов на одном физическом.
Support for console on virtual terminal - поддержка косоли на виртуальных терминалах.
Standard/generic (dumb) serial support - поддержка стандартных последовательных портов.
Support for console on serial port - поддержка консоли, которая подключена через последовательный порт.
Extended dumb serial driver options - расширенная поддержка последовательных портов, в чем заключается конкретно - я не знаю.
Non-standard serial port support - поддержка нестандартных последовательных портов.
Unix98 PTY support - поддержка нового стандарта на консоли.
Maximum number of Unix98 PTYs in use (0-2048) - их число.
Mouse Support (not serial mice) - поддержка мышек, которые висят не на последовательном порту.
QIC-02 tape support - поддержка стандарта QIC-02 (это старый формат для накопителей на магнитной ленте)
Watchdog Timer Support - поддержка аппаратного устройства, которое следит за работоспособностью системы.
/dev/nvram support - я не знаю, что это ...у меня включено.
Enhanced Real Time Clock Support - расширенная поддержка RTC.
Video For Linux ---> поддержка карточек с видео вводом/выводом. У меня их нет.

Joystick support --->

поддержка джойстиков. У меня их тоже нет ;-)

Ftape, the floppy tape device driver --->

поддержка накопителей на магнитной ленте, которые подключаются на floppy-шлейф.

Filesystems --->

- Поддержка файловых систем. К этому пункту следует отнестись с большим вниманием ....
Quota support - поддержка дисковых квот для пользователей.
Kernel automounter support - встраивание автоматического монтировщика/демонтировщика дисковых разделов.
Amiga FFS filesystem support - поддержка файловой системы Амиги.
Apple Macintosh filesystem support (experimental) - поддержка макинтошевских разделов.
DOS FAT fs support - поддержка DOS - разделов, обязательно включите MSDOS,UMSDOS,VFAT опции ...
ISO 9660 CDROM filesystem support - поддержка файловой системы компакт-дисков.
Microsoft Joliet CDROM extensions - поддержка расширений микрософт для компакт-дисков.
Minix fs support - поддержка minix системы. очень старая система, я не знаю, где она применяется.
NTFS filesystem support (read only) - поддержка на чтение NTFS разделов.
OS/2 HPFS filesystem support (read only) - аналогично для HPFS.
/proc filesystem support - поддержка /proc. Здесь можно будет найти всю информацию о системе. утилиты ps,free и прочие пользуются ей, потому включите ее.
/dev/pts filesystem for Unix98 PTYs - поддержка новых стандартов.
ROM filesystem support - поддержка файловых систем, размещенных в ПЗУ.
Second extended fs support - поддержка родной для линукса фаловой системы.
System V and Coherent filesystem support - поддержка файловой системы для System V
UFS filesystem support - поддержка UFS системы. Применяется на коммерческих версиях Unix.
Network File Systems ---> поддержка сетевых файловых систем
Coda filesystem support (advanced network fs) - файловая система, предназначенная для динамического подключения/отключения клиентов. Навороченная до безобразия. Я пока не смог найти ей более-менее разумного применения, кроме кластеров. ;-))).
NFS filesystem support - поддержка NFS - родной для юниксов сетевой файловой системы.
SMB filesystem support (to mount WfW shares etc.) - поддержка файловой системы, по которой общаются представители windows - мира.
NCP filesystem support (to mount NetWare volumes) - то же самое, но для мира новелл.
я советую включить все дополнительные опции - по моему, более безглючная работа вам будет гарантирована ;-)))).
Partition Types ---> Поддержка форматов разбивок дисков для BSD, Macintosh, Sun, Solaris.
Native Language Support ---> Подержка национальных языков на разделах. Здесь включите поддержку Codepage 437 (United States, Canada), Codepage 866 (Cyrillic/Russian), NLS ISO 8859-5 (Cyrillic), NLS KOI8-R (Russian) и вы сможете нормально видеть русские буквы в именах файлов.

Console drivers --->

Поддержка аппаратной консоли.
VGA text console - поддержка VGA - консолей.
Video mode selection support - поддержка выбора видеорежима на этапе загрузки. То есть вы можете загрузить линукс не 25х80, а например 50х80. Если честно, то эта поддержка была и в самых старых версиях ядра, но она устанавливалась вручную спец.командами.

Sound --->

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

Kernel hacking --->

- "ломка" ядра. Я ни разу не использовал этой опции.

Вот и все, что необходимо для конфигурации ядра под ваши требования. Единственное, что я вам посоветую - как можно больше вынести в модули, так как объем ядра увеличился и при включении джентельменского набора опции для компиляции в ядро оно просто получится очень большим. Теперь делайте make zlilo - ядро начнется компилироваться и если оно скомпилировалось без ошибок, вызоветься lilo, который подготовит загрузчик для ядра. Если компиляция прошла с ошибками, то смотрите на то, какие ошибки и думайте, что их могло вызвать. У меня единственнное что было - так это для ядра не хватило памяти и пресловутый signal 11 из-за разогнанного процессора. Потом сделайте make modules;make modules_install для компилирования и установки модулей, только не забудьте удалить все из каталога /lib/modules/2.2.1 (если вы компилируете 2.2.1 версию, для 2.2.0 сами понимаете какой каталог должен быть ;-))


[email protected] ...
С уважением,
Вячеслав Калошин