Сборка ядра v2: различия между версиями
Строка 46: | Строка 46: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | == Сборка == | ||
Все промежуточные и конечные артефакты сборки - объектные файлы, dtb, модули ядра .ko, zImage и т.д. - будут находится в поддиректории '''.build-wbX''', где X зависит от модели контроллера. | |||
В этой же директории находится конфигурация ядра (см. ниже). | |||
Чаще всего для использования на контроллере удобней всего собрать deb-пакет с файлами ядра. | |||
Если вам нужны только некоторые бинарные файлы (zImage, модули и dtbs), то после успешной сборки deb-пакета их можно будет найти в сборочной поддиректории '''.build-wbX'''. | |||
=== Сборка deb-пакета === | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ make | $ make mrproper | ||
$ | $ KERNEL_FLAVOUR=wb6 VERSION_SUFFIX="~my~test~kernel" ./scripts/package/wb/do_build_deb.sh # Wiren Board 6 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Можно | Можно поменять значение VERSION_SUFFIX на свой вкус согласно правилам оформления версий пакетов в Debian. | ||
Это значение будет добавлено в конец номера версии пакета и поможет отличить собранное вручную ядро от | |||
ядра из репозитория Wiren Board. | |||
После сборки в корне появятся файлы пакетов (пример для Wiren Board 6): | |||
* linux-image-wb6_4.9.22-wb1~my~test~kernel_armhf.deb - образ ядра, модули и dtbs; | |||
* linux-headers-wb6_4.9.22-wb1~my~test~kernel_armhf.deb - нужен для разработки | |||
* linux-libc-dev_4.9.22-wb1~my~test~kernel_armhf.deb - нужен для разработки | |||
На контроллер достаточно скопировать файл пакета linux-image-wb6, в нём уже содержится всё необходимое. | |||
== Разные модели контроллеров == | |||
{| class="wikitable" | |||
|- | |||
! Модель контроллера | |||
! KERNEL_FLAVOUR | |||
! файл defconfig | |||
! сборочная директория | |||
! файлы dts и dtb | |||
|- | |||
| Wiren Board 6 | |||
| wb6 | |||
| imx6_wirenboard_defconfig | |||
| .build-wb6 | |||
| imx6ul-wirenboard6* | |||
|- | |||
| Wiren Board 5 и ниже | |||
| wb2 | |||
| mxs_wirenboard_defconfig | |||
| .build-wb2 | |||
| imx28-wirenboard5* | |||
|- | |||
| Wiren Board 7 | |||
| wb7 | |||
| wirenboard7_defconfig | |||
| .build-wb7 | |||
| sun8i-r40-wirenboard7* | |||
|} | |||
== Настройка ядра == | |||
При запуске скрипт сборки deb-пакета спрашивает, использовать ли конфигурацию по-умолчанию: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ | $ KERNEL_FLAVOUR=wb7 scripts/package/wb/do_build_deb.sh | ||
Building kernel packages for wb7 (Wiren Board 7) | |||
Revision: -wb100 | |||
Architecture: armhf | |||
Config: wirenboard7_defconfig | |||
.config already present | |||
Use wirenboard7_defconfig instead? (y/N) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Чтобы | Конфигурация по-умолчанюи при этом берётся из файлов в '''arch/arm/configs/''', например '''imx6_wirenboard_defconfig'''. | ||
Чтобы поменять конфигурацию, запустите '''make''' с необходимыми параметрами: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ make ARCH=arm | $ make KBUILD_OUTPUT=.build-wb6 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig # для Wiren Board 6 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
вместо '''menuconfig''' можно использовать графический '''xconfig'''. | |||
После сохранения, конфигурация заишется в сборочную директорию: '''.build-wbX/.config'''. | |||
Теперь вы можете собрать ядро с новой конфигурацией, выполнив обычную команду | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ | $ KERNEL_FLAVOUR=wb7 scripts/package/wb/do_build_deb.sh | ||
</syntaxhighlight> | </syntaxhighlight> | ||
и ответив N, чтобы использовать новую конфигурацию, вместо конфигурации по-умолчанию: | |||
<syntaxhighlight lang="bash"> | |||
Use wirenboard7_defconfig instead? (y/N) | |||
</syntaxhighlight> | |||
Когда вы полностью довольны результатом, можно посмотреть изменения относительно исходной версии: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ make ARCH=arm savedefconfig | # для Wiren Board 6 | ||
$ | $ make KBUILD_OUTPUT=.build-wb6 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- savedefconfig # приводит конфигурацию к стандартному виду и записывает в .build-wb6/defconfig | ||
$ diff -u arch/arm/configs/imx6_wirenboard_defconfig .build-wb6/defconfig # посмотреть её отличия от исходной конфигурации | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Чтобы заменить исходную версию настроек своей (например, при подготовке патча или pull request): | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# для Wiren Board 6 | |||
$ make KBUILD_OUTPUT=.build-wb6 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- savedefconfig | |||
$ | $ cp .build-wb6/defconfig arch/arm/configs/imx6_wirenboard_defconfig | ||
</syntaxhighlight> | </syntaxhighlight> | ||
После этого скрипт '''do_build_deb.sh''' будет использовать обновлённую конфигуацию при ответе "y". | |||
=== Сборка вручную === | |||
Этот этап не требуется для стандартных задач. | |||
Если вы хотите выполнить вручную какой-либо этап сборки, то можно запустить '''make''' вручную. | |||
<syntaxhighlight lang="bash"> | |||
# для Wiren Board 6 | |||
$ make KBUILD_OUTPUT=.build-wb6 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs modules -j4 | |||
</syntaxhighlight> | |||
(-j4 запускает сборку в 4 потока, | |||
можно это убрать или поменять значение на более подходящее вашему компьютеру, идеальное значение - количество ядер CPU): | можно это убрать или поменять значение на более подходящее вашему компьютеру, идеальное значение - количество ядер CPU): | ||
В результате появятся нужные нам файлы: | В результате появятся нужные нам файлы: | ||
* arch/arm/boot/zImage - образ ядра, который нужно скопировать в /boot/zImage на контроллере; | * .build-wb6/arch/arm/boot/zImage - образ ядра, который нужно скопировать в /boot/zImage на контроллере; | ||
* arch/arm/boot/dtb/* - файлы device tree, используемые для настройки оборудования при запуске, копируются в директорию /boot/dtbs/. | * .build-wb6/arch/arm/boot/dtb/* - файлы device tree, используемые для настройки оборудования при запуске, копируются в директорию /boot/dtbs/. | ||
Файлы модулей можно найти с помощью команды: | Файлы модулей можно найти с помощью команды: |