"Компилиране на ядро" - това нещо звучи много страшно за всеки начинаещ Linux-ар. Всъщност, това е един не чак толкова сложен процес (особенно ако познавате добре компютъра си). Цялото това удоволствие може да се подели на три етапа, всеки от които ще разгледаме подробно по-долу.
Що е то ядрото и какво е компилиране ? Има хора, които това не е ясно, така че ще обясня тук.
Ядрото е общото между всички дистрибуции на Linux - това е нещо, което зависи от Линус Торвалдс. Вие можете да се сдобиете безплатно с него. Обикновенно го получавате в неговия изходен код (така, както са го писали Линус Торвалдс, Алан Кокс и др.), но, за да се зареди операционната система, трябва ядрото да е в машинен код. Т.е. трябва на превърнете ядрото от изходен в машинен код, който процес се нарича компилиране. Това обаче позволява да компилирате само тези тези части, които са ви нужни. Например, вие може би не се нуждаете от поддръжка на SCSI адаптери и устройства или на поддръжка на повече от 1GB RAM. Благодарение вие можете да настроите така ядрото, че то да е най-оптимизирано за вашата конфигурация.
Когато инсталирате някаква дистрибуция на Linux, вие получавате компилирано ядро, което обаче е направено така, че да поддържа почти всичко, което го прави доста неоптимизирано. Това предполага, че бихте искали да го прекомпилирате.
Започвам с предположението, че, както повечето от Linux-арите, изходния код на ядрото ви се намира в директорията /usr/src/linux. Ако това не е така, просто ще ви се наложи да замествате имената да директориите. В повечето дистрибуции /usr/src/linux не е директория, я сомволична връзка ("symlink") към директорията съдържаща изходния код (който за краткост ще наричам "source", доколкото започват да ме мързят пръстите) на текущото ядро, примерно /usr/src/linux-2.2.13.
Тук ще предположа, че вече сте си изтеглили пълно ядро (примерно 2.2.14) или само измененията в него (файла с последните ще наричам с по-популярното му название - "patch"). В зависимост от това какво точно сте изтеглили имате два вариянта на действие:
machine:~# cd /usr/src
machine:/usr/src# rm -f linux
machine:/usr/src# gunzip linux-2.2.14.tar.gz
machine:/usr/src# bunzip2 linux-2.2.14.tar.bz2
machine:/usr/src# uncompress linux-2.2.14.tar.Z
machine:/usr/src# tar -xvf linux-2.2.14.tar
machine:~# cd /usr/src
machine:/usr/src# linux/scripts/patch-kernel
machine:~# cd /usr/src
machine:/usr/src# gunzip linux-2.2.14.gz
machine:/usr/src# bunzip2 linux-2.2.14.bz2
machine:/usr/src# uncompress linux-2.2.14.Z
machine:/usr/src# patch -p0 < linux-2.2.14
machine:/usr/src/linux# make config
machine:/usr/src/linux# make menuconfig
machine:/usr/src/linux# make xconfig
Искам да спомена за модулите. Те са аналог на драйверите под Microsoft (r) Windows (tm), с тази разлика там, че те могат да бъдат пускани и спирани по всяко време. Трябва добре да прецените кое колко често ви трябва и дали да го компилирате на модули. Уви, не всичко може. Но определено модулите помагат за смаляването на паметта заемана от ядрото по време на работа.
По време на настройката разполагате информация за почти всяка опция, като в същото време можете да хвърляте по едно-две или там колкото искате очи на документацията на ядрото забутана в директорията /usr/src/linux/Documentation, където примерно можете да намерите информация за това как стъпка по стъпка да инсталирате мрежовата и/или звуковата си карта, както и много други дрънкулки по машината си, като, примерно, любителски радиоприемник.
Забележка: За съжаление поддръжка за кафе-машина няма в ядрото, поради липсата на стандартизиран протокол за комуникация разработен от производителите на такива, но информация по въпроса можете да намерите във файла /usr/doc/Linux-mini-HOWTOs/Coffee (който, ако искате, бих превел).
След като настроите ядрото, добре би било да запишете конфигурацията му във файл със "Save Kernel Configuration", за да можете при следваща преконфигурация на ядрото да я заредите с "Load Kernel Configuration".
Вече свършихте с настройките. Точно по средата сте.
machine:/usr/src/linux# make dep
machine:/usr/src/linux# make clean
machine:/usr/src/linux# make
machine:/usr/src/linux# make zImage
machine:/usr/src/linux# make bzImage
machine:/usr/src/linux# make modules
Вече сте готови да инсталирате ядрото.
Сигурно се питате къде ви е ядрото, което след толкова писания уж сте компилирали. Е, добре, ядрото се намира в /usr/src/linux/arch/?!?/boot, където "?!?" е архитектурата ви (тя може да е "alpha", "sparc", "m86k", но в повечето случаи е "i386"). В зависимост какво е нивото на компресия на ядрото, което сте компилирали, файлът се казва:
Преименувайте файла и го изкопирайте примерно в главната директория. В следващия пример ще предположа, че ядрото е 2.2.14 и е компилирано на i386-архитектура с "make bzImage":
machine:/usr/src/linux# mv arch/i386/boot/bzImage /bzImage-2.2.14
Сега трябва да сложим модулите по местата им, т.е. да ги инсталираме:
machine:/usr/src/linux# make modules_install
Следват настройки в зависимост от това какво ползвате, за да пуснете Linux:
image=/bzImage-2.2.14 root = /dev/hda2 label = Linux read-only
c:\tools\loadlin.exe c:\tools\bzImage root=/dev/hda2 roРазбира се, този ред можете да си натъпчете в някой ".bat"-файл, но това вече си е ваша работа.
Остава ви само да рестартирате машината си и да си пуснете Linux-а.
След като пуснете Linux-а си, може да се имате появяват някои досадни грешки при зареждането на модулите. В такъв случай направете следното:
machine:~# rm -Rf /lib/modules/2.2.14
machine:~# cd /usr/src/linux
machine:/usr/src/linux# make modules_install
machine:/usr/src/linux# depmod -a
Рестартирайте своя Linux и вижте какво ще стане. Дано проработи. Ако не, пишете ми и кажете точно какво става - ще се опитам да ви помогна.
Като най-полезна информация (защо ли съм на това мнение ? :-)), можете да намерите този документ на официалната ми страница .
Linux ядро можете да си изтеглите от http://www.kernel.org/ или http://www.kernelnotes.org/. В документацията, която върви с ядрото (/usr/src/linux/Documentation/*), можете да намерите информация за почти всичко свързано с него (включително и скриптове, които да автоматизират и улеснят процеса на компилиране).
Голяма е вероятността с всичко останало да сте инсталирали и стандартната документация. Там можете да намерите следните файлове, в които можете да намерите доста полезна информация:
Авторът на това произведение (в мое лице), се не носи отговорност за каквито и да било (морални, физически, софтуерни, хардуерни, мийтуерни и т.н.) щети нанесени пряко или косвено от информацията публикувана в този документ. Т.е., правейки нещо в резултат на употребата на този документ, вие носите цялата отговорност за действията си. Този документ може да бъде разпространяван свободно съгласно поледната версия на GNU GPL във вида, в който е публикуван от Free Software Foundation.
Авторът (отново моя милост, за изненада на всички) не приема упреци, а само предложения (и поздравителни картички).