Как собрать ядро Ubuntu 24.04?

Вопрос или проблема

Я установил сервер Ubuntu 24.04 на физическом сервере. Моя версия ядра:

# uname -r
6.8.0-38-generic

Используя только что установленную Ubuntu 24.04, я следовал инструкциям на:

https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

Я получил исходный код с помощью apt, а не git. Вот что было загружено:

# ls -al
total 226600
drwxrwxr-x  4 root root      4096 Jul 17 16:32 .
drwxrwxrwx  6 root root        65 Jul 17 15:08 ..
drwxr-xr-x 29 root root      4096 Jul 17 16:32 linux-6.8.0
-rw-r--r--  1 root root   1919488 Jun 10 10:49 linux_6.8.0-38.38.diff.gz
-rw-r--r--  1 root root      9222 Jun 10 10:49 linux_6.8.0-38.38.dsc
-rw-r--r--  1 root root 230060117 Mar 15 09:29 linux_6.8.0.orig.tar.gz
drwxr-xr-x  3 root root        83 Jul 17 17:01 linux-signed-6.8.0
-rw-r--r--  1 root root      2620 Jun 10 10:49 linux-signed_6.8.0-38.38.dsc
-rw-r--r--  1 root root     26760 Jun 10 10:49 linux-signed_6.8.0-38.38.tar.xz

Мне не нужно изменять никакие конфигурационные файлы.

Затем я установил текущий каталог на корень директории ядра, которую я скачал:

# cd linux-6.8.0

Следующий шаг не работает:

# fakeroot debian/rules binary-headers binary-generic binary-perarch
fakeroot: FAKEROOTKEY set to 724713999
fakeroot: nested operation not yet supported

Я не смог понять, что я делаю неправильно?

Вот что я сделал, чтобы собрать ядро на ubuntu 24.04. Из истории bash:

 1000  cd linux-6.8.0/
 1002  chmod a+x debian/rules
 1003  chmod a+x debian/scripts/*
 1004  chmod a+x debian/scripts/misc/*
 1011  apt install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf llvm
 1012  fakeroot debian/rules editconfigs
 1015  pico debian.master/changelog 
 1016  fakeroot debian/rules clean
 1017  fakeroot debian/rules binary-headers binary-generic binary-perarch
 1018  echo $?

Отредактировано для ясности, поэтому номера строк непоследовательные. Команда pico в строке 1015 была для добавления пользовательской строки версии. Для меня код возврата был ноль, после нескольких часов сборки на этом старом компьютере.

Я согласен, что вы должны быть в состоянии собрать ядро. В моем случае я хотел применить патч к драйверу wifi, который вызывал сообщения об ошибках в dmesg и заставлял стек wifi/сети перестать работать (я применил патч broadcom на https://gist.github.com/joanbm/9cd5fda1dcfab9a67b42cc6195b7b269).

.

Ответ или решение

Как собрать ядро Ubuntu 24.04

Сборка собственного ядра на сервере Ubuntu 24.04 включает несколько этапов. Ваша проблема с ошибкой "fakeroot: nested operation not yet supported" указывает на конфликты в работе с утилитой fakeroot. Давайте рассмотрим все шаги, чтобы собрать ядро и избежать возможных проблем.

1. Установка необходимых пакетов

Перед началом необходимо убедиться, что у вас установлены все необходимые зависимости. Выполните следующую команду:

sudo apt update
sudo apt install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf llvm

Эти пакеты обеспечивают поддержку необходимых библиотек и инструментов для сборки ядра.

2. Получение исходного кода ядра

Вы уже загрузили исходный код ядра, используя apt, и у вас есть директория linux-6.8.0. При необходимости, чтобы получить исходный код, также можно использовать:

apt source linux-image-generic

3. Настройка рабочего окружения

Теперь перейдите в директорию с исходным кодом ядра:

cd linux-6.8.0

Также убедитесь, что у вас есть права на выполнение необходимых скриптов:

chmod a+x debian/rules
chmod a+x debian/scripts/*
chmod a+x debian/scripts/misc/*

4. Редактирование конфигурации (по необходимости)

Если вы хотите применить изменения или патчи, это можно сделать с помощью команды:

fakeroot debian/rules editconfigs

Вы упомянули, что редактировали файл changelog. Убедитесь, что редактирование прошло успешно.

5. Очистка предыдущих сборок

Перед сборкой нового ядра следует очистить предыдущие сборки. Это можно сделать с помощью:

fakeroot debian/rules clean

6. Сборка ядра

Теперь к самой важной части — сборке ядра. Если вы хотите собрать только заголовки, общее и архитектурное ядро, используйте команду:

fakeroot debian/rules binary-headers binary-generic binary-perarch

Решение проблемы с FAKEROOT

Если возникает проблема с fakeroot, попробуйте выполнить сборку ядра без использования fakeroot, если это позволяет ваша версия системы. Например, вы можете попробовать запустить:

sudo debuild -b

Или, если это не решает проблему, попробуйте выполнить команду fakeroot в индивидуальном терминале или даже изучите возможность использования другого подхода, например fakechroot или sudo вместо fakeroot, если это допустимо в вашей ситуации.

7. Применение патчей к драйверам

Чтобы применить патч к драйверу Wi-Fi, как вы планируете, вам нужно сначала переместить патчи в соответствующую директорию, а затем внести изменения в код перед сборкой:

  • Скачайте патч и переместите его в директорию с исходным кодом.
  • Примените патч командой:
patch -p1 < /путь/к/вашему/патчу.patch

После этого выполните сборку заново.

8. Установка нового ядра

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

sudo dpkg -i ../*.deb

Не забудьте перезагрузить систему, чтобы новое ядро вступило в силу.

Заключение

Сборка ядра может быть сложной задачей, но следуя этому руководству и устраняя возникающие проблемы, такие как ошибка fakeroot, вы сможете успешно создать и установить новое ядро для своего сервера Ubuntu 24.04. Убедитесь, что все необходимые зависимости установлены, и тестируйте собранное ядро на целевом оборудовании перед его развертыванием в рабочей среде.

Оцените материал
Добавить комментарий

Капча загружается...