1

Исходные данные:
Debian 6.0.3-amd64
Kernel 2.6.32
установка по netinstall
из графики Openbox

что надо?
собрать новое ядро серии 3.0.Х руками
с использованием имеющегося конфига

кто готов подробнейшим образом расписать все команды?

ПатреГ не любит Gnome...

2

cd /path/to/linux/
cp /path/to/old_config .config
make oldconfig
<много вопросов>
make menuconfig
<подрихтовать ручками, проверить всё ли нужное есть>
make
make modules_install
cp arch/{x86,x86_64}/boot/bzimage /boot/my.super.mega.kernel # нужное подчеркнуть
vim /boot/grub/menu.lst
?????
PROFIT!!!
<если не думать о сборке initrd это всё>

95% процентов проблем находятся между клавиатурой и стулом.

3

ерунда какая-то...
модераторы раздела, удалите пост № 2 из ветки, плиз

ПатреГ не любит Gnome...

4

Исходные данные:
Debian 6.0.3-amd64
Kernel 2.6.32
установка по netinstall

А почему бы не поставить тот же netinstall только Wheezy , уже с 3 ядром?

Ничто из того, что поддаётся объяснению, не существует.

5

Вроде все: (заметите ошибки - в студию).
Ставим пакеты, необходимые для компиляции ядра:

 Консоль:
$ aptitude install kernel-package libncurses5-dev fakeroot build-essential pkg-config

Переходим в каталог, в котором собираемся производить сборку. (В этом примере в качестве данного каталога будет рассматриваться /usr/src). Скачиваем и распаковываем исходники ядра:
 Консоль:
$ cd /usr/src && wget http://www.kernel.org/pub/linux/kernel/ … .0.tar.bz2 && tar xjf linux-3.0.tar.bz2

Переходим в папку с исходниками:
 Консоль:
$ cd /usr/src/linux-версия

Если вы собираетесь накладывать патчи на ядро, ставим необходимую для наложения патчей программу:
 Консоль:
$ aptitude install patch

Сами же патчи накладываются следующими командами:
 Консоль:
$ patch -p1 -i patch-версия

Если патч запакован в архив, то команда будет выглядеть так:
 Консоль:
$ bzip2 -dc /usr/src/patch-версия | patch -p1

-//////// Конфигурирование
Конфигурация ядра читается из файла .config. Для создания оного можно воспользоваться старым файлом конфигурации ядра, который лежит в /boot:

 Консоль:
$ cp /boot/config-$( uname -r ) .config

Либо создать новый.
Для конфигурирования ядра можно использовать одну из нижеперечисленных команд:
 Консоль:
$ make nconfig

Эта команда поддерживается, начиная с ядра версии 2.6.35, не требует установки дополнительных пакетов.
 Консоль:
$ make menuconfig

Старый аналог make nconfig
 Консоль:
$ make xconfig

Эта программа конигурации имеет графический интерфей, использующий qt. Если собирается ядро младше версии 2.6.38, то ставим следующие пакеты:
 Консоль:
$ aptitude install qt3-dev-tools

Если 2.6.38 или старше, то:
 Консоль:
$ aptitude install libqt4-dev
$ make gconfig

Тоже имеет графический интерфейс, но в отличие от xconfig, использует gtk, а не qt.
Для работы с ней ставим следующие пакеты:
 Консоль:
$ aptitude install libgtk2.0-dev libglib2.0-dev libglade2-dev
$ make oldconfig

При использовании этой команды, файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра.
 Консоль:
$ make defconfig

При использовании defconfig файл конфигурации создается, основываясь на значения по умолчанию.
 Консоль:
$ make localmodconfig

При использовании этой команды, (работает в ядрах 2.6.32 и новее) сравниваются загруженные в данный момент модули и те, чья поддержка включена в ядре, если находятся лишние модули, то они отключаются.
 Консоль:
$ make localyesconfig

Скрипт для отказа от initrd. Все необходимые модули включаются в ядро.

-//////// Компиляция ядра и сборка в пакеты
Компиляция и сборка ядра в пакеты производится следующей командой:

 Консоль:
$ make-kpkg --initrd --revision=mybuild.1.0 kernel_image kernel_headers

Также можно задать количество потоков для компиляции. В этом случае команда будет выглядеть так:
 Консоль:
$ CONCURRENCY_LEVEL=N make-kpkg --initrd --revision=mybuild.1.0 kernel_image kernel_headers

где N = количество потоков.

-//////// Установка
После компиляции ядра в каталоге создаются два deb-пакета, которые ставятся командами

 Консоль:
$ dpkg -i linux-image-версия.deb
$ dpkg -i linux-headers-версия.deb

После чего grub автоматически прописывает их в своем конфигурационном файле.
Теперь можно загрузиться с новым ядром. Если при конфигурировании вы не допустили никаких критических ошибок, всё должно быть хорошо.


ы.
Исходники Zen Ядра из git:

 Консоль:
cd /usr/src
git clone --depth 1 git://zen-kernel.org/kernel/zen-stable.git linux-2.6-zen # alternatively zen.git
ln -s linux-2.6-zen linux

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

6

Попробывал обновить до нового ядра
Дошел до этого шага
Переходим в папку с исходниками:
Консоль:
$ cd /usr/src/linux-версия

У меня:

root@evgen2:/usr/src# cd /usr/src/linux-3.0
root@evgen2:/usr/src/linux-3.0# $ aptitude install patch
bash: $: команда не найдена
root@evgen2:/usr/src/linux-3.0# aptitude install patch
Ни одного пакета не будет установлено, обновлено или удалено.
0 пакетов обновлено, 0 установлено новых, 0 пакетов отмечено для удаления, и 279 пакетов не обновлено.
Необходимо получить 0 B архивов. После распаковки 0 B будет занято.
                                                 
root@evgen2:/usr/src/linux-3.0# patch -p1 -i patch-^C
root@evgen2:/usr/src/linux-3.0# patch -p1 -i patch linux-3.0
patch: **** Can't open patch file patch : No such file or directory

7 (12.10.2011 20:57:04 отредактировано Epolyanichev)

что в последней команде я не правильно указал?

Я пока только скачал ядро как было указано в предыдущих шагах, а где взять патчи не понял.

8

Epolyanichev, делай пока без патчей, и да в debian не особо оно надо собирать таким способом ядра, есть готовые deb'ы

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

9

newzenon, спасибо, я вчера тоже порылся в сети, но есть пара вопросов:
1. make menuconfig (остановимся на этой команде)
когда я набираю эту команду открывается программа по конфигурации ядра
а как мне с ней работать? я не хочу ничего менять в ядре (в этот раз)
и если не хочу, то наверно можно проскочить этот момент?
т.е. выглядеть это будет так:

 Консоль:
$ cp /boot/config-2.6.32-5-amd64 .config
$ make-kpkg --initrd --revision=3.0-termo kernel_image kernel_headers

и второй вопрос
а сколько пространства на корневом разделе необходимо для работы с ядром?
у меня было 2,2Гб и мне не хватило места для сборки ядра  ac

ПатреГ не любит Gnome...

10

Termo, из make menuconfig можно не меняя ничего выйти, или пропустить этот момент.
Я кроме Zen ядра в Debian больше ничего не собирал за не надобностью.
Конфиг от него брал тут: http://liquorix.net/sources/
На amd http://liquorix.net/sources/3.0/config.amd64

Собирать ядро не обязательно в корне, главное потом установочные deb файлы получить.
Например zen в home:

 Консоль:
mkdir /home/tmp
cd /home/tmp

Git'ом скачиваем исходники:
 Консоль:
# git clone --depth 1 git://zen-kernel.org/kernel/zen-stable.git linux-2.6-zen
Cloning into linux-2.6-zen...
remote: Counting objects: 83556, done.
remote: Compressing objects: 100% (73545/73545), done.
remote: Total 83556 (delta 43722), reused 35239 (delta 8989)
Receiving objects: 100% (83556/83556), 126.18 MiB | 2.20 MiB/s, done.
Resolving deltas: 100% (43722/43722), done.

Вот они:
 Консоль:
# cd linux-2.6-zen
# ls
COPYING  Documentation/  Kconfig      Makefile  REPORTING-BUGS  block/   drivers/   fs/       init/  kernel/  mm/   samples/  security/  tools/  virt/
CREDITS  Kbuild          MAINTAINERS  README    arch/           crypto/  firmware/  include/  ipc/   lib/     net/  scripts/  sound/     usr/

Скачиваем конфиг liquorix.net:
 Консоль:
# wget http://liquorix.net/sources/3.0/config.amd64
--2011-10-13 02:57:52--  http://liquorix.net/sources/3.0/config.amd64
Распознаётся liquorix.net... 174.120.170.208
Подключение к liquorix.net|174.120.170.208|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 131096 (128K) [text/plain]
Сохранение в каталог: ««config.amd64»».

100%[================================================================================================================================================>] 131,096      111K/s   за 1.2s   

2011-10-13 02:57:54 (111 KB/s) - «config.amd64» saved [131096/131096]


Копируем его в .config
 Консоль:
# cp config.amd64 .config

Дальше собираем.
ы. Можно checkinstall'ом собирать кстати...
ыы. В /usr/src/linux-kernel - это просто как бы общепринято.
Сейчас /usr правда на gentoo - 16Gb из них 12 занято.

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

11

newzenon пишет:

из make menuconfig можно не меняя ничего выйти

тогда какой смысл в него заходить?
давай еще раз - если я не хочу ничего менять в файле config, то я в menuconfig не захожу
а после копирования конфига сразу начинаю сборку ядра, так? или не так?

ПатреГ не любит Gnome...

12

Termo пишет:

а после копирования конфига сразу начинаю сборку ядра, так?

Да, все так.

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

13

Я собирал по этому мануалу) http://habrahabr.ru/blogs/linux/82600/ очень подробный)  smile