Debian за Българи!

Всичко за Debian Gnu/Linux

Компилиране на ядро по дебиански

Posted by tonitochev в ноември 30, 2007

Макар и рядко, понякога се налага да си компилираме ядрото, особено, ако ползваме test или unstable дистрибуция. Най-пресният пример при мен – оказа се, че старото ядро е компилирано с gcc 4.1 , а в момента актуалното gcc в системата ми е вече 4.2 . В резултат на което видеодрайверът на nvidia категорично отказа да се компилира. А когато ползвах една по стара видеокарта пък, трябваше да премахна една допълнителна опция при прекомпилиране на ядрото, за да мога да ползвам 3д видеоускорението. Иначе реално, не смятам, че има полза от прекомпилиране на ядрото, с цел ускоряване на системата. Освен, ако сте доста напреднали и ви е ясно кое за какво е.
Но какво да правят начинаещите линукс потребители, ако им се наложи да извършат тази операция? Еми малко четене, събиране на кураж и да се захващат за работа. Най-лесният и безпроблемен начин е, когато се използва kernel-package. Това е скрипт, който ще свърши цялата работа, без конфигурирането на ядрото, като накрая ще имате дебиански пакет с ядрото. Който пакет ще може да си инсталирате по обичайните начини – с dpkg примерно.
Първо, инсталирайте си необходимите инструменти за компилации:

# apt-get install build-essential

Следва да си инсталирате и пакета libncurses5-dev, за да може да си конфигурирате ядрото чрез make menuconfig :

# apt-get install libncurses5-dev

И разбира се :

# apt-get install kernel-package

Вече имате необходимите инструменти, сорса на ядрото може да си  изтеглите от http://www.kernel.org/pub/linux/kernel/v2.6/ или от друго място. Разархивирате изтегленият файл в директорията /usr/src .

Ако файла е linux-2.6.22.tar.gz:

# tar -xvfz linux-2.6.22.tar.gz

Ако файла е linux-2.6.22.tar.bz2:

# tar -xvjf linux-2.6.22.tar.bz2

Влизате в новата директория:

# cd linux-2.6.22

Задължително правим сорса дебиански, за да може kernel-package да си свърши работата:
# make-kpkg debian

Следва същинската част. Ако искате целият процес на компилация да протече автоматично, изпълнете:

# make-kpkg –config menuconfig –initrd kernel_image

Сега ще трябва първо да конфигурирате ядрото. Това всъщност е най-трудната част, ако решите да променяте модули и възможности на ядрото. За да си създадете свое ядро, което да съдържа само драйверите, които ще ви трябват точно на вашата машина, предполага задълбочени познания в материята. Така че, ако ги нямате, не се хващайте с такава тежка задача, а просто вземете .config на работещото ядро. Няма тук да разглеждам точно как се конфигурира ядрото, защото темата е огромна.
След като приключите с тази стъпка, от тук нататък компилацията започва, и когато всичко приключи, в директорията /usr/src ще има дебиански пакет linux-image-2.6.22.deb. Остава да го инсталирате:

# dpkg -i linux-image-2.6.22.deb

Старото ядро го оставете за сега. Ако новото ядро не успее да сработи, ще можете да стартирате системата със старото ядро и да коригирате проблема. Успех.

инж. Тони Тошев

8 коментара to “Компилиране на ядро по дебиански”

  1. Доброслав said

    Не разбрах откъде да взема „.config“ на работещото ядро. В коя папка да го търся? Предполагам, че като го знам кой е файла, ще мога да го посоча на скрипта чрез опцията „Load an Alternate Configuration File“

  2. debianbg said

    Намира се в /usr/src/config-x.x.x.x ––> където „х“ е версията на ядрото.

  3. AZ said

    Глупости на търкалета.
    Две от командите, записани тук не работят – погрешни са.
    Инженера е хубаво да се пробва да компилира последната дистрибуция на Дебилиан с последото стабилно ядро..
    Само обърквате хората с погрешни съвети.
    Като не можете да обновявате постовете, съобразно хаотичните промени в Линукс ядрата – въобще не ги пускайте!

  4. debianbg said

    Здравей AZ!
    Ако обичаш, би ли посочил кои точно команди са погрешни и не работят!
    И разбира се, да напишеш правилните. Всяко мъдро решение е добре дошло.
    В крайна сметка, този блог е създаден с цел да помага на потребителите, не да им пречи.
    Иначе за плюенето, всеки го може, но не всеки може да оцени труда на другите.
    Поздрави!

  5. tonitochev said

    Да бе, посочи грешката ( ако има такава) или направи допълнение примерно при ядро еди кое си как се прави. Тук изрично е посочено ядрото, така че, който има какво да добавя, да го направи културно, а не да си хвърля думите на вятъра.

  6. ten said

    здравейте
    работи само малка корекция
    # make-kpkg –config menuconfig –initrd kernel_image

    # make-kpkg –config menuconfig –initrd kernel_image
    можи това да зависи от дестрибуцията „lenny“

  7. Стефан Павлов said

    А как да го направя за да получа и kernel-headers като .deb файл?

  8. Стефан Павлов said

    make-kpkg –config menuconfig –initrd kernel_headers

Вашият коментар