Исходные данные:
Debian 6.0.3-amd64
Kernel 2.6.32
установка по netinstall
из графики Openbox
что надо?
собрать новое ядро серии 3.0.Х руками
с использованием имеющегося конфига
кто готов подробнейшим образом расписать все команды?
Подробнейшая инструкция по сборке ядра
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 это всё>
ерунда какая-то...
модераторы раздела, удалите пост № 2 из ветки, плиз
Исходные данные:
Debian 6.0.3-amd64
Kernel 2.6.32
установка по netinstall
А почему бы не поставить тот же netinstall только Wheezy , уже с 3 ядром?
Вроде все: (заметите ошибки - в студию).
Ставим пакеты, необходимые для компиляции ядра:
[console]$ aptitude install kernel-package libncurses5-dev fakeroot build-essential pkg-config[/console]
Переходим в каталог, в котором собираемся производить сборку. (В этом примере в качестве данного каталога будет рассматриваться /usr/src). Скачиваем и распаковываем исходники ядра:
[console]$ cd /usr/src && wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.0.tar.bz2 && tar xjf linux-3.0.tar.bz2[/console]
Переходим в папку с исходниками:
[console]$ cd /usr/src/linux-версия[/console]
Если вы собираетесь накладывать патчи на ядро, ставим необходимую для наложения патчей программу:
[console]$ aptitude install patch[/console]
Сами же патчи накладываются следующими командами:
[console]$ patch -p1 -i patch-версия[/console]
Если патч запакован в архив, то команда будет выглядеть так:
[console]$ bzip2 -dc /usr/src/patch-версия | patch -p1[/console]
-//////// Конфигурирование
Конфигурация ядра читается из файла .config. Для создания оного можно воспользоваться старым файлом конфигурации ядра, который лежит в /boot:
[console]$ cp /boot/config-$( uname -r ) .config[/console]
Либо создать новый.
Для конфигурирования ядра можно использовать одну из нижеперечисленных команд:
[console]$ make nconfig[/console]
Эта команда поддерживается, начиная с ядра версии 2.6.35, не требует установки дополнительных пакетов.
[console]$ make menuconfig[/console]
Старый аналог make nconfig
[console]$ make xconfig[/console]
Эта программа конигурации имеет графический интерфей, использующий qt. Если собирается ядро младше версии 2.6.38, то ставим следующие пакеты:
[console]$ aptitude install qt3-dev-tools[/console]
Если 2.6.38 или старше, то:
[console]$ aptitude install libqt4-dev
$ make gconfig[/console]
Тоже имеет графический интерфейс, но в отличие от xconfig, использует gtk, а не qt.
Для работы с ней ставим следующие пакеты:
[console]$ aptitude install libgtk2.0-dev libglib2.0-dev libglade2-dev
$ make oldconfig[/console]
При использовании этой команды, файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра.
[console]$ make defconfig[/console]
При использовании defconfig файл конфигурации создается, основываясь на значения по умолчанию.
[console]$ make localmodconfig[/console]
При использовании этой команды, (работает в ядрах 2.6.32 и новее) сравниваются загруженные в данный момент модули и те, чья поддержка включена в ядре, если находятся лишние модули, то они отключаются.
[console]$ make localyesconfig[/console]
Скрипт для отказа от initrd. Все необходимые модули включаются в ядро.
-//////// Компиляция ядра и сборка в пакеты
Компиляция и сборка ядра в пакеты производится следующей командой:
[console]$ make-kpkg --initrd --revision=mybuild.1.0 kernel_image kernel_headers[/console]
Также можно задать количество потоков для компиляции. В этом случае команда будет выглядеть так:
[console]$ CONCURRENCY_LEVEL=N make-kpkg --initrd --revision=mybuild.1.0 kernel_image kernel_headers[/console]
где N = количество потоков.
-//////// Установка
После компиляции ядра в каталоге создаются два deb-пакета, которые ставятся командами
[console]$ dpkg -i linux-image-версия.deb
$ dpkg -i linux-headers-версия.deb
[/console]
После чего grub автоматически прописывает их в своем конфигурационном файле.
Теперь можно загрузиться с новым ядром. Если при конфигурировании вы не допустили никаких критических ошибок, всё должно быть хорошо.
ы.
Исходники Zen Ядра из git:
[console]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[/console]
Попробывал обновить до нового ядра
Дошел до этого шага
Переходим в папку с исходниками:
Консоль:
$ 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
что в последней команде я не правильно указал?
Я пока только скачал ядро как было указано в предыдущих шагах, а где взять патчи не понял.
Epolyanichev, делай пока без патчей, и да в debian не особо оно надо собирать таким способом ядра, есть готовые deb'ы
newzenon, спасибо, я вчера тоже порылся в сети, но есть пара вопросов:
1. make menuconfig (остановимся на этой команде)
когда я набираю эту команду открывается программа по конфигурации ядра
а как мне с ней работать? я не хочу ничего менять в ядре (в этот раз)
и если не хочу, то наверно можно проскочить этот момент?
т.е. выглядеть это будет так:
[console]$ cp /boot/config-2.6.32-5-amd64 .config
$ make-kpkg --initrd --revision=3.0-termo kernel_image kernel_headers[/console]
и второй вопрос
а сколько пространства на корневом разделе необходимо для работы с ядром?
у меня было 2,2Гб и мне не хватило места для сборки ядра :(
Termo, из make menuconfig можно не меняя ничего выйти, или пропустить этот момент.
Я кроме Zen ядра в дебиан больше ничего не собирал за не надобностью.
Конфиг от него брал тут: http://liquorix.net/sources/
На amd http://liquorix.net/sources/3.0/config.amd64
Собирать ядро не обязательно в корне, главное потом установочные deb файлы получить.
Например zen в home:
[console]mkdir /home/tmp
cd /home/tmp
[/console]
Git'ом скачиваем исходники:
[console]# 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.[/console]
Вот они:
[console]# 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/[/console]
Скачиваем конфиг liquorix.net:
[console]# 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]
[/console]
Копируем его в .config
[console]# cp config.amd64 .config[/console]
Дальше собираем.
ы. Можно checkinstall'ом собирать кстати...
ыы. В /usr/src/linux-kernel - это просто как бы общепринято.
Сейчас /usr правда на gentoo - 16Gb из них 12 занято.
тогда какой смысл в него заходить?из make menuconfig можно не меняя ничего выйти
давай еще раз - если я не хочу ничего менять в файле config, то я в menuconfig не захожу
а после копирования конфига сразу начинаю сборку ядра, так? или не так?
а после копирования конфига сразу начинаю сборку ядра, так?
Да, все так.
Я собирал по этому мануалу) http://habrahabr.ru/blogs/linux/82600/ очень подробный) smile