diff mbox

linux: Adding customizable linux logo

Message ID 1481051295-1190-1-git-send-email-angelo.compagnucci@gmail.com
State Changes Requested
Headers show

Commit Message

Angelo Compagnucci Dec. 6, 2016, 7:08 p.m. UTC
This patch adds a custom linux logo to the generated kernel image.

Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
---
 linux/Config.ext.in           | 26 ++++++++++++++++++++++++++
 linux/linux-ext-customlogo.mk | 19 +++++++++++++++++++
 2 files changed, 45 insertions(+)
 create mode 100644 linux/linux-ext-customlogo.mk

Comments

Arnout Vandecappelle Dec. 6, 2016, 11:51 p.m. UTC | #1
On 06-12-16 20:08, Angelo Compagnucci wrote:
> This patch adds a custom linux logo to the generated kernel image.
> 
> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
> ---
>  linux/Config.ext.in           | 26 ++++++++++++++++++++++++++
>  linux/linux-ext-customlogo.mk | 19 +++++++++++++++++++
>  2 files changed, 45 insertions(+)
>  create mode 100644 linux/linux-ext-customlogo.mk
> 
> diff --git a/linux/Config.ext.in b/linux/Config.ext.in
> index 011dffb..da63109 100644
> --- a/linux/Config.ext.in
> +++ b/linux/Config.ext.in
> @@ -1,5 +1,31 @@
>  menu "Linux Kernel Extensions"
>  
> +# Custom logo
> +config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
> +	bool "Custom logo"
> +	select BR2_PACKAGE_CUSTOMLOGO
> +	help
> +	  Change linux boot logo with your own graphics. 
> +	  Can be used as an early bootsplash.
> +	  The file should be in kernel ppm format if the
> +	  option BR2_PACKAGE_CUSTOMLOGO_CONVERT is not
> +	  selected.

 You should wrap at 72 colums (where tab counts as 8, so 62 effective characters).

> +
> +config BR2_PACKAGE_CUSTOMLOGO_PATH
> +	string "Image file path"
> +	depends on BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
> +	help
> +	  This image will be used as custom logo.
> +
> +config BR2_PACKAGE_CUSTOMLOGO_CONVERT

 The feedback in your RFC patch was to remove the convert option.


 Regards,
 Arnout

> +	bool "Convert custom logo to kernel format"
> +	depends on BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
> +	help
> +	  If checked, the convert command will be run on the source
> +	  image file to obtain a kernel compatible ppm image file.
> +	  *REQUIRES* a pre installed imagemagick on the host system
> +	  to convert the image.
> +
>  #-------------------------------------------------------------------------------
>  # Xenomai
>  config BR2_LINUX_KERNEL_EXT_XENOMAI
> diff --git a/linux/linux-ext-customlogo.mk b/linux/linux-ext-customlogo.mk
> new file mode 100644
> index 0000000..99e3ab1
> --- /dev/null
> +++ b/linux/linux-ext-customlogo.mk
> @@ -0,0 +1,19 @@
> +################################################################################
> +#
> +# Custom logo
> +#
> +################################################################################
> +
> +LINUX_EXTENSIONS += customlogo
> +
> +ifeq ($(BR2_PACKAGE_CUSTOMLOGO_CONVERT),)
> +define CUSTOMLOGO_PREPARE_KERNEL
> +	cp $(BR2_PACKAGE_CUSTOMLOGO_PATH) $(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm
> +endef
> +else
> +define CUSTOMLOGO_PREPARE_KERNEL
> +	convert $(BR2_PACKAGE_CUSTOMLOGO_PATH) \
> +			-dither None -colors 224 -compress none \
> +			$(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm
> +endef
> +endif
>
Angelo Compagnucci Dec. 7, 2016, 6:47 a.m. UTC | #2
Dear Arnout Vandecappelle,

2016-12-07 0:51 GMT+01:00 Arnout Vandecappelle <arnout@mind.be>:

>
>
> On 06-12-16 20:08, Angelo Compagnucci wrote:
> > This patch adds a custom linux logo to the generated kernel image.
> >
> > Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
> > ---
> >  linux/Config.ext.in           | 26 ++++++++++++++++++++++++++
> >  linux/linux-ext-customlogo.mk | 19 +++++++++++++++++++
> >  2 files changed, 45 insertions(+)
> >  create mode 100644 linux/linux-ext-customlogo.mk
> >
> > diff --git a/linux/Config.ext.in b/linux/Config.ext.in
> > index 011dffb..da63109 100644
> > --- a/linux/Config.ext.in
> > +++ b/linux/Config.ext.in
> > @@ -1,5 +1,31 @@
> >  menu "Linux Kernel Extensions"
> >
> > +# Custom logo
> > +config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
> > +     bool "Custom logo"
> > +     select BR2_PACKAGE_CUSTOMLOGO
> > +     help
> > +       Change linux boot logo with your own graphics.
> > +       Can be used as an early bootsplash.
> > +       The file should be in kernel ppm format if the
> > +       option BR2_PACKAGE_CUSTOMLOGO_CONVERT is not
> > +       selected.
>
>  You should wrap at 72 colums (where tab counts as 8, so 62 effective
> characters).
>

Ok!


>
> > +
> > +config BR2_PACKAGE_CUSTOMLOGO_PATH
> > +     string "Image file path"
> > +     depends on BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
> > +     help
> > +       This image will be used as custom logo.
> > +
> > +config BR2_PACKAGE_CUSTOMLOGO_CONVERT
>
>  The feedback in your RFC patch was to remove the convert option.
>

Yes I know. Let me explain my point of view. There are a tons of way a
buildroot power user can overwrite the linux boot logo, but my intent here
is not to present something complex to the average user.
This option would cover a simple use case of a user which wants to have a
custom boot logo without too much of a hassle, something like the ethernet
boot options does. It not covers all the corner cases, only a basic and
useful one.

The complex part here is to obtain the ppm file in a correct format and
guessing the correct combo of options requires a bit of trial and error.
If it's not feasible to run a pre-installed executable on the host system,
I will add a dependency on imagemagick, but I think it's a bit overkill to
compile all that stuff only to convert an image for a bunch of milliseconds.

Sincerely, Angelo


>
>
>  Regards,
>  Arnout
>
> > +     bool "Convert custom logo to kernel format"
> > +     depends on BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
> > +     help
> > +       If checked, the convert command will be run on the source
> > +       image file to obtain a kernel compatible ppm image file.
> > +       *REQUIRES* a pre installed imagemagick on the host system
> > +       to convert the image.
> > +
> >  #-----------------------------------------------------------
> --------------------
> >  # Xenomai
> >  config BR2_LINUX_KERNEL_EXT_XENOMAI
> > diff --git a/linux/linux-ext-customlogo.mk b/linux/linux-ext-customlogo.
> mk
> > new file mode 100644
> > index 0000000..99e3ab1
> > --- /dev/null
> > +++ b/linux/linux-ext-customlogo.mk
> > @@ -0,0 +1,19 @@
> > +###########################################################
> #####################
> > +#
> > +# Custom logo
> > +#
> > +###########################################################
> #####################
> > +
> > +LINUX_EXTENSIONS += customlogo
> > +
> > +ifeq ($(BR2_PACKAGE_CUSTOMLOGO_CONVERT),)
> > +define CUSTOMLOGO_PREPARE_KERNEL
> > +     cp $(BR2_PACKAGE_CUSTOMLOGO_PATH) $(LINUX_DIR)/drivers/video/
> logo/logo_linux_clut224.ppm
> > +endef
> > +else
> > +define CUSTOMLOGO_PREPARE_KERNEL
> > +     convert $(BR2_PACKAGE_CUSTOMLOGO_PATH) \
> > +                     -dither None -colors 224 -compress none \
> > +                     $(LINUX_DIR)/drivers/video/
> logo/logo_linux_clut224.ppm
> > +endef
> > +endif
> >
>
> --
> Arnout Vandecappelle                          arnout at mind be
> Senior Embedded Software Architect            +32-16-286500
> Essensium/Mind                                http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
>
Thomas Petazzoni Dec. 11, 2016, 2:39 p.m. UTC | #3
Hello,

On Tue,  6 Dec 2016 20:08:15 +0100, Angelo Compagnucci wrote:
> This patch adds a custom linux logo to the generated kernel image.
> 
> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
> ---
>  linux/Config.ext.in           | 26 ++++++++++++++++++++++++++
>  linux/linux-ext-customlogo.mk | 19 +++++++++++++++++++
>  2 files changed, 45 insertions(+)
>  create mode 100644 linux/linux-ext-customlogo.mk
> 
> diff --git a/linux/Config.ext.in b/linux/Config.ext.in
> index 011dffb..da63109 100644
> --- a/linux/Config.ext.in
> +++ b/linux/Config.ext.in
> @@ -1,5 +1,31 @@
>  menu "Linux Kernel Extensions"

Why is this implemented as a Linux extension? There's no reason for
that, it could just be an option of the Linux package itself.

> +# Custom logo
> +config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
> +	bool "Custom logo"
> +	select BR2_PACKAGE_CUSTOMLOGO
> +	help
> +	  Change linux boot logo with your own graphics. 
> +	  Can be used as an early bootsplash.
> +	  The file should be in kernel ppm format if the
> +	  option BR2_PACKAGE_CUSTOMLOGO_CONVERT is not
> +	  selected.
> +
> +config BR2_PACKAGE_CUSTOMLOGO_PATH
> +	string "Image file path"
> +	depends on BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
> +	help
> +	  This image will be used as custom logo.
> +
> +config BR2_PACKAGE_CUSTOMLOGO_CONVERT
> +	bool "Convert custom logo to kernel format"
> +	depends on BR2_LINUX_KERNEL_EXT_CUSTOMLOGO

Why do we have this sub-option? Makes more sense to just run "convert"
unconditionally. Of course, as Arnout said, this will require add
host-imagemagick in the dependencies of the linux package.

> +ifeq ($(BR2_PACKAGE_CUSTOMLOGO_CONVERT),)
> +define CUSTOMLOGO_PREPARE_KERNEL
> +	cp $(BR2_PACKAGE_CUSTOMLOGO_PATH) $(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm

But there's a more fundamental problem to this: you're simply
generating logo_linux_clut224.ppm, but what tells you that the kernel
is going to use this specific file?

Depending on whether the screen supports 1-bit, 4-bit or 8-bit pixel
depth, and depending on the kernel configuration in
drivers/video/logo/, it's not necessarily logo_linux_clut224.ppm that
will be used.

I think if we want to do this, we want to:

 - Enable CONFIG_LOGO_LINUX_MONO, CONFIG_LOGO_LINUX_VGA16 and
   CONFIG_LOGO_LINUX_CLUT224

 - Install logo_linux_clut224.ppm, logo_linux_mono.pbm and
   logo_linux_vga16.ppm.

However, this means the user can no longer disable
CONFIG_LOGO_LINUX_VGA16 and/or CONFIG_LOGO_LINUX_MONO if he only uses
CONFIG_LOGO_LINUX_CLUT224.

Overall, I think the benefit is really not worth the complexity.

Best regards,

Thomas
diff mbox

Patch

diff --git a/linux/Config.ext.in b/linux/Config.ext.in
index 011dffb..da63109 100644
--- a/linux/Config.ext.in
+++ b/linux/Config.ext.in
@@ -1,5 +1,31 @@ 
 menu "Linux Kernel Extensions"
 
+# Custom logo
+config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
+	bool "Custom logo"
+	select BR2_PACKAGE_CUSTOMLOGO
+	help
+	  Change linux boot logo with your own graphics. 
+	  Can be used as an early bootsplash.
+	  The file should be in kernel ppm format if the
+	  option BR2_PACKAGE_CUSTOMLOGO_CONVERT is not
+	  selected.
+
+config BR2_PACKAGE_CUSTOMLOGO_PATH
+	string "Image file path"
+	depends on BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
+	help
+	  This image will be used as custom logo.
+
+config BR2_PACKAGE_CUSTOMLOGO_CONVERT
+	bool "Convert custom logo to kernel format"
+	depends on BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
+	help
+	  If checked, the convert command will be run on the source
+	  image file to obtain a kernel compatible ppm image file.
+	  *REQUIRES* a pre installed imagemagick on the host system
+	  to convert the image.
+
 #-------------------------------------------------------------------------------
 # Xenomai
 config BR2_LINUX_KERNEL_EXT_XENOMAI
diff --git a/linux/linux-ext-customlogo.mk b/linux/linux-ext-customlogo.mk
new file mode 100644
index 0000000..99e3ab1
--- /dev/null
+++ b/linux/linux-ext-customlogo.mk
@@ -0,0 +1,19 @@ 
+################################################################################
+#
+# Custom logo
+#
+################################################################################
+
+LINUX_EXTENSIONS += customlogo
+
+ifeq ($(BR2_PACKAGE_CUSTOMLOGO_CONVERT),)
+define CUSTOMLOGO_PREPARE_KERNEL
+	cp $(BR2_PACKAGE_CUSTOMLOGO_PATH) $(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm
+endef
+else
+define CUSTOMLOGO_PREPARE_KERNEL
+	convert $(BR2_PACKAGE_CUSTOMLOGO_PATH) \
+			-dither None -colors 224 -compress none \
+			$(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm
+endef
+endif