HowTo: Собираем ядро 3.5 с патчами pf-kernel.

Вышла очередная версия патчсета pf-kernel для свежего ядра Linux v3.5.

В данную версию вошли:
Подготовлены бинарные сборки для тех, кто не хочет тратить время на самостоятельную сборку.
Сборка не составляет трудностей. Во первых удовлетворим зависимости:
sudo apt-get -y install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge git-core libncurses5 libncurses5-dev libelf-dev libdw-dev binutils-dev kernel-package
sudo apt-get build-dep kernel-package linux-meta
Затем добудем ядро и сам патч. Установка патча подразумевается на чистое ядро 3.5. Скачиваем с kernel.org и сам патч по ссылке Latest Patch. Распакуем оба архива в ~/pf-kernel
Приступим к сборке.
  • Получим привилегии суперпользователя:
sudo -s
  • Перейдем в директорию с исходниками ядра.
cd ~/pf-kernel/linux-3.5
  • Применим патч (для версии патча 3.5.4. Для более новых версий измените соответсвующую цифру в номере версии)
patch -p1 --dry-run < ../patch-3.5.4-pf #Запустит патч без применения изменений. Для проверки.
patch -p1 < ../patch-3.5.4-pf #Применим патч.
  • Скопируем текущий конфиг ядра.
cp /boot/config-`uname -r` .config
  • Чтобы собрать без поддержки лишних модулей:
В ядрах >=2.6.32 добавили скрипт, который сравнивает загруженные в данный момент модули и те, чья поддержка включена в ядре, если находит лишние модули, то он их отключает, сохраняя настройки в «.config»
make localmodconfig
  • Чтобы собрать ядро, используя старый конфиг:
make oldconfig
При сборке будут заданы несколько вопросов по поводу добавления изменений. Примем BFQ, BFC, TuxOnIce и прочие плюшки.
  • Для экстремалов можно собрать конфиг с нуля.
make menuconfig
  • Почистим директорию с исходниками от мусора.
make-kpkg clean
  • И наконец соберем само ядро (на core2duo@1.3GHz заняло всего час).
CONCURRENCY_LEVEL=`getconf _NPROCESSORS_ONLN` fakeroot make-kpkg --initrd kernel_image kernel_headers

После сборки в директории ~/pf-kernel образуются два deb-пакета с ядром. Просто установим их:
dpkg -i linux-*
И перезагрузимся. В случае неудачи - при загрузке выбрать старое ядро и удалить новое.

16 comments:

Post a Comment