Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
 iakovlev.org 
 Kernels
 Boot 
 Memory 
 File system
 0.01
 1.0 
 2.0 
 2.4 
 2.6 
 3.x 
 4.x 
 5.x 
 6.x 
 Интервью 
 Kernel
 HOW-TO 1
 Ptrace
 Kernel-Rebuild-HOWTO
 Runlevel
 Linux daemons
 FAQ
NEWS
Последние статьи :
  Тренажёр 16.01   
  Эльбрус 05.12   
  Алгоритмы 12.04   
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
 
TOP 20
 MINIX...3057 
 Solaris...2933 
 LD...2906 
 Linux Kernel 2.6...2486 
 William Gropp...2182 
 Rodriguez 6...2016 
 C++ Templates 3...1945 
 Trees...1938 
 Kamran Husain...1866 
 Secure Programming for Li...1792 
 Максвелл 5...1711 
 DevFS...1695 
 Part 3...1684 
 Stein-MacEachern-> Час...1632 
 Go Web ...1627 
 Ethreal 4...1619 
 Стивенс 9...1607 
 Arrays...1607 
 Максвелл 1...1593 
 FAQ...1539 
 
  01.01.2024 : 3621733 посещений 

iakovlev.org

Building your own v2.6.x Kernel in the Debian manner.

Posted by nevermind in the Packages section on Wed 3 Aug 2005 at 13:05

Собрать ядро в Debian довольно просто , для начала запускаем:

aptitude -f install kernel-source-2.6.8
 

Будет проверена текущая версия ядра.

Далее распаковываем ядро:

cd /usr/src
 tar xvfj kernel-source-2.6.8.tar.bz2
 

Будет создан каталог "kernel-source-2.6.8" внутри /usr/src.

После этого можно запустить конфиг-меню:

cd /usr/src/kernel-source-2.6.8/
 make menuconfig
 

(Если меню не запускается , попробуйте "apt-get install libncurses5-dev").

По умолчанию конфиг от 2.6 kernel для Debian Sarge лежит в "/boot".

Загружаем файл "config-2.6.8-*-*", где первая звездочка "*" - номер subversion для ядра, и вторая "*" - название ОС.

(Для определения текущей версии ядра запускаем "uname -a").

Если вы ничего не хотите изменить в ядре,а просто еще раз его собрать, можно выйти из программы configuration menu.

При выходе Exit из меню у вас попросят подтвердить изменения. Выберите "yes".

А теперь рассмотрим специфическую дебиановскую команду перестройки ядра под названием "make-kpkg".

make-kpkg - это утилита , которая получает на входе несколько параметров , важнейшими из которых являются:

  • --revision number
    • позволяет присвоить ядру специальное уникальное имя .
  • --initrd
    • запуск на создание initrd image. По умолчанию поддержка initrd включена в Debian.

Далее выбираем тип компиляции :

Нужно ли компилить пакеты ? Как насчет хидеров ?

Полный список таргетов можно посмотреть с помощью опции --targets при запуске команды make-kpkg.

Для простой компиляции ядра и минимального набора модулей наберем команду:

make-kpkg --initrd --revision examplerev01 kernel_image
 

Во время компиляции make-kpkg будет задавать следующие вопросы :

Warning: You are using the initrd option, that may not
 work, depending on your kernel version and architecture,
 unless you have applied the initrd cramfs patch to
 the kernel, or modified mkinitrd not to use cramfs by
 default. The  cramfs initrd patch, is included in the 
 Debian supplied kernel sources. New kernels on most
 architectures do work fine.
 By default, I assume you know what you are doing, and I
 apologize for being so annoying. Should I abort[Ny]?
 

На этот вопрос отвечаем "N", от греха подальше;)

Компиляция может занять около 35 минут на 1.2ghz AMD Duron. (Для ускорения посмотрите using ccache, or distcc to build across multiple hosts - если у вас есть еще и другие машины).

После этого можно заняться пакетом kernel-headers - если вы например хотите собрать такие модули ядра , как Nvidia drivers, или gmail filesystem.

make-kpkg --initrd --revision examplerev01 kernel_headers
 

Эта команда должна выполниться быстро.

В результате получаем 2 файла в каталоге /usr/src , после чего смотрим в этом каталоге:

kernel-headers-2.6.8_2.6.8-3examplerev01_i386.deb
 kernel-image-2.6.8_2.6.8-3examplerev01_i386.deb
 

Далее запускаем команду dpkg:

dpkg -i kernel-image-2.6.8_2.6.8-3examplerev01_i386.deb
 

На вопрос отвечайте "Yes".

dpkg -i kernel-headers-2.6.8_2.6.8-3examplerev01_i386.deb
 

Для инициализации initrd image запускаем:

mkinitrd /boot/config-2.6.8 2.6.8
 

Если у вас стоит лило , добавляем в его конфигуратор :

image=/vmlinuz
 initrd=/initrd.img
         label=Linux
         read-only
         optional
 

После этого активируем "lilo -v" - и reboot .

Оставьте свой комментарий !

Ваше имя:
Комментарий:
Оба поля являются обязательными

 Автор  Комментарий к данной статье
KiDex kidex@gmail.ru
  даровте,..
хелп плиз!!
у мня проблемка токого рода,.. 
у мня модем  Intel536ep при установке даравов он просит please install kernel source!!, а именно:
KD:homekidex][ламmodem3intel-536EP-2.56.76.0# make 536
   Module precompile check
   Current running kernel is: 2.6.18-4-686
   libmodules...   autoconf.h does not exist
   please install kernel source
make: *** [check] Ошибка 1
рыскал в нете, окозалась установка этого модема эт проблема нэта!,
у мня Debian 4.0  kernel 2.6.18 
незнал что делать, решил 
пробывал собирать ядро по схеме данной выше, 2часа собирал, ууу... дашол до mkinitrd bootconfig-2.6.8
говарит мол нет такой команды mkinitrd, вот такой облом, 
SOS, помогите поставить модем,!, а то так нохото win загружать,.. а в Debian приятно сидеть,...
зароние благодарен....  
2007-08-07 10:51:04
Сергей Яко�
  Могу предложить следующий вариант :
нужно скачать пакет :
тут
он должен собраться для твоего ядра и твоего модема
распаковать архив
потом там нужно поправить и сохранить один скрипт - Intel536_inst
там нужно руками вбить строку
DISTRIB_ID=DEBIAN
после сохранения изменений набрать :
make clean && make 536 && make install 


2007-08-07 11:52:27
KiDex kidex@gmail.ru
  ого, а всё-таки есть на свете рай-это Linux так и знай,
пасиб, ща попробую,...
2007-08-07 12:19:51
KiDex kidex@gmail.ru
  мдя,непавучаеца...
а мона поточнее про "там нужно руками вбить строку"
мож я не то что нада тварю,..
если мона покажите как нуна исправить,..
буду очень благобадарен,! :)
2007-08-07 13:00:31
Яковлев Се�
  В скрипте есть кусок :
case $D in
   *mandrake*)	DISTRIB_ID=MANDRAKE;;
   *suse*)	DISTRIB_ID=SUSE;;
   *redhat*)	DISTRIB_ID=REDHAT;;
   *redflag*)	DISTRIB_ID=REDFLAG;;
   *conectiva*)	DISTRIB_ID=CONECTIVA;;
   *ubuntu*)	DISTRIB_ID=UBUNTU;;
   *debian*)	DISTRIB_ID=DEBIAN;;
   *slackware*)	DISTRIB_ID=SLACKWARE;;
   *gentoo*)	DISTRIB_ID=GENTOO;;
   *knoppix*)   DISTRIB_ID=KNOPPIX;;
esac
Вот сразу после него написать:
DISTRIB_ID=DEBIAN
Взято отсюда

2007-08-07 13:45:15
KiDex kidex@gmail.ru
  ЕЕЕеее..
ну эээ, РАБОТАЕТ!
проблема была в том что у мня то ядро  2.6.18-4-686, под ним не хотела грузится нивкакую,
но по указанию выше я ставил ядро  2.6.18 , и ... думал что непоставил из-за 
ошибки в конце установки, но тута я отправился на рессет. и бац граб показал два ядра на выбар,
я так падумал "вроде 2.6.18 непоставилась", 
ай думаю загружу,.. опа всё отличненько!, 
залажу в кансоль uname -r бац 2.6.18, гы 
куул, 
дай попробую дрова поставить ,ии ... 
после некотарых шаманских действий драва стаят!,
вось так, посиб Сергей Яковлев за предоставленный хэлп!, очень помог,....
пакедова....удачи 
                               :)

2007-08-07 14:45:01
Mastela
  Ребяты...
НАда помощь.. я чет запнулся на первойже строчке.

fant:usrsrc# uname -a
Linux fant 2.6.18-6-k7 #1 SMP Fri Dec 12 17:19:09 UTC 2008 i686 GNULinux

fant:usrsrc# aptitude -f install kernel-source-2.6.18
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о расширенных состояниях
Инициализация состояний пакетов... Готово
Чтение описаний задач... Готово
Построение базы данных тегов... Готово
Не удалось найти пакеты, содержащих "kernel-source-2.6.18" в своём имени или описании
Ни одного пакета не будет установлено, обновлено или удалено.
0 пакетов обновлено, 0 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 0B архивов. После распаковки 0B будет занято.

поэтому попробовал 

fant:usrsrc# aptitude -f install kernel-source-2.6.8
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о расширенных состояниях
Инициализация состояний пакетов... Готово
Чтение описаний задач... Готово
Построение базы данных тегов... Готово
Не удалось найти пакеты, содержащих "kernel-source-2.6.8" в своём имени или описании
Ни одного пакета не будет установлено, обновлено или удалено.
0 пакетов обновлено, 0 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 0B архивов. После распаковки 0B будет занято.

подскажите пожалуйста какого репозитария у мну нету???
Очень прошу.
P.S.: моха просит исходники ядра 
fant:homemastelamoxamxser# make clean
fant:homemastelamoxamxser# make install
**********************************************************************
 Debian GNULinux 4.0 
 l 2.6.18-6-k7
 MOXA SmartioIndustio Family Multiport Board Device Driver ver 1.13.5.
 Release Date: 20081114
**********************************************************************
*********************************ERROR********************************
 Unable to locate matching source for kernel 2.6.18-6-k7.
 Please install proper kernel-headersource or contact support@moxa.com.
**********************************************************************
Build Fail! Please check build.log for further information
and send it to support@moxa.com.
make[1]: *** [module] Ошибка 1
make: *** [driver_install] Ошибка 2

а я даже скачать их не могу ((
2009-03-02 23:51:10
Яковлев Се�
  Можно предложить следующий сценарий :
1 Закачиваем хидеры
  apt-get install kernel-source-2.x.y
2. Распаковываем
   cd usrsrc
    tar -xjvf kernel-source-2.x.y.tar.bz2
3. генерим конфиг :
   cd kernel-source-2.x.y
   cp bootconfig-2.x.y-z-arch .config
4. генерим зависимости
    make-kpkg --append-to-version "-z-arch" --revision 2.x.y-z --config old configure
5. Создаем симлинк :
  rm -f libmodules2.x.y-z-archbuild
  ln -s usrsrckernel-source-2.x.y libmodules2.x.y-z-archbuild

По идее , система теперь знает , где у нее хидеры ...
2009-03-03 10:46:40
Яковлев Се�
  Вообще , поставить текущие хидеры :
   apt-get install kernel-source-`uname -r`
Посмотреть список всех доступных хидеров :
   apt-cache search kernel-source
2009-03-03 10:53:01