Yocto Raspberry Pi Изменить изображение psplash
Я успешно создал изображение Raspberry Pi Yocto, используя следующие инструкции: http://www.jumpnowtek.com/rpi/Raspberry-Pi-Systems-with-Yocto.html. Когда система загружается, я вижу заставку по умолчанию psplash Raspberry Pi с полосой загрузки.
Слой meta-raspberrypi содержит файл рецепта psplash bbappend, который определяет изображение raspberry pi, которое видно при загрузке системы.
me@me:~/poky-morty/meta-raspberrypi$ grep -R SPLASH *
conf/machine/include/rpi-base.inc:SPLASH = "psplash-raspberrypi"
recipes-core/images/rpi-basic-image.bb:SPLASH = "psplash-raspberrypi"
recipes-core/psplash/psplash_git.bbappend:SPLASH_IMAGES += "file://psplash-raspberrypi-img.h;outsuffix=raspberrypi"
Переменная SPLASH в dpi-base.inc определяет используемый экран-заставку (я думаю...), а файл psplash_git.bbappend представляет изображение с суффиксом соответствия raspberry pi.
Bbappend выглядит так:
me@me:~/poky-morty/meta-raspberrypi$ cat recipes-core/psplash/psplash_git.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SPLASH_IMAGES += "file://psplash-raspberrypi-img.h;outsuffix=raspberrypi"
У меня есть пользовательский слой, и я создал еще один psplash_git.bbappend в этом слое со следующим содержимым - пытаясь переопределить изображение, используемое для заставки Raspberry Pi, своим собственным изображением:
me@me:~/rpi/meta-me/recipes-me/psplash$ cat psplash_git.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SPLASH_IMAGES += "file://social.jpg-img.h;outsuffix=raspberrypi"
Если я пытаюсь создать свой образ с включенным пользовательским bbappend, я получаю следующую ошибку:
Initialising tasks: 100% |##################################| Time: 0:00:05
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: psplash-0.1+gitAUTOINC+88343ad23c-r15 do_package: QA Issue: psplash-raspberrypi is listed in PACKAGES multiple times, this leads to packaging errors. [packages-list]
ERROR: psplash-0.1+gitAUTOINC+88343ad23c-r15 do_package: Fatal QA errors found, failing task.
ERROR: psplash-0.1+gitAUTOINC+88343ad23c-r15 do_package: Function failed: do_package
ERROR: Logfile of failure stored in: /home/me/rpi/build/tmp/work/arm1176jzfshf-vfp-poky-linux-gnueabi/psplash/0.1+gitAUTOINC+88343ad23c-r15/temp/log.do_package.63289
ERROR: Task (/home/me/poky-morty/meta/recipes-core/psplash/psplash_git.bb:do_package) failed with exit code '1'
NOTE: Tasks Summary: Attempted 3439 tasks of which 3430 didn't need to be rerun and 1 failed.
Я получаю ту же ошибку (дублирующая цель), если я изменяю значение внешнего адреса по умолчанию.
Я могу обойти эту ошибку, изменив мой bbappend на это:
me@me:~/rpi/meta-me/recipes-me/psplash$ cat psplash_git.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SPLASH_IMAGES += "file://social.jpg-img.h;outsuffix=me"
И затем я пытаюсь переопределить переменную конфигурации SPLASH в моем local.conf следующим образом:
# Set the Custom Splash screen
SPLASH = "psplash-me"
Но независимо от того, что я, кажется, делаю, он всегда делает по умолчанию Raspberry Pi.
Как я могу переопределить заставку psplash по умолчанию своим собственным изображением? Благодарю.
3 ответа
Имя файла должно соответствовать формату psplash-%s
где %s
является raspberrypi
так что самый быстрый способ это изменить social.jpg-img.h
в psplash-raspberrypi-img.h
и перезаписать его на оригинальный raspberrypi psplash.bbappend.
Ниже приведена информация о том, как он получает outsuffix
переменная;
for uri in splashfiles:
fetcher = bb.fetch2.Fetch([uri], d)
flocal = os.path.basename(fetcher.localpath(uri))
fbase = os.path.splitext(flocal)[0]
outsuffix = fetcher.ud[uri].parm.get("outsuffix")
if not outsuffix:
if fbase.startswith("psplash-"):
outsuffix = fbase[8:]
else:
outsuffix = fbase
if outsuffix.endswith('-img'):
outsuffix = outsuffix[:-4]
outname = "psplash-%s" % outsuffix
if outname == '' or outname in oldpkgs:
bb.fatal("The output name '%s' derived from the URI %s is not valid, please specify the outsuffix parameter" % (outname, uri))
else:
pkgs.append(outname)
if flocal.endswith(".png"):
haspng = True
localpaths.append(flocal)
SPLASH_IMAGES
в основном карта файлов, которая имеет ключ с outsuffix
,
SPLASH_IMAGES = "file://splash-file-one.h;outsuffix=one \
file://splash-file-two.h;outsuffix=two"
Это автоматически создаст psplash-пакеты для каждой записи изображения-заставки (т.е. psplash-one и psplash-two).
заставка: позволяет показывать заставку во время загрузки. По умолчанию этот экран предоставлен psplash, который разрешает настройку. Если вы предпочитаете использовать альтернативный пакет заставки, вы можете сделать это, установив для переменной SPLASH другое имя (или имена) пакета в рецепте образа или на уровне конфигурации дистрибутива.
Вместо использования по умолчанию, raspberrypi предоставляет альтернативу для выбора заставки в конфигурации машины; Эта ссылка дает дополнительную информацию https://lists.yoctoproject.org/pipermail/yocto/2013-May/013902.html
+# Set raspberrypi splash image
+SPLASH = "psplash-raspberrypi"
diff --git a/recipes-core/psplash/psplash_git.bbappend b/recipes-core/psplash/psplash_git.bbappend
index eea8dfb..65dc30f 100644
--- a/recipes-core/psplash/psplash_git.bbappend
+++ b/recipes-core/psplash/psplash_git.bbappend
@@ -1,2 +1,2 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-SPLASH_IMAGES = "file://psplash-raspberrypi-img.h;outsuffix=default"
+SPLASH_IMAGES += "file://psplash-raspberrypi-img.h;outsuffix=raspberrypi"
--
1.8.2.2
Как сказал Чарльз К., один из способов - перезаписатьpsplash-raspberrypi-img.h
А затем я пытаюсь переопределить переменную конфигурации SPLASH в моем local.conf следующим образом:
# Set the Custom Splash screen
SPLASH = "psplash-me"
Но что бы я ни делал, он всегда отображает Raspberry Pi по умолчанию.
Теоретически должно быть достаточно просто установить
psplash_%.bbappend
:
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SPLASH_IMAGES_append = " file://foo-img.png;outsuffix=bar"
conf/local.conf
:
SPLASH = " psplash-bar"
так же, как это делается вmeta-raspberry
но кажется, что meta-raspberry
устанавливает SPLASH
внутри класса определения изображения, и это перезаписывает ваше значение изlocal.conf
На этом этапе стоит посмотреть, как это оценивается:
bitbake -e core-image-base | less
и искать ^SPLASH
вы заметите, что он имеет окончательное значение psplash-raspberrypi
.
решение
Вот как мне удалось заставить его работать:
psplash_%.bbappend
:
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SPLASH_IMAGES_append = " file://foo-img.png;outsuffix=bar"
ALTERNATIVE_PRIORITY_psplash-bar[psplash] = "200"
conf/local.conf
:
PACKAGE_INSTALL_append = " psplash-bar"
Что здесь происходит:
SPLASH_IMAGES_append = " file://foo-img.png;outsuffix=bar"
Это создаст пакет psplash-bar
. Вы можете предоставить.png
и он будет преобразован в соответствующий файл заголовка, но вы также можете предоставить необработанный заголовок. Рецепт psplash выведет это.
PACKAGE_INSTALL_append = " psplash-bar"
Это скажет bitbake установить его на rootfs (если SPLASH
не были перезаписаны, тогда это будет оцениваться здесь)
на этом этапе после построения изображения psplash-bar
будет установлен на rootfs, но psplash
не будут связаны с ним:
ls -lh /usr/bin/psplash*
lrwxrwxrwx psplash -> /usr/bin/psplash-raspberrypi
-rwxr-xr-x psplash-raspberrypi
-rwxr-xr-x psplash-systemd
-rwxr-xr-x psplash-bar
-rwxr-xr-x psplash-write
Так что с этим:
ALTERNATIVE_PRIORITY_psplash-bar[psplash] = "200"
мы скажем bibtake
использовать psplash-bar
быть альтернативным пакетом (провайдером?) с приоритетом 200.
ls -lh /usr/bin/psplash*
lrwxrwxrwx psplash -> /usr/bin/psplash-bar
-rwxr-xr-x psplash-raspberrypi
-rwxr-xr-x psplash-systemd
-rwxr-xr-x psplash-bar
-rwxr-xr-x psplash-write
Простое решение
- Клонируйте слой в вашем проекте Poky:
git clone https://github.com/hamzamac/meta-splash.git
- Замените изображение по умолчанию своим изображением логотипа с именем
logo.png
(имя можно настроить вcustomize.bb
) - Запеките свой образ
Вот и все
Чтобы настроить цвета, проверьте мета-заставкиREADME мета-заставки.