- Вопрос или проблема
- Ответ или решение
- Как собрать ядро Ubuntu 24.04
- 1. Установка необходимых пакетов
- 2. Получение исходного кода ядра
- 3. Настройка рабочего окружения
- 4. Редактирование конфигурации (по необходимости)
- 5. Очистка предыдущих сборок
- 6. Сборка ядра
- Решение проблемы с FAKEROOT
- 7. Применение патчей к драйверам
- 8. Установка нового ядра
- Заключение
Вопрос или проблема
Я установил сервер 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. Убедитесь, что все необходимые зависимости установлены, и тестируйте собранное ядро на целевом оборудовании перед его развертыванием в рабочей среде.