- Ubuntu Wiki
- Build Environment
- Obtaining the source for an Ubuntu release
- apt-get
- git
- Modifying the configuration
- Building the kernel
- Testing the new kernel
- Debug Symbols
- See also
- Пошаговое руководство как собрать ядро Linux с нуля
- Сборка ядра Linux
- Шаг 1. Загрузите исходный код
- Шаг 2: извлеките исходный код
- Шаг 3: Установите необходимые пакеты
- Шаг 4: Настройте ядро
- Шаг 5: Соберите ядро
- Шаг 6. Обновите загрузчик (необязательно)
- Шаг 7: перезагрузите и проверьте версию ядра
- Итог
Ubuntu Wiki
The majority of users that are interested in building their own kernel are doing so because they have installed Ubuntu on their system and they wish to make a small change to the kernel for that system. In many cases the user just wants to make a kernel configuration change.
The purpose of this page is to give that user a minimum amount of information for them to meet the goal of making a simple change to the kernel, building it and installing their kernel. It is not intended to be the definitive guide to doing Ubuntu kernel development.
Build Environment
sudo apt-get build-dep linux linux-image-$(uname -r)
sudo apt-get install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf llvm
deb-src http://archive.ubuntu.com/ubuntu disco main deb-src http://archive.ubuntu.com/ubuntu disco-updates main
Obtaining the source for an Ubuntu release
There are a number of different ways of getting the kernel sources. The two main ways will be documented here.
If you have installed a version of Ubuntu and you want to make changes to the kernel that is installed on your system, use the apt-get method (described below) to obtain the sources.
However, if you wish to get the most up to date sources for the Ubuntu release you are running and make changes to that, use the git method (described below) to obtain the sources.
apt-get
apt-get source linux-image-unsigned-$(uname -r)
git
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-.git
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-disco.git
Modifying the configuration
chmod a+x debian/rules chmod a+x debian/scripts/* chmod a+x debian/scripts/misc/* LANG=C fakeroot debian/rules clean LANG=C fakeroot debian/rules editconfigs # you need to go through each (Y, Exit, Y, Exit..) or get a complaint about config later
This takes the current configuration for each architecture/flavour supported and calls menuconfig to edit its config file. The chmod is needed because the way the source package is created, it loses the executable bits on the scripts.
In order to make your kernel «newer» than the stock Ubuntu kernel from which you are based you should add a local version modifier. Add something like «+test1» to the end of the first version number in the debian.master/changelog file, before building. This will help identify your kernel when running as it also appears in uname -a. Note that when a new Ubuntu kernel is released that will be newer than your kernel (which needs regenerating), so care is needed when upgrading. NOTE: do not attempt to use CONFIG_LOCALVERSION as this _will_ break the build.
Building the kernel
LANG=C fakeroot debian/rules clean # quicker build: LANG=C fakeroot debian/rules binary-headers binary-generic binary-perarch # if you need linux-tools or lowlatency kernel, run instead: LANG=C fakeroot debian/rules binary
cd .. ls *.deb linux-headers-4.8.0-17_4.8.0-17.19_all.deb linux-headers-4.8.0-17-generic_4.8.0-17.19_amd64.deb linux-image-4.8.0-17-generic_4.8.0-17.19_amd64.deb
on later releases you will also find a linux-extra- package which you should also install if present.
Testing the new kernel
sudo dpkg -i linux*4.8.0-17.19*.deb sudo reboot
Debug Symbols
sudo apt-get install pkg-config-dbgsym LANG=C fakeroot debian/rules clean LANG=C fakeroot debian/rules binary-headers binary-generic binary-perarch skipdbg=false
See also
Kernel Git Guide | More information about using git to pull down the kernel sources. |
ARM Cross Compile | For more info about ARM and cross compilation. |
Kernel/BuildYourOwnKernel (последним исправлял пользователь b-stolk 2022-09-08 00:38:14)
The material on this wiki is available under a free license, see Copyright / License for details.
Пошаговое руководство как собрать ядро Linux с нуля
Ядро Linux является основой Unix-подобных операционных систем. Ядро отвечает за связь между оборудованием и программным обеспечением и за распределение доступных ресурсов.
Все дистрибутивы Linux основаны на предопределенном ядре. Но если вы хотите отключить несколько параметров и драйверов или попробовать экспериментальные исправления, вам необходимо собрать ядро Linux.
В этом пошаговом руководстве вы узнаете, как собрать и скомпилировать ядро Linux с нуля.
Сборка ядра Linux
Процесс создания ядра Linux состоит из семи простых шагов. Однако процедура требует значительного времени для завершения, в зависимости от скорости системы.
Примечание. Если версия на веб-сайте ядра не совпадает с версией из приведенных ниже шагов, используйте эти команды и замените номер версии ядра.
Шаг 1. Загрузите исходный код
1. Посетите официальный сайт ядра www.kernel.org и загрузите последнюю версию. Загруженный файл содержит сжатый исходный код.
2. Откройте терминал и используйте команду wget для загрузки исходного кода ядра Linux:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.6.tar.xz
По завершении загрузки в выходных данных отображается сообщение «saved».
Шаг 2: извлеките исходный код
Когда файл будет готов, запустите команду tar , чтобы извлечь исходный код:
Вывод отображает извлеченный исходный код ядра:
Шаг 3: Установите необходимые пакеты
Перед сборкой ядра установите дополнительные пакеты. Для этого запустите эту команду:
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
Команда, которую мы использовали выше, устанавливает следующие пакеты:
- git — отслеживает и записывает все изменения исходного кода во время разработки. Это также позволяет отменить изменения.
- fakeroot — упаковочный инструмент, создающий фальшивую корневую среду.
- build-essential — Устанавливает инструменты разработки, такие как C, C++, gcc и g++.
- ncurses-dev — Библиотека программирования, предоставляющая API для текстовых терминалов.
- xz-utils — обеспечивает быстрое сжатие и распаковку файлов.
- libssl-dev — поддерживает SSL и TSL, которые шифруют данные и делают интернет-соединение безопасным.
- bc (Basic Calculator) — математический язык сценариев, поддерживающий интерактивное выполнение операторов.
- flex (Fast Lexical Analyzer Generator) — генерирует лексические анализаторы, преобразующие символы в токены.
- libelf-dev — выдает общую библиотеку для управления файлами ELF (исполняемые файлы, дампы ядра и объектный код)
- bison — генератор парсера GNU, который преобразует описание грамматики в программу на языке C.
Шаг 4: Настройте ядро
Исходный код ядра Linux поставляется с конфигурацией по умолчанию. Однако вы можете настроить его под свои нужды. Для этого выполните следующие действия:
1. Перейдите к каталогу linux-5.9.6. с помощью команды cd :
2. Скопируйте существующий файл конфигурации с помощью команды cp :
cp -v /boot/config-$(uname -r) .config
3. Чтобы внести изменения в файл конфигурации, выполните команду make :
Команда запускает несколько скриптов, которые затем открывают меню конфигурации:
4. Меню конфигурации включает в себя такие параметры, как прошивка, файловая система, сеть и параметры памяти. Используйте стрелки, чтобы сделать выбор, или выберите HELP, чтобы узнать больше о вариантах. Когда вы закончите вносить изменения, выберите SAVE, а затем выйдите из меню.
Примечание. Изменение настроек некоторых параметров может привести к тому, что ядро не будет работать. Если вы не знаете, что изменить, оставьте настройки по умолчанию.
Шаг 5: Соберите ядро
1. Начните сборку ядра, выполнив следующую команду:
Процесс сборки и компиляции ядра Linux занимает некоторое время.
Терминал перечисляет все компоненты ядра Linux: управление памятью, драйверы оборудования, драйверы файловой системы, сетевые драйверы и управление процессами.
2. Установите необходимые модули с помощью этой команды:
sudo make modules_install
3. Наконец, установите ядро, набрав:
Вывод показывает готово, когда закончено:
Шаг 6. Обновите загрузчик (необязательно)
Загрузчик GRUB — это первая программа, которая запускается при включении системы.
Команда make install выполняет этот процесс автоматически, но вы также можете сделать это вручную.
1. Обновите initramfs до установленной версии ядра:
sudo update-initramfs -c -k 5.9.6
2. Обновите загрузчик GRUB с помощью этой команды:
Терминал выведет процесс и подтверждающее сообщение:
Шаг 7: перезагрузите и проверьте версию ядра
Когда вы выполните описанные выше действия, перезагрузите компьютер.
Когда система загрузится, проверьте версию ядра с помощью команды uname :
Терминал покажет текущую версию ядра Linux.
Итог
В этом пошаговом руководстве вы узнали, как собрать ядро Linux с нуля и установить необходимые пакеты.