Компилиране на ядро по дебиански
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
Старото ядро го оставете за сега. Ако новото ядро не успее да сработи, ще можете да стартирате системата със старото ядро и да коригирате проблема. Успех.
инж. Тони Тошев
Доброслав said
Не разбрах откъде да взема „.config“ на работещото ядро. В коя папка да го търся? Предполагам, че като го знам кой е файла, ще мога да го посоча на скрипта чрез опцията „Load an Alternate Configuration File“
debianbg said
Намира се в /usr/src/config-x.x.x.x ––> където „х“ е версията на ядрото.
AZ said
Глупости на търкалета.
Две от командите, записани тук не работят – погрешни са.
Инженера е хубаво да се пробва да компилира последната дистрибуция на Дебилиан с последото стабилно ядро..
Само обърквате хората с погрешни съвети.
Като не можете да обновявате постовете, съобразно хаотичните промени в Линукс ядрата – въобще не ги пускайте!
debianbg said
Здравей AZ!
Ако обичаш, би ли посочил кои точно команди са погрешни и не работят!
И разбира се, да напишеш правилните. Всяко мъдро решение е добре дошло.
В крайна сметка, този блог е създаден с цел да помага на потребителите, не да им пречи.
Иначе за плюенето, всеки го може, но не всеки може да оцени труда на другите.
Поздрави!
tonitochev said
Да бе, посочи грешката ( ако има такава) или направи допълнение примерно при ядро еди кое си как се прави. Тук изрично е посочено ядрото, така че, който има какво да добавя, да го направи културно, а не да си хвърля думите на вятъра.
ten said
здравейте
работи само малка корекция
# make-kpkg –config menuconfig –initrd kernel_image
# make-kpkg –config menuconfig –initrd kernel_image
можи това да зависи от дестрибуцията „lenny“
Стефан Павлов said
А как да го направя за да получа и kernel-headers като .deb файл?
Стефан Павлов said
make-kpkg –config menuconfig –initrd kernel_headers