1

I have made some adjustments to the kernel source so that I can use a custom logo on the kernel splash screen. In particular, the changes I have made allow the custom logo to be chosen as a kernel configuration option when I run the following bitbake command:

bitbake -c menuconfig virtual/kernel

and then navigate to the Device Drivers > Graphics support -> Bootup logo. I set the Bootup logo to the custom logo, save my changes & exit menuconfig. At this point, the generated .config file is at tmp/work/imx6ul_var_dart-fslc-linux-gnueabi/linux-variscite/4.9.88-r0/build/.config and I confirm that my logo has been configured as the boot logo in the following line from the .config file:

CONFIG_LOGO_CUSTOM_CLUT224=y

All is good up to this point. Now, I want to save the .config file in a defconfig format so that I can overwrite the default configuration in the source tree and replace it with the generated defconfig file. To do this I run the following command:

bitbake -c savedefconfig virtual/kernel

At this point, the generated defconfig file is at tmp/work/imx6ul_var_dart-fslc-linux-gnueabi/linux-variscite/4.9.88-r0/build/defconfig. But, when I search the generated defconfig file...I do not find the following line:

CONFIG_LOGO_CUSTOM_CLUT224=y

Why am I not seeing this configuration option in the defconfig file even though it was set in the .config file it is being generated from?

Edit (adding extra info):

I will describe the precise changes made to the kernel source. Firstly, I added the logo (logo_custom_clut224.ppm) to drivers/video/logo. I then modified drivers/video/logo/Kconfig to include the following entry inside if LOGO and the corresponding endif :

config LOGO_CUSTOM_CLUT224
    bool "224-color Custom logo"
    default y

I then added the following logic to drivers/video/logo/logo.c inside the if (depth >= 8) block:

#ifdef CONFIG_LOGO_CUSTOM_CLUT224
    logo = &logo_custom_clut224;
#endif

I then added the following statement to include/linux/linux_logo.h:

extern const struct linux_logo logo_custom_clut224;

Lastly, I modified the drivers/video/logo/Makefile to include an entry for the custom logo:

obj-$(CONFIG_LOGO_CUSTOM_CLUT224 += logo_custom_clut224.o

I would also like to note that the logo I am trying to use is 800x480.

GnUfTw
  • 337
  • 1
  • 4
  • 19
  • Have you tried this and the splashscreen does not appear or are you just wondering why the configuration item does not show up in `defconfig`? `savedefconfig` will skip non-optional, boolean choices equal to 'y' that match the original default. `defconfig` is supposed to be a minimal `.config`. – nickglazer Apr 11 '19 at 19:33
  • I have tried it and the splashscreen does not appear. But, I am mainly wondering why the item does not show up in defconfig. Edit: I suspect the splashscreen is not appearing because it is not showing up in defconfig. – GnUfTw Apr 13 '19 at 16:58
  • That is probably not the case. Like I said, it is not showing up in the `defconfig` because the value in `.config` matches the default value from `Kconfig`. You should try changing it to `n` and the generating the `defconfig`, to actually see it in the `defconfig`. See https://stackoverflow.com/a/41886394/7025024 for further details. Also, the Yocto Project Manual talks about the `Configuring the Kernel` and discusses `.config` and `defconfig`. Another question, did you disable the logo you are trying to replace? – nickglazer Apr 15 '19 at 14:21

0 Answers0