Есть такой интересный проект кастомного ядра pf-kernel, который обещает много плюшек и повышение производительности на 15-20%. Попробуем его применить к Ubuntu 14.04 на последнем ядре 4.0

Устанавливаем зависимости и тулзы

sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get -y install fakeroot build-essential atool crash kexec-tools makedumpfile libncurses5 libncurses5-dev libelf-dev libdw-dev binutils-dev kernel-package libc6-dev
sudo apt-get -y build-dep kernel-package linux-meta

При установке kexec-tools установщик задаст вопрос - использовать ли kexec при перезагрузке? Я ответил Y. kexec-tools дает возможность быстрой перезагрузки путем обновления ядра в памяти, минуя фазу с участием BIOS. Чтобы отключить kexec необходимо в файле конфигурации /etc/default/kexec установить LOAD_KEXEC=false.

Получаем исходники ядра и соответствующий патч

Создаем папку где будем собирать и скачиваем ядро и патч:

mkdir pf-kernel
cd pf-kernel
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.1.tar.xz
wget https://pf.natalenko.name/sources/4.0/patch-4.0-pf3.xz

Распаковываем:

tar -xvf ./linux-4.0.1.tar.xz
aunpack patch-4.0-pf3.xz

Применяем патч

Переходим в папку я ядром и проверяем как применяется патч:

cd ./linux-4.0.1/
patch -p1 --dry-run < ../patch-4.0-pf3

У меня проблемы возникли только с Makefile. Я их исправлял вручную после патча:

patch -p1 < ../patch-4.0-pf3

У меня была ошибочка:

patching file Makefile
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.rej

Оказалось что не пропатчились строки EXTRAVERSION = и NAME =. Поэтому я полез в Makefile вручную и прописал:

EXTRAVERSION = -pf3

А NAME оставил как есть.

Конфигурируем новое ядро

Копируем текущий конфиг ядра:

cp /boot/config-`uname -r` .config

Чтобы собрать без поддержки лишних модулей:

make localmodconfig

Эта команда сравнивает модули, поддерживаемые в текущем ядре и отключает лишние в новом,а настройки сохраняет в файлик .config. Конфигурационный скрипт задаст вопросы о включении-отключении модулей. Конечно, нужно включить BFQ, BFC и TuxOnIce для того, чтобы увидеть эффект от нового ядра.

Кроме того, можно собрать ядро используя старый конфиг:

make oldconfig

А также полностью сконфигурировать заново:

make menuconfig

Собираем pf-kernel

После конфигурации почистим сборочное пространство:

make-kpkg clean

Запустим процесс сборки (обязательно с правами root):

sudo CONCURRENCY_LEVEL=`getconf _NPROCESSORS_ONLN` fakeroot make-kpkg --initrd kernel_image kernel_headers

В результате должны получиться два пакета:

linux-headers-4.0.1-pf3_4.0.1-pf3-10.00.Custom_amd64.deb
linux-image-4.0.1-pf3_4.0.1-pf3-10.00.Custom_amd64.deb

теперь ставим их:

dpkg -i ./linux-*.deb

После этого можно перезагрузиться и почистить пакеты со старыми ядрами. Найдеи эти пакеты:

dpkg -l | grep image
dpkg -l | grep headers

И удалим лишнее:

sudo apt-get purge _____имена_пакетов______
Enter your comment. Wiki syntax is allowed:
 
  • linux_faq/установка_ядра_pf-kernel_4._на_ubuntu_14.04.txt
  • Last modified: 2019/02/11 09:13
  • by 127.0.0.1