- Вопрос или проблема
- Ответ или решение
- Как скомпилировать и установить пользовательское ядро mainline на Ubuntu 15.10
- Основные этапы
- Шаг 1: Подготовка системы
- Шаг 2: Установка необходимых зависимостей
- Шаг 3: Клонирование исходного кода ядра Linux
- Шаг 4: Создание новой ветки
- Шаг 5: Копирование конфигурации ядра
- Оптимизация конфигурации
- Шаг 6: Компиляция ядра
- Шаг 7: Установка нового ядра
- Шаг 8: Применение патчей
- Шаг 9: Компиляция с патчами
- Шаг 10: Перезагрузка системы
- Заключение
Вопрос или проблема
Я использую Ubuntu 15.10 на новом ноутбуке, но для того, чтобы получить полную поддержку этого оборудования, мне, очевидно, нужен ядро 4.4 и пользовательский патч. См. здесь, если вас интересуют подробности.
Я знаю о репозиториях PPAs для основных ядер, но, насколько я понимаю, они не предоставляют исходный код. Если это так, то это, похоже, исключает возможность использования PPA для основного ядра, потому что я не могу его патчить. Поэтому я пытался изучить исходный код в git и собрать его, но не могу найти актуальные инструкции.
Может кто-нибудь помочь с инструкциями по сборке ядра 4.4 на 15.10?
Получить и скомпилировать основное ядро, метод git:
см. также: https://wiki.ubuntu.com/KernelTeam/GitKernelBuild
Я делаю это немного по-другому (что нового?).
Необходимы условия (обязательно):
Шаг 1 – это apt-get update
и apt-get dist-upgrade
(т.е. убедитесь, что все обновлено)
Шаг 2
sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge
Шаг 3
sudo apt-get build-dep linux
ИЗМЕНЕНИЕ: Для 24.04 см. этот вопрос и ответ о модификации sources.list, чтобы избежать этой ошибки:
$ sudo apt build-dep linux
Чтение списков пакетов... Готово
E: Вы должны указать некоторые 'deb-src' URIs в вашем sources.list
Шаг 4
sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev
ИЗМЕНЕНИЕ: Для 24.04 некоторые из пакетов больше не существуют, и другие необходимые пакеты включаются предыдущими командами. Поэтому этот шаг пропущен.
Необходимые условия для ядра 4.3:
sudo apt-get install libssl-dev
Шаг 5 – основан на неспособности скомпилировать на новой серверной установке 20.04 от 2019.12.02
sudo apt install flex bison
Шаг 6 – основан на неспособности скомпилировать ядро 5.13 на сервере 20.04 от 2021.07.02
sudo apt install zstd
Необходимые условия (по желанию):
sudo apt-get install git-email git-doc
Часть с git:
mkdir temp-k-git
cd temp-k-git
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
Никогда не работайте в основной ветке master. Всегда создавайте рабочую область.
git checkout -b k44rc8_stock v4.4-rc8
Скопируйте файл конфигурации ядра Ubuntu (уже установленный):
ls -l /boot
cp /boot/config-4.4.0-040400rc8-generic .config
Конфигурационный файл Ubuntu имеет полное отладочное сообщение. Это создает огромное ядро и требует вдвое больше времени для компиляции
scripts/config --disable DEBUG_INFO
Особое примечание с момента выхода ядра 4.4 и если компилировать с использованием Ubuntu 14.04 (я не знаю о 15.10), с более старой версией компилятора c: Он не может компилировать с CONFIG_CC_STACKPROTECTOR_STRONG.
scripts/config --disable CC_STACKPROTECTOR_STRONG
Если ваша версия не имеет сжатия LZ4 (т.е. 16.04), вам также нужно:
scripts/config --disable KERNEL_LZ4
scripts/config --enable KERNEL_GZIP
Особое примечание с момента выхода ядра 5.12-rc1 необходимо переопределить некоторые недавно добавленные сертификаты.
scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
или
scripts/config --disable SYSTEM_TRUSTED_KEYS
Особое примечание с момента выхода ядра 5.14-rc2 необходимо переопределить некоторые другие добавленные сертификаты.
scripts/config --disable SYSTEM_REVOCATION_KEYS
Скомпилируйте ядро:
time make -j9 bindeb-pkg <<< Рекомендуется использовать число процессоров + 1. Используйте меньше, чтобы оставить некоторую отзывчивость для других задач
<<< Я всегда врем сборку ядра.
или
time make -j9 bindeb-pkg LOCALVERSION=-stock <<< Для локализованного имени версии добавьте
или
time make -j9 olddefconfig bindeb-pkg LOCALVERSION=-stock <<< Чтобы автоматически использовать значения по умолчанию для любых новых конфигураций (особенно полезно при бинарной обработке ядра).
Когда сборка завершена, установите ее:
sudo dpkg -i ../linux-headers-4.4.0-rc8-stock_4.4.0-rc8-stock-144_amd64.deb
sudo dpkg -i ../linux-image-4.4.0-rc8-stock_4.4.0-rc8-stock-144_amd64.deb
Итак, на данный момент мы знаем, что основное ядро компилируется нормально, так что переходим к пользовательскому ядру. Создайте новую ветку, примените патчи и скомпилируйте:
$ git checkout -b k44rc8_custom v4.4-rc8
Переключено на новую ветку 'k44rc8_custom'
$ git am plv6_1_3.patch
Применение: cpufreq: intel_pstate: настраиваемый алгоритм получения целевого состояния процессора
$ git am plv6_2_3.patch
Применение: cpufreq: intel_pstate: учет времени не C0
$ git am plv6_3_3.patch
Применение: cpufreq: intel_pstate: учет времени ожидания I/O
$ time make -j9 olddefconfig bindeb-pkg LOCALVERSION=-custom
Учтите, что я намеренно не делаю make clean
, поскольку желательно сэкономить много времени, выполняя инкрементальную сборку. Первый компилятор занял 21 минуту и 26 секунд, но следующий пользовательский компилятор занял всего 4 минуты и 43 секунды.
Вот быстрая версия о том, как установить на дистрибутивах, основанных на Debian:
# Установите зависимости
sudo apt install -y git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache
# Клонируйте ядро
mkdir ~/kernelbuild
cd ~/kernelbuild
git clone --depth=1 -b linux-5.4.y git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
# ^ измените ветку ядра на ту, которую вы используете.
# проверьте с помощью `uname -r` и посмотрите доступный список на www.kernel.org
cd linux-stable
# Построить пользовательское ядро
cp /boot/config-`uname -r` .config # скопируйте конфигурацию с текущего ядра
yes '' | make oldconfig
make clean
make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-custom
# Установить новое ядро
sudo dpkg -i ~/kernelbuild/linux-*.deb
# Перезагрузите
sudo reboot
Если вы перейдете на страницу http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.4-rc8-wily, вы найдете README, указывающий, как получить исходные файлы для 4.4rc8
Инструкции по сборке немного запутанные. Я видел несколько рецептов для сборки ядер, все немного разные. Есть несколько необходимых условий: могут быть и другие, которые нужны для ядра 4.4
sudo apt-get build-dep linux-image-$(uname -r)
sudo apt-get install libncurses5-dev
Затем команды, которые я выполнил для успешной сборки:
chmod a+x debian/scripts/*
chmod a+x debian/scripts/misc/*
nano debian.master/changelog
fakeroot debian/rules clean
fakeroot debian/rules editconfigs
fakeroot debian/rules binary-headers binary-generic skipabis=true
Изменяя файл changelog, чтобы указать, что я создаю собственное ядро, добавляя что-то в конец первого номера версии, который отображается.
Ответ или решение
Как скомпилировать и установить пользовательское ядро mainline на Ubuntu 15.10
Если вы используете Ubuntu 15.10 на новом ноутбуке и нуждаетесь в поддержке аппаратного обеспечения версии 4.4 с пользовательским патчем, вы можете воспользоваться следующими инструкциями по компиляции и установке ядра. Данный процесс состоит из нескольких этапов, начиная с подготовки системы и заканчивая установкой и патчингом ядра.
Основные этапы
Шаг 1: Подготовка системы
Перед тем как приступить к сборке ядра, убедитесь, что ваша система обновлена:
sudo apt-get update
sudo apt-get dist-upgrade
Шаг 2: Установка необходимых зависимостей
Вам понадобятся некоторые пакеты, чтобы успешно собрать ядро. Установите их с помощью следующей команды:
sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev libssl-dev flex bison zstd
Эта команда установит все требуемые зависимости, которые нужны для компиляции ядра.
Шаг 3: Клонирование исходного кода ядра Linux
Создайте временную директорию для сборки ядра и клонируйте репозиторий Linux:
mkdir ~/temp-k-git
cd ~/temp-k-git
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
Шаг 4: Создание новой ветки
Создайте новую ветку для тестирования ядра 4.4:
git checkout -b k44rc8_stock v4.4-rc8
Шаг 5: Копирование конфигурации ядра
Скопируйте конфигурационный файл ядра вашей установленной системы:
cp /boot/config-$(uname -r) .config
Оптимизация конфигурации
Отключите ненужные параметры, которые могут увеличить размер ядра и время компиляции:
scripts/config --disable DEBUG_INFO
scripts/config --disable CC_STACKPROTECTOR_STRONG
Если у вас нет LZ4 сжатия, выполните:
scripts/config --disable KERNEL_LZ4
scripts/config --enable KERNEL_GZIP
Шаг 6: Компиляция ядра
Запустите процесс сборки ядра с использованием всех доступных ядер процессора:
time make -j$(nproc) bindeb-pkg LOCALVERSION=-stock
Процесс может занять некоторое время в зависимости от конфигурации вашего компьютера.
Шаг 7: Установка нового ядра
После завершения компиляции установите ядро:
sudo dpkg -i ../linux-headers-4.4.0-rc8-stock_4.4.0-rc8-stock-144_amd64.deb
sudo dpkg -i ../linux-image-4.4.0-rc8-stock_4.4.0-rc8-stock-144_amd64.deb
Шаг 8: Применение патчей
Создайте новую ветку для настройки ядра с пользовательскими патчами:
git checkout -b k44rc8_custom v4.4-rc8
Примените необходимые патчи с помощью команды git am
:
git am [имя_патча]
Шаг 9: Компиляция с патчами
Соберите ядро с примененными патчами:
time make -j$(nproc) olddefconfig bindeb-pkg LOCALVERSION=-custom
Шаг 10: Перезагрузка системы
После завершения установки нового ядра перезагрузите систему:
sudo reboot
Заключение
Следуя этим инструкциям, вы сможете успешно скомпилировать и установить пользовательское ядро 4.4 на вашей системе Ubuntu 15.10. Обратите внимание, что каждый процесс может потребовать небольших корректировок в зависимости от особенностей вашего оборудования и установленных пакетов. Убедитесь, что внесли все необходимые изменения в конфигурацию ядра, чтобы обеспечить полную поддержку вашего аппаратного обеспечения.