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

Материал из Wiren Board
Строка 2: Строка 2:
<translate>
<translate>
<!--T:1-->
<!--T:1-->
Вам может понадобиться собрать своё ядро (например, чтобы включить нужные модули). Чтобы собрать ядро для Wiren Board, нужно взять использовать специальный репозиторий, содержащий ядро, адаптированное для Wiren Board.
'''Сборка ядра''' Linux для Wiren Board может понадобиться, например, если требуется включить нужные модули в ядро.


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


<!--T:2-->
Последовательность действий:
'''0.''' Сборку ядра следует проводить на вашем настольном компьютере под управлением Linux (не на Wiren Board - теоретически это возможно, но потребует несколько гигабайт свободного места, и займёт много времени).
# Предварительная настройка компьютера с Linux.
Убедитесь, что у вас установлен git (http://en.wikipedia.org/wiki/Git_%28software%29). Если нет, установите его:<pre>
# Копирование исходного кода ядра.
# Изменение конфигурации ядра.
# Сборка ядра.
# Установка изменённого ядра на Wiren Board.
 
===Предварительная настройка компьютера с Linux===
<syntaxhighlight lang="bash">
sudo apt-get install libncurses5-dev libncursesw5-dev #установка библиотек для menuconfig
#ниже идёт установка и настройка git - пропустите, если он уже установлен
sudo apt-get install git
sudo apt-get install git
</pre>
Установите произвольные имя пользователя и почту:
<pre>
git config --global user.name "Imya Familiya"
git config --global user.name "Imya Familiya"
git config --global user.email "vash@adres.ru"
git config --global user.email "vash@adres.ru"
</pre>
</syntaxhighlight>
 


<!--T:3-->
===Копирование исходного кода ядра===
'''1.''' Скачайте набор скриптов, который упрощает сборку:
<syntaxhighlight lang="bash">
<pre>
git clone https://github.com/contactless/build_kernel.git #скачайте набор скриптов, упрощающий сборку
git clone https://github.com/contactless/build_kernel.git
cd build_kernel
cd build_kernel
</pre>
git clone https://github.com/contactless/linux KERNEL #скопируйте ядро, адаптированное для Wiren Board
'''2.''' Склонируйте и инициализируйте репозиторий Linux.
cd KERNEL
 
git submodule init; git submodule update #инициализируйте внешние модули
<!--T:4-->
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- mxs_wirenboard_defconfig #установите конфиг для сборки под Wiren Board
<pre>
</syntaxhighlight>
git clone https://github.com/contactless/linux KERNEL
</pre>
 
<!--T:6-->
'''3.'''  Инициализируйте внешние модули:
<pre>
cd KERNEL</pre>
<pre>
git submodule init</pre>
<pre>
git submodule update</pre>
'''4.''' Установите конфиг для сборки под Wiren Board<pre>
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- mxs_wirenboard_defconfig
</pre>


==Сборка== <!--T:7-->
==Сборка== <!--T:7-->

Версия 22:55, 7 марта 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

Сборка

Сборка ядра с упаковкой в 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


Работа с конфигом ядра

Редактирование конфига ядра

cd KERNEL

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig

или

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- xconfig


Список изменений относительно стандартного конфига

./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