Home    Решения    Услуги    Download    Публикации    Работа    Продукти    Документи
 

 

 
Print this page/Отпечатай тази страница  

 

Прекомпилиране на ядрото (кърнъла)

от Йовко Ламбрев ([email protected])




       По принцип не би следвало да ви се налага често да компилирате ново ядро на операционната си система. Случайте, които налагат това са обикновено два - или сте се сдобили с по-нова версия на ядрото и искате да я използвате или трябва да активирате (или деактивирате) някое свойство на текущото ядро. В README файла към всяко ядро са описани опциите на конкретното, модулите му и най-важната актуална информация за него.
       Ново ядро се компилира от изходен код (source code). Той обикновено се намира в директорията /usr/src/linux въпреки, че можете да го разположите където искате. Добра идея е да направите копие на текущото ядро в случай, че новото се окаже несполучливо.
       !!! ВНИМАНИЕ !!! Трябва внимателно да обмислите и конфигурирате новия кърнъл за да не се окажете след подмяната на старото ядро с неработеща система. Ако сте начинаещ и няма наложителни причини да прекомпилирате ядрото по-добре не го правете на компютър, който е важно да остане работоспособен след вашите действия. От друга страна ако не пробвате - никога няма да се научите ! Затова запазете някъде старото работещо ядро. То обикновено се намира в главната директория и се нарича vmlinuz, но може да бъде и в поддиректория на главната, наречена например /boot (зависи от дистрибуцията ви).
       Всъщност процедурата не е никак сложна. Трябва да отидете в директорията с изходния код на ядрото.

 cd /usr/src/linux 
       Сега трябва да конфигурирате бъдещото ядро. Имате три възможности за това - класическият начин е от команден ред с командата
 make config 
Ако не ви се отговаря на над 60-те въпроса, които ще последват можете да използвате конфигуратора с менюта
 make menuconfig 
или пък дори графичния X-конфигуратор (разбира се трябва да сте в X при този вариант)
make xconfig
       (Само за да подразня Windows-аджиите - да допуснем, че разполагаме с изходния код на Windows - как мислите дали някога ще можете да прекомпилирате ядрото му докато самия той работи и то през графичен интерфейс. Ако се колебаете да ви помогна - верният отговор е никога).
       След подаването на една от трите команди трябва да настроите новото ядро. В първият случай ще отговаряте на множество въпроси един по един (естествено очаква се да знаете отговорите) за това какви неща да поддържа ядрото, модулите и настройката им. Можете да отговаряте и с натискане на Enter, ako отговорът по подразбиране ви удовлетворява. (Не знам дали непременно ви трябват познания по английски, но технически такива са ви МНОГО необходими. Не се сърдете, но това не е лъжица за всяка уста!). Ако използвате менюта - нещата са същите (и въпросите не са по-малко), но някак си изглежда по-просто и обичайно. Ако пък обичате да щракате с мишката конфигурирането под X може и да цяло забавление.
       Да приемем, че някак си сте конфигурирали новото ядро. Добра идея е да си запишете в някакъв файл конфигурацията, която сте направили, защото ако сте пропуснали някой дребен детайл или след това се сетите за някоя козметична промяна, която ви се прииска да направите ще е по-лесно да заредите този конфигурационен файл и да пипнете само, където трябва - в противен случай трябва да започнете от самото начало с всичко, което честно казано си е много досадно.
       След като приключите с конфигурирането трябва да подадете командата
 make dep ; make clean 
Това ще оправи някои зависими една от друга стойности. Следва и самото компилиране. Командите са няколко в зависимост от това какъв резултат искаме да получим. За подробности - погледнете HOWTO-тата. Тук само ще изброя два вида на командата:
 make zImage 
и
 make zlilo 
Аз лично предпочитам да си направя zImage, и после сам да си конфигурирам LILO-то. Всъщност никога дори не съм и пробвал make zlilo.
       Новите версии на кърнъла особено 2.2.x са вече доста големи и в зависимост от конфигурацията, която сте направили напълно е възможно при компилирането да получите съобщения за грешка, че ядрото е твърде голямо. За да избегнете този проблем вместо make zImage използвайте командата make bzImage - тя ще създаде компресирано ядро, което ще се разкомпресира при boot-ване - почти незабележимо забавя малко процеса на първоначално зареждане, но пък ви дава възможност да компилирате повече неща в ядрото си. Каквото и да изберете тази стъпка на компилирането е достатъчно отегчителна така, че облегнете се удобно или се поразходете за едно кафе.
       След това трябва да направим модулите на ядрото и да ги инсталираме. Това става пак с командата make в този вид:
 make modules; make modules_install 
       Ами това е! Готови сме! Ако сте компилирали нова версия на ядрото трябва да промените символичната връзка linux така, че да сочи към поддиректорията с новите изходни текстове. Както и да смените името на поддиректорията на модулите, така че там да е новата информация за новото ядро. За различните дистрибуции тази поддиректория е на различни места така, че направете справка с документацията.
       Остава да си конфигурирате boot-а на системата - масово се ползва LILO - прегледате /etc/lilo.conf така, че да boot-нете новото ядро при следващия рестарт и разбира се да рестартирате и да се порадвате на новото си ядро.
       Можете всички тези команди да изпълните на конвейр като след конфигурирането напишете следното в командния ред:
 make dep; make clean; make zlilo;
make modules; make modules_install 
       В зависимост от производителността на системата ви процеса на компилиране може да продължи и повече от час. На моята система Intel Pentium-II/Celeron333MHz (пуснат на 420MHz) с 64MB не мога да сляза под 10-15 min, когато компилирам кърнъл 2.0.36. Не ви завиждам ако сте със Cyrix. :-)