Ядрото (kernel) е частта от операционната система, която осигурява достъпа до хардуера, контролира процесите и изобщо цялата система. Ядрото съдържа информация за вашите устройства, така че е важно да изберете подходящо.
Slackware предоставя повече от дузина прекомпилирани ядра от които можете да избирате. Може да използвате едно от тези ядра или да компилирате свое собствено.
Ядрата се намират в тази директория, също може да ги откриете и на FTP сървъра на Slackware. В /kernels има поддиректории, съответстващи на всяко ядро. Във всяка поддиректория ще откриете следните файлове:
Файл |
Предназначение |
System.map | Системна "карта" на ядрото. |
bzImage | Самото ядро. |
config | Конфигурационния файл използван за компилирането на ядрото. |
За да използвате дадено ядро, копирайте System.map, config и bzImage в /boot. След това преименувайте bzImage на vmlinuz. Сега стартирайте /sbin/lilo за да инсталирате LILO за новото ядро. Всичко е готово, просто рестартирайте.
Ядрата завършващи на .i са IDE кернели. Това означава, че не включват SCSI поддръжка. .s ядрата са точно обратното, това са SCSI кернели, но също така включват и IDE поддръжка.
Въпросът “Трябва ли да компилирам кернел за моята система?” често се задава от нови потребители. Отговорът определено е: може би :). Има някои случаи в които ще трябва да компилирате собствено ядро, но за повечето потребители това не нужно. Ще трябва да компилирате ядро, ако възнамерявате да използвате по-нова версия и тя не се предоставя от Slackware. Също, ако имате нестандартен / неподдържан хардуер и имете kernel patch за него, ще трябва да прекомпилирате. Всеки с SMP система определено ще трябва да компилира ядро с такава поддръжка. Много потребители смятат, че ръчно компилирания кернел е много по-бърз от стандартния.
Изграждането на собствено ядро не е толкова трудно. Първо се убедете, че разполагате със сорс кода на ядрото. Също трябва да сте инсталирали софтуерните серии K и D по време на инсталацията. Можете да свалите последната версия на сорс кода от http://www.kernel.org.
% su -
Password:
# cd /usr/src/linux
Първо ще върнем сорс кода към първоначалния му вид. Използвайте следната команда за това: (ако искате направете копие на .config файла, понеже ще бъде изтрит без предупреждение)
# make mrproper
Сега трябва да конфигурирате ядрото според вашата система. Предлагат Ви се три варианта за това. Първият е оригиналния текстов вариант (задават Ви се въпроси относно системата). Проблемът е, че ако объркате нещо, ще трябва да се върнете отначало (а въпросите са много). Най-предпочитания метод е чрез меню. Третия вариант е X-базиран. Изберете метод и изпълнете подхоящата команда:
# make config (текст-базиран Въпроси&Отговори)
# make menuconfig (текст-базиран, с меню)
# make xconfig (X-базиран, трябва да сте в X преди това)
Фигура 4-1. Конфигурационно меню
Може би повечето потребители ще изберат този вариант (menuconfig). След като конфигурирате ядрото (това не се разглежда тук) ще трябва да подготвите сорс кода за компилация:
# make dep
# make clean
Сега идва ред на същинската компилация:
# make bzImage
Това ще отнеме известно време, в зависимост от скоростта на процесора Ви. След като процесът приключи идва ред да компилирате модулите към ядрото (ако сте задали такива).
# make modules
Сега ще инсталираме ядрото и неговите модули:
# mv /boot/vmlinuz /boot/vmlinuz.old
# cp arch/i386/boot/bzImage /boot/vmlinuz
# mv /boot/System.map /boot/System.map.old
# cp System.map /boot/System.map
# make modules_install
Може би ще искате да добавите секция за старото ядро в /etc/lilo.conf, в случай че новото не проработи. Стартирайте /sbin/lilo за да инсталирате LILO за ядрото и след това рестартирайте.
Процеса не е много по-различен от 2.4.x, но има неща, които трябва да знаете преди да се захванете с новото ядро. Вече не е нужно да изпълнявате make clean и make dep. По време на компилацията, не се предоставя толкова много информация, за това какво става (както е при 2.4.x). Ако имате проблем с компилирането, можете да използвате аргумет V=1 за да разрешите verbose режима (да се показва повече информация по време на процеса):
# make bzImage V=1
Кернел модулите представляват нещо като драйвери за устройство. Могат да се добават / премахват от работещо ядро, без прекъсване на работата му.
Модулите са много полезни, примерно имате нужда от даден драйвер - зареждате модула и всичко тръгва. След това можете да го премахнете за да не заема памет / ресурси. Ако искате да сложите по-нов модул за дадено устройство, просто го компилирате, премахвате стария, зареждате новия - и всичко това без да прекъсвате работата на машината.
Модулите се съхраняват в /lib/modules/kernel-x.x.x. Те могат да се заредят по време на стартиране, с помощта на rc.modules файла. За да видите списък на заредените модули, използвайте:
# lsmod
Module | Size | Used by |
parport_pc | 7220 | 0 |
parport | 7844 | 0 [parport_pc] |
Както виждате, зареден е само модула за паралелен порт. За да го премахнете използвайте командата rmmod. Модулите могат да се зареждат с modprobe или insmod. modprobe е по-безопасен, понеже ще зареди и модулите (ако има) изисквани от главния модул.
Много потребители не зареждат / премахват модули на ръка. Те използват кернел autoloader-а - kmod е кернел опция, която позволява на ядрото автоматично да зарежда модулите, които и когато са нужни. Вижте /usr/src/linux/Documentation/kmod.txt за повече информация.
Допълнителна информация за тези команди и rc.modules файла можете да откриете в man страниците.