4.2.0 Избор на кернел

Ядрото (kernel) е частта от операционната система, която осигурява достъпа до хардуера, контролира процесите и изобщо цялата система. Ядрото съдържа информация за вашите устройства, така че е важно да изберете подходящо.

Slackware предоставя повече от дузина прекомпилирани ядра от които можете да избирате. Може да използвате едно от тези ядра или да компилирате свое собствено.

4.2.1 Директорията /kernels в Slackware CD-ROM

Ядрата се намират в тази директория, също може да ги откриете и на FTP сървъра на Slackware. В /kernels има поддиректории, съответстващи на всяко ядро. Във всяка поддиректория ще откриете следните файлове:

Файл

Предназначение
System.map Системна "карта" на ядрото.
bzImage Самото ядро.
config Конфигурационния файл използван за компилирането на ядрото.

За да използвате дадено ядро, копирайте System.map, config и bzImage в /boot. След това преименувайте bzImage на vmlinuz. Сега стартирайте /sbin/lilo за да инсталирате LILO за новото ядро. Всичко е готово, просто рестартирайте.

Ядрата завършващи на .i са IDE кернели. Това означава, че не включват SCSI поддръжка. .s ядрата са точно обратното, това са SCSI кернели, но също така включват и IDE поддръжка.

4.2.2 Компилиране на кернел от сорс

Въпросът “Трябва ли да компилирам кернел за моята система?” често се задава от нови потребители. Отговорът определено е: може би :). Има някои случаи в които ще трябва да компилирате собствено ядро, но за повечето потребители това не нужно. Ще трябва да компилирате ядро, ако възнамерявате да използвате по-нова версия и тя не се предоставя от Slackware. Също, ако имате нестандартен / неподдържан хардуер и имете kernel patch за него, ще трябва да прекомпилирате. Всеки с SMP система определено ще трябва да компилира ядро с такава поддръжка. Много потребители смятат, че ръчно компилирания кернел е много по-бърз от стандартния.

Изграждането на собствено ядро не е толкова трудно. Първо се убедете, че разполагате със сорс кода на ядрото. Също трябва да сте инсталирали софтуерните серии K и D по време на инсталацията. Можете да свалите последната версия на сорс кода от http://www.kernel.org.

4.2.2.1 Компилиране на ядро версия 2.4.x

% su -
Password:
# cd /usr/src/linux

Първо ще върнем сорс кода към първоначалния му вид. Използвайте следната команда за това: (ако искате направете копие на .config файла, понеже ще бъде изтрит без предупреждение)

# make mrproper

Сега трябва да конфигурирате ядрото според вашата система. Предлагат Ви се три варианта за това. Първият е оригиналния текстов вариант (задават Ви се въпроси относно системата). Проблемът е, че ако объркате нещо, ще трябва да се върнете отначало (а въпросите са много). Най-предпочитания метод е чрез меню. Третия вариант е X-базиран. Изберете метод и изпълнете подхоящата команда:

# make config (текст-базиран Въпроси&Отговори)
# make menuconfig (текст-базиран, с меню)
# make xconfig (X-базиран, трябва да сте в X преди това)

Фигура 4-1. Конфигурационно меню

pic

Може би повечето потребители ще изберат този вариант (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 за ядрото и след това рестартирайте.

4.2.2.2 Компилиране на ядро версия 2.6.x

Процеса не е много по-различен от 2.4.x, но има неща, които трябва да знаете преди да се захванете с новото ядро. Вече не е нужно да изпълнявате make clean и make dep. По време на компилацията, не се предоставя толкова много информация, за това какво става (както е при 2.4.x). Ако имате проблем с компилирането, можете да използвате аргумет V=1 за да разрешите verbose режима (да се показва повече информация по време на процеса):

# make bzImage V=1

4.2.3 Кернел модули

Кернел модулите представляват нещо като драйвери за устройство. Могат да се добават / премахват от работещо ядро, без прекъсване на работата му.

Модулите са много полезни, примерно имате нужда от даден драйвер - зареждате модула и всичко тръгва. След това можете да го премахнете за да не заема памет / ресурси. Ако искате да сложите по-нов модул за дадено устройство, просто го компилирате, премахвате стария, зареждате новия - и всичко това без да прекъсвате работата на машината.

Модулите се съхраняват в /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 страниците.


Valid XHTML 1.0 Strict