How To Build Linux Kernel: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
Строка 32: | Строка 32: | ||
git submodule init; git submodule update #инициализируйте внешние модули | git submodule init; git submodule update #инициализируйте внешние модули | ||
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- mxs_wirenboard_defconfig #установите конфиг для сборки под Wiren Board | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- mxs_wirenboard_defconfig #установите конфиг для сборки под Wiren Board | ||
== Редактирование параметров ядра == | |||
<syntaxhighlight lang="bash"> | |||
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Посмотреть изменения относительно стандартного конфига === <!--T:15--> | |||
<!--T:16--> | |||
./config_diff.sh | |||
=== Применение изменений в стандартный конфиг === <!--T:17--> | |||
<!--T:18--> | |||
Этот пункт нужен, чтобы изменить стандартный конфиг Wiren Board, например чтобы отправить патч или pull request. | |||
cd KERNEL | |||
<!--T:19--> | |||
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- savedefconfig | |||
<!--T:20--> | |||
cp defconfig ./arch/arm/configs/mxs_wirenboard_defconfig | |||
==Сборка== <!--T:7--> | ==Сборка== <!--T:7--> | ||
Строка 54: | Строка 77: | ||
* tools/scp_kernel_latest_deb.sh - - копирует и устанавливает последний deb-пакет с ядром. Аргумент: root@hostname, где hostname - это IP-адрес Wiren Board | * tools/scp_kernel_latest_deb.sh - - копирует и устанавливает последний deb-пакет с ядром. Аргумент: root@hostname, где hostname - это IP-адрес Wiren Board | ||
</translate> | </translate> |
Версия 20:24, 9 марта 2020
Сборка ядра Linux для Wiren Board может понадобиться, например, если требуется включить нужные модули в ядро.
Общее описание процесса
Сборку ядра нужно проводить на настольном компьютере под управлением Linuх, а не на Wiren Board - исходный код ядра занимает около 3 Гбайт, а процедура сборки требовательная к ресурсам, и займёт много времени даже на настольном компьютере. Все команды ниже, если не указано иное, выполняются на настольном компьютере с Linux.
Последовательность действий:
- Предварительная настройка компьютера с Linux.
- Копирование исходного кода ядра.
- Изменение конфигурации ядра.
- Сборка ядра.
- Установка изменённого ядра на Wiren Board.
Предварительная настройка компьютера с Linux
sudo apt-get install libncurses5-dev libncursesw5-dev #установка библиотек для menuconfig
#ниже идёт установка и настройка git - пропустите, если он уже установлен
sudo apt-get install git
git config --global user.name "Imya Familiya"
git config --global user.email "vash@adres.ru"
Копирование исходного кода ядра
git clone https://github.com/contactless/build_kernel.git #скачайте набор скриптов, упрощающий сборку
cd build_kernel
git clone https://github.com/contactless/linux KERNEL #скопируйте ядро, адаптированное для Wiren Board
cd KERNEL
git submodule init; git submodule update #инициализируйте внешние модули
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- mxs_wirenboard_defconfig #установите конфиг для сборки под Wiren Board
== Редактирование параметров ядра ==
<syntaxhighlight lang="bash">
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig
Посмотреть изменения относительно стандартного конфига
./config_diff.sh
Применение изменений в стандартный конфиг
Этот пункт нужен, чтобы изменить стандартный конфиг Wiren Board, например чтобы отправить патч или pull request.
cd KERNEL
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- savedefconfig
cp defconfig ./arch/arm/configs/mxs_wirenboard_defconfig
Сборка
Сборка ядра с упаковкой в tar.gz архивы:
./build.sh
Сборка в пакет Debian
./build_deb.sh
Установка на Wiren Board
export kernel_version=3.19.0-imxv5-x0.1
(строку версии стоит взять из вывода сборочных скриптов из предыдущего пункта)
Скрипты:
- tools/copy_kernel_latest_deb.sh - копирует и устанавливает последний deb-пакет с ядром. Аргумент: папка с rootfs (или примонтированный eMMC/microSD накопитель Wiren Board)
- tools/scp_kernel_latest_deb.sh - - копирует и устанавливает последний deb-пакет с ядром. Аргумент: root@hostname, где hostname - это IP-адрес Wiren Board