How To Build Linux Kernel: различия между версиями

Материал из Wiren Board
Строка 43: Строка 43:
  <!--T:16-->
  <!--T:16-->
./config_diff.sh
./config_diff.sh


=== Применение изменений в стандартный конфиг === <!--T:17-->
=== Применение изменений в стандартный конфиг === <!--T:17-->
Строка 64: Строка 63:
Сборка в пакет Debian
Сборка в пакет Debian
  ./build_deb.sh
  ./build_deb.sh


== Установка на Wiren Board == <!--T:9-->
== Установка на Wiren Board == <!--T:9-->

Версия 16:46, 24 мая 2020

Другие языки:

Сборка ядра Linux для Wiren Board может понадобиться, например, если требуется включить нужные модули в ядро.

Общее описание процесса

Сборку ядра нужно проводить на настольном компьютере под управлением Linuх, а не на Wiren Board - исходный код ядра занимает около 3 Гбайт, а процедура сборки требовательная к ресурсам, и займёт много времени даже на настольном компьютере. Все команды ниже, если не указано иное, выполняются на настольном компьютере с Linux.

Последовательность действий:

  1. Предварительная настройка компьютера с Linux.
  2. Копирование исходного кода ядра.
  3. Изменение конфигурации ядра.
  4. Сборка ядра.
  5. Установка изменённого ядра на 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

Редактирование параметров ядра

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