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

Нет описания правки
Метка: visualeditor
Строка 1: Строка 1:
Вам может понадобиться собрать своё ядро (например, чтобы включить нужные модули). Чтобы собрать ядро для Wiren Board, нужно взять стандартное ядро (vanilla kernel), и применить к нему набор патчей.
Вам может понадобиться собрать своё ядро (например, чтобы включить нужные модули). Чтобы собрать ядро для Wiren Board, нужно взять использовать специальный репозиторий, содержащий ядро, адаптированное для Wiren Board.
 
Однако, этот процесс автоматизирован.




'''0.''' Сборку ядра следует проводить на вашем настольном компьютере под управлением Linux (не на Wiren Board - теоретически это возможно, но потребует несколько гигабайт свободного места, и займёт много времени).
'''0.''' Сборку ядра следует проводить на вашем настольном компьютере под управлением Linux (не на Wiren Board - теоретически это возможно, но потребует несколько гигабайт свободного места, и займёт много времени).
Убедитесь, что у вас установлен git (http://en.wikipedia.org/wiki/Git_%28software%29). Если нет, установите его:
Убедитесь, что у вас установлен git (http://en.wikipedia.org/wiki/Git_%28software%29). Если нет, установите его:<pre>
<pre>
sudo apt-get install git
sudo apt-get install git
</pre>
</pre>
Строка 16: Строка 13:




'''1.''' Скачайте набор скриптов, который выполнит весь остальной процесс:
'''1.''' Скачайте набор скриптов, который упрощает сборку:
<pre>
<pre>
git clone git://github.com/contactless/build_kernel.git
git clone git://github.com/contactless/build_kernel.git
cd build_kernel
cd build_kernel
</pre>
</pre>
Затем обязательно (!)
'''2.''' Склонируйте и инициализируйте репозиторий Linux.
 
Репозиторий можно склонировать с использованием https (если у вас нет аккаунта на github.com):
<pre>
<pre>
cp system.sh.sample system.sh
git clone https://github.com/contactless/linux KERNEL
</pre>
</pre>
и добавьте (раскомментируйте в конце файла, убрав <code>#</code> в начале строки) в system.sh строчку
 
или ssh, если у вас есть аккаунт:
<pre>
<pre>
PULL_DEV=1
git clone git@github.com:contactless/linux.git KERNEL
</pre>
</pre>


 
'''3.''' Инициализируйте внешние модули:
'''2.''' Затем выполните
<pre>
cd KERNEL</pre>
<pre>
git submodule init</pre>
<pre>
<pre>
./build_kernel.sh
git submodule update</pre>
'''4.''' Установите конфиг для сборки под Wiren Board<pre>
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- mxs_wirenboard_defconfig
</pre>
</pre>
Вероятно, при первом вызове процесс будет остановлен, и вам будет выдан список зависимостей, которые надо установить.
==Сборка==
Если же всё на месте, то скрипт сам скачает и установит кросс-компилятор для ARM, скачает стандартное ядро (~3 ГБ), применит к нему патчи, и запустит menuconfig (http://en.wikipedia.org/wiki/Menuconfig) - утилиту, в которой вы можете сконфигурировать ядро.
Сборка ядра с упаковкой в tar.gz архивы:
./build.sh
Сборка в пакет Debian
./build_deb.sh


Всё нужное по-умолчанию стоит, поэтому если у вас нет специальных требований, то из menuconfig можно просто выйти.
== Установка на Wiren Board ==
==Пересборка==
export kernel_version=3.19.0-imxv5-x0.1
Повторный вызов build-kernel.sh уничтожит все локальные изменения!
(строку версии стоит взять из вывода сборочных скриптов из предыдущего пункта)


Поэтому для пересборки необходимо пользоваться
Скрипты:
<pre>
* tools/copy_kernel_latest_deb.sh - копирует и устанавливает последний deb-пакет с ядром. Аргумент: папка с rootfs (или примонтированный eMMC/microSD накопитель Wiren Board)
tools/rebuild.sh
* tools/scp_kernel_latest_deb.sh - - копирует и устанавливает последний deb-пакет с ядром. Аргумент: root@hostname, где hostname - это IP-адрес Wiren Board
</pre>
 
==Другая инструкция==
== Работа с конфигом ядра ==
http://contactless.ru/img/Building_a_Kernel_3.x_for_the_iMX233-OLinuXino-v3.9.4.pdf
 
=== Редактирование конфига ядра ===
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