Добавить пользовательское изображение заставки в Yocto (лучший способ) - PullRequest
0 голосов
/ 04 декабря 2018

Я успешно изменил изображение заставки на моей встроенной системе Toradex iMX6.Я изменил defconfig ядра, найденный в подкаталоге, на файл * .bb ядра и добавил свой образ (logo_custom_clut224.ppm) в каталог предварительной сборки ядра ./tmp-glibc/work-shared/colibri-imx6/kernel-Исходный код / ​​драйверы / видео / логотип /, а затем заново скомпилировал ядро.

Возможно ли сделать это лучше?Я действительно хотел бы изменить шаг, где я вручную копирую свое изображение в каталог перед сборкой.Могу ли я как-то изменить файл * .bb, включив в него свое изображение, и использовать его как свое собственное изображение-заставку?

Или возможно ли сделать мой собственный рецепт, который изменяет файл defconfig и включает мое изображение любым способом, прежде чемядро сборочное?

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Возможно, вы можете сохранить свои изменения как патч, и вы можете передать его как патч для yocto, тогда yocto может применить патч к ядру, если вы все очистите.Этот способ наиболее распространен во встроенных системах Linux, в которых не используется система Yocto.

В yocto я предпочитаю использовать psplash.Это простой в использовании, и вы можете добавить значок загрузки с изображением.Вам просто нужно добавить psplash к вашему изображению, а в рецепте psplash вам просто нужно указать местоположение изображения с SPLASH_IMAGES определением.

0 голосов
/ 19 декабря 2018

Мне так и не удалось заставить функционировать Splash.Но я нашел решение изменить логотип статического запуска как для u-boot, так и для ядра.

Создание загрузочных образов

Я создал скрипт, который конвертировал изображение jpg вдва разных образа, которые необходимы для u-boot и ядра.

#!/bin/bash
IMAGE_JPG_INPUT=<YOUR_IMAGE_NAME>.jpg
IMAGE_UBOOT=toradex.bmp
IMAGE_KERNEL=logo_custom_clut224.ppm
echo "Converting $IMAGE_JPG_INPUT" 
jpegtopnm $IMAGE_JPG_INPUT | ppmquant 224 > tmp.ppm
pnmnoraw tmp.ppm > $IMAGE_KERNEL
echo ">> Kernel image created: $IMAGE_KERNEL" 
ppmtobmp -bpp 8 tmp.ppm > $IMAGE_UBOOT
echo ">> U-boot image created: $IMAGE_UBOOT" 
rm tmp.ppm

U-boot logo

Решение состоит в том, чтобы заменить загрузочный образ по умолчанию (toradex.bmp в моем случае) в u-boot/tools/logos.Я создал файл bbappend, u-boot-toradex_2016.11.bbappend, в <MY_CUSTOM_LAYER>/recipes-bsp/u-boot/u-boot-toradex/.

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

SRC_URI += "file://toradex.bmp"

do_unpack_append() {
    os.system("cp ${PWD}/toradex.bmp ${PWD}/git/tools/logos/")
}

В этой функции необходимо выполнить операцию копирования, поскольку при достижении do_patch_prepend () расположение дополнительных файлов меняется, если вы запускаете bitbake напрямую или работаете с devtool (затем файлы перемещаются в sources/u-boot-toradex/oe-local-files/).

Согласно рецептуре я добавил загрузочный образ в <MY_CUSTOM_LAYER>/recipes-bsp/u-boot/u-boot-toradex/u-boot-toradex

Логотип ядра

Для логотипа ядра решение состоит в следующем:аналогичный.Я создал файл bbappend, linux-toradex_4.1-2.0.x.bbappend, в <MY_CUSTOM_LAYER>/recipes-kernel/linux

FILESEXTRAPATHS_prepend := "${THISDIR}/linux-toradex-4.1-2.0.x:"

SRC_URI += "file://logo_custom_clut224.ppm \
            file://enable-custom-logo \
            "

do_unpack_append() {
    os.system("cp ${PWD}/logo_custom_clut224.ppm ${PWD}/git/drivers/video/logo/")
    os.system("patch -s < enable-custom-logo")
}

Загрузочный образ добавлен в <MY_CUSTOM_LAYER>/recipes-kernel/linux/linux-toradex-4.1-2.0.x.Я также добавил патч для включения собственного логотипа в файл конфигурации ядра, а также отключил другие параметры изображения логотипа.В моем случае в каталоге $ PWD был файл defconfig по умолчанию из оригинального рецепта, который мне пришлось исправить.

CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_CUSTOM_CLUT224=y

U-boot и ядро ​​были обновлены на цели.

0 голосов
/ 04 декабря 2018

Я думаю, что здесь psplash_git.bbappend - хороший пример использования psplash в Yocto.

...