diff mbox

RFC: adding customizable linux logo

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

Commit Message

Angelo Compagnucci Feb. 2, 2016, 11:05 p.m. UTC
This patch adds a custom linux logo to the generated kernel image.

Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
---

I often use the linux kernel logo as an early full screen bootsplash.
For such a reason I wrote this patch and I'm looking for comments.

 linux/Config.ext.in              |  8 ++++++++
 linux/linux-ext-customlogo.mk    | 11 +++++++++++
 package/Config.in                |  1 +
 package/customlogo/Config.in     | 16 ++++++++++++++++
 package/customlogo/customlogo.mk | 15 +++++++++++++++
 5 files changed, 51 insertions(+)
 create mode 100644 linux/linux-ext-customlogo.mk
 create mode 100644 package/customlogo/Config.in
 create mode 100644 package/customlogo/customlogo.mk

Comments

Thomas Petazzoni June 1, 2016, 8:03 p.m. UTC | #1
Hello Angelo,

It's been a while since you sent this patch. I don't know if this
feature is important enough to be integrated, but I'll do some review
anyway.

On Wed,  3 Feb 2016 00:05:42 +0100, Angelo Compagnucci wrote:

> diff --git a/linux/Config.ext.in b/linux/Config.ext.in
> index 755c23b..b752c9c 100644
> --- a/linux/Config.ext.in
> +++ b/linux/Config.ext.in
> @@ -1,5 +1,13 @@
>  menu "Linux Kernel Extensions"
>  
> +# Custom logo
> +config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
> +	select BR2_PACKAGE_CUSTOMLOGO

I think this customlogo package is not needed.

> +	bool "Custom logo"
> +	help
> +	  change linux boot logo with your own graphics. 
> +	  Can be used as an early bootsplash.

This help text needs to be improved a bit.

> +
>  # Xenomai
>  config BR2_LINUX_KERNEL_EXT_XENOMAI
>  	bool "Adeos/Xenomai Real-time patch"
> diff --git a/linux/linux-ext-customlogo.mk b/linux/linux-ext-customlogo.mk
> new file mode 100644
> index 0000000..68c613a
> --- /dev/null
> +++ b/linux/linux-ext-customlogo.mk
> @@ -0,0 +1,11 @@
> +################################################################################
> +#
> +# Custom logo
> +#
> +################################################################################
> +
> +LINUX_EXTENSIONS += customlogo
> +
> +define CUSTOMLOGO_PREPARE_KERNEL

You can do the conversion from the original image format to .ppm here
directly, and therefore avoid the need for the customlogo package.

> +	cp $(CUSTOMLOGO_DIR)/logo_linux_clut224.ppm $(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm
> +endef
> diff --git a/package/Config.in b/package/Config.in
> index 7ced9d4..1552f32 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -214,6 +214,7 @@ comment "Sounds"
>  
>  comment "Themes"
>  	source "package/gtk2-engines/Config.in"
> +	source "package/customlogo/Config.in"
>  
>  endmenu
>  
> diff --git a/package/customlogo/Config.in b/package/customlogo/Config.in
> new file mode 100644
> index 0000000..f8502da
> --- /dev/null
> +++ b/package/customlogo/Config.in
> @@ -0,0 +1,16 @@
> +config BR2_PACKAGE_CUSTOMLOGO
> +	bool "Custom logo"
> +	help
> +	  Change linux boot logo with your own graphics. 
> +	  Can be used as an early bootsplash.
> +
> +	  *REQUIRES* a pre installed imagemagick on the host system.

I don't think this is acceptable. You probably should add a
host-imagemagick package, and make the linux package depend on it when
a custom logo is selected.

In addition, when a custom logo is selected, you probably want to tweak
the Linux kernel configuration to make sure it has the relevant options.

Thanks!

Thomas
Yann E. MORIN June 2, 2016, 10:05 p.m. UTC | #2
Angelo, Thomas, All,

On 2016-06-01 22:03 +0200, Thomas Petazzoni spake thusly:
> Hello Angelo,
> 
> It's been a while since you sent this patch. I don't know if this
> feature is important enough to be integrated, but I'll do some review
> anyway.
> 
> On Wed,  3 Feb 2016 00:05:42 +0100, Angelo Compagnucci wrote:
> 
> > diff --git a/linux/Config.ext.in b/linux/Config.ext.in
> > index 755c23b..b752c9c 100644
> > --- a/linux/Config.ext.in
> > +++ b/linux/Config.ext.in
> > @@ -1,5 +1,13 @@
> >  menu "Linux Kernel Extensions"
> >  
> > +# Custom logo
> > +config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
> > +	select BR2_PACKAGE_CUSTOMLOGO
> 
> I think this customlogo package is not needed.

Agreed. Just make the logo path an option directly here:

    config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
        bool "Custom logo"

    config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO_DIR
        bool "directory with logo file(s)"
        help
          Directory with all the logo files to copy. Logo files must be
          named:
            logo_linux_mono.pbm         for the B&W version
            logo_linux_vga16.ppm        for the 16-color version
            logo_linux_clut224.ppm      for the 224-color version

And then, in the .mk file (see below)...

> > +	bool "Custom logo"
> > +	help
> > +	  change linux boot logo with your own graphics. 
> > +	  Can be used as an early bootsplash.
> 
> This help text needs to be improved a bit.
> 
> > +
> >  # Xenomai
> >  config BR2_LINUX_KERNEL_EXT_XENOMAI
> >  	bool "Adeos/Xenomai Real-time patch"
> > diff --git a/linux/linux-ext-customlogo.mk b/linux/linux-ext-customlogo.mk
> > new file mode 100644
> > index 0000000..68c613a
> > --- /dev/null
> > +++ b/linux/linux-ext-customlogo.mk
> > @@ -0,0 +1,11 @@
> > +################################################################################
> > +#
> > +# Custom logo
> > +#
> > +################################################################################
> > +
> > +LINUX_EXTENSIONS += customlogo
> > +
> > +define CUSTOMLOGO_PREPARE_KERNEL
> 
> You can do the conversion from the original image format to .ppm here
> directly, and therefore avoid the need for the customlogo package.

Or better yet, expect the user to provide pre-rendered images to start
with (see at the end)...

> > +	cp $(CUSTOMLOGO_DIR)/logo_linux_clut224.ppm $(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm

... and in the .mk file, just copy all logo files:

    cp $(BR2_LINUX_KERNEL_EXT_CUSTOMLOGO_DIR)/logo_linux_*.p{p,b}m \
       $(LINUX_DIR)/drivers/video/logo/

> > +endef
> > diff --git a/package/Config.in b/package/Config.in
> > index 7ced9d4..1552f32 100644
> > --- a/package/Config.in
> > +++ b/package/Config.in
> > @@ -214,6 +214,7 @@ comment "Sounds"
> >  
> >  comment "Themes"
> >  	source "package/gtk2-engines/Config.in"
> > +	source "package/customlogo/Config.in"
> >  
> >  endmenu
> >  
> > diff --git a/package/customlogo/Config.in b/package/customlogo/Config.in
> > new file mode 100644
> > index 0000000..f8502da
> > --- /dev/null
> > +++ b/package/customlogo/Config.in
> > @@ -0,0 +1,16 @@
> > +config BR2_PACKAGE_CUSTOMLOGO
> > +	bool "Custom logo"
> > +	help
> > +	  Change linux boot logo with your own graphics. 
> > +	  Can be used as an early bootsplash.
> > +
> > +	  *REQUIRES* a pre installed imagemagick on the host system.
> 
> I don't think this is acceptable. You probably should add a
> host-imagemagick package, and make the linux package depend on it when
> a custom logo is selected.

I don't think that adding host-imagemagick just for this is sane. Let
the user provide a ppm image.

> In addition, when a custom logo is selected, you probably want to tweak
> the Linux kernel configuration to make sure it has the relevant options.

Tweak or check? Or do we care?

Regards,
Yann E. MORIN.

> Thanks!
> 
> Thomas
> -- 
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Angelo Compagnucci June 9, 2016, 8:03 p.m. UTC | #3
Yann, Thomas, All,

2016-06-03 0:05 GMT+02:00 Yann E. MORIN <yann.morin.1998@free.fr>:
> Angelo, Thomas, All,
>
> On 2016-06-01 22:03 +0200, Thomas Petazzoni spake thusly:
>> Hello Angelo,
>>
>> It's been a while since you sent this patch. I don't know if this
>> feature is important enough to be integrated, but I'll do some review
>> anyway.
>>
>> On Wed,  3 Feb 2016 00:05:42 +0100, Angelo Compagnucci wrote:
>>
>> > diff --git a/linux/Config.ext.in b/linux/Config.ext.in
>> > index 755c23b..b752c9c 100644
>> > --- a/linux/Config.ext.in
>> > +++ b/linux/Config.ext.in
>> > @@ -1,5 +1,13 @@
>> >  menu "Linux Kernel Extensions"
>> >
>> > +# Custom logo
>> > +config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
>> > +   select BR2_PACKAGE_CUSTOMLOGO
>>
>> I think this customlogo package is not needed.
>
> Agreed. Just make the logo path an option directly here:
>
>     config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
>         bool "Custom logo"
>
>     config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO_DIR
>         bool "directory with logo file(s)"
>         help
>           Directory with all the logo files to copy. Logo files must be
>           named:
>             logo_linux_mono.pbm         for the B&W version
>             logo_linux_vga16.ppm        for the 16-color version
>             logo_linux_clut224.ppm      for the 224-color version
>
> And then, in the .mk file (see below)...
>
>> > +   bool "Custom logo"
>> > +   help
>> > +     change linux boot logo with your own graphics.
>> > +     Can be used as an early bootsplash.
>>
>> This help text needs to be improved a bit.
>>
>> > +
>> >  # Xenomai
>> >  config BR2_LINUX_KERNEL_EXT_XENOMAI
>> >     bool "Adeos/Xenomai Real-time patch"
>> > diff --git a/linux/linux-ext-customlogo.mk b/linux/linux-ext-customlogo.mk
>> > new file mode 100644
>> > index 0000000..68c613a
>> > --- /dev/null
>> > +++ b/linux/linux-ext-customlogo.mk
>> > @@ -0,0 +1,11 @@
>> > +################################################################################
>> > +#
>> > +# Custom logo
>> > +#
>> > +################################################################################
>> > +
>> > +LINUX_EXTENSIONS += customlogo
>> > +
>> > +define CUSTOMLOGO_PREPARE_KERNEL
>>
>> You can do the conversion from the original image format to .ppm here
>> directly, and therefore avoid the need for the customlogo package.
>
> Or better yet, expect the user to provide pre-rendered images to start
> with (see at the end)...
>
>> > +   cp $(CUSTOMLOGO_DIR)/logo_linux_clut224.ppm $(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm
>
> ... and in the .mk file, just copy all logo files:
>
>     cp $(BR2_LINUX_KERNEL_EXT_CUSTOMLOGO_DIR)/logo_linux_*.p{p,b}m \
>        $(LINUX_DIR)/drivers/video/logo/
>
>> > +endef
>> > diff --git a/package/Config.in b/package/Config.in
>> > index 7ced9d4..1552f32 100644
>> > --- a/package/Config.in
>> > +++ b/package/Config.in
>> > @@ -214,6 +214,7 @@ comment "Sounds"
>> >
>> >  comment "Themes"
>> >     source "package/gtk2-engines/Config.in"
>> > +   source "package/customlogo/Config.in"
>> >
>> >  endmenu
>> >
>> > diff --git a/package/customlogo/Config.in b/package/customlogo/Config.in
>> > new file mode 100644
>> > index 0000000..f8502da
>> > --- /dev/null
>> > +++ b/package/customlogo/Config.in
>> > @@ -0,0 +1,16 @@
>> > +config BR2_PACKAGE_CUSTOMLOGO
>> > +   bool "Custom logo"
>> > +   help
>> > +     Change linux boot logo with your own graphics.
>> > +     Can be used as an early bootsplash.
>> > +
>> > +     *REQUIRES* a pre installed imagemagick on the host system.
>>
>> I don't think this is acceptable. You probably should add a
>> host-imagemagick package, and make the linux package depend on it when
>> a custom logo is selected.
>
> I don't think that adding host-imagemagick just for this is sane. Let
> the user provide a ppm image.
>
>> In addition, when a custom logo is selected, you probably want to tweak
>> the Linux kernel configuration to make sure it has the relevant options.
>
> Tweak or check? Or do we care?

A little recap:

a) I should rework the custom logo package and logic, no problem here.
b) Relaying on user pre-installed imagemagick it's not allowed by
buildroot policies but I don't want to build the complete
host-imagemagick only for converting a ppm.
c) IMHO, the complex part here is to convert correctly an image to a
kernel suitable ppm (not so trivial): let a user preparing his own ppm
it's not advisable and prone to errors.

So if b) and c) are not acceptable for buildroot policies, please
discard this patch.

Sincerely, Angelo

>
> Regards,
> Yann E. MORIN.
>
>> Thanks!
>>
>> Thomas
>> --
>> Thomas Petazzoni, CTO, Free Electrons
>> Embedded Linux, Kernel and Android engineering
>> http://free-electrons.com
>> _______________________________________________
>> buildroot mailing list
>> buildroot@busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>
> --
> .-----------------.--------------------.------------------.--------------------.
> |  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
> | +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
> '------------------------------^-------^------------------^--------------------'
Frank Hunleth June 9, 2016, 9:59 p.m. UTC | #4
Angelo and all

On Thu, Jun 9, 2016 at 4:03 PM, Angelo Compagnucci
<angelo.compagnucci@gmail.com> wrote:
> A little recap:
>
> a) I should rework the custom logo package and logic, no problem here.
> b) Relaying on user pre-installed imagemagick it's not allowed by
> buildroot policies but I don't want to build the complete
> host-imagemagick only for converting a ppm.
> c) IMHO, the complex part here is to convert correctly an image to a
> kernel suitable ppm (not so trivial): let a user preparing his own ppm
> it's not advisable and prone to errors.
>
> So if b) and c) are not acceptable for buildroot policies, please
> discard this patch.

I realize this is late feedback, but I actually found your patch
useful, so I'd lobby to not abandon it.

In my use, I had to remove the imagemagick call since it wasn't right
for my image (a pbm), but the rest was convenient. It beat what I
previously was doing which was turning the pbm into a kernel patch.

Regards,
Frank
diff mbox

Patch

diff --git a/linux/Config.ext.in b/linux/Config.ext.in
index 755c23b..b752c9c 100644
--- a/linux/Config.ext.in
+++ b/linux/Config.ext.in
@@ -1,5 +1,13 @@ 
 menu "Linux Kernel Extensions"
 
+# Custom logo
+config BR2_LINUX_KERNEL_EXT_CUSTOMLOGO
+	select BR2_PACKAGE_CUSTOMLOGO
+	bool "Custom logo"
+	help
+	  change linux boot logo with your own graphics. 
+	  Can be used as an early bootsplash.
+
 # Xenomai
 config BR2_LINUX_KERNEL_EXT_XENOMAI
 	bool "Adeos/Xenomai Real-time patch"
diff --git a/linux/linux-ext-customlogo.mk b/linux/linux-ext-customlogo.mk
new file mode 100644
index 0000000..68c613a
--- /dev/null
+++ b/linux/linux-ext-customlogo.mk
@@ -0,0 +1,11 @@ 
+################################################################################
+#
+# Custom logo
+#
+################################################################################
+
+LINUX_EXTENSIONS += customlogo
+
+define CUSTOMLOGO_PREPARE_KERNEL
+	cp $(CUSTOMLOGO_DIR)/logo_linux_clut224.ppm $(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm
+endef
diff --git a/package/Config.in b/package/Config.in
index 7ced9d4..1552f32 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -214,6 +214,7 @@  comment "Sounds"
 
 comment "Themes"
 	source "package/gtk2-engines/Config.in"
+	source "package/customlogo/Config.in"
 
 endmenu
 
diff --git a/package/customlogo/Config.in b/package/customlogo/Config.in
new file mode 100644
index 0000000..f8502da
--- /dev/null
+++ b/package/customlogo/Config.in
@@ -0,0 +1,16 @@ 
+config BR2_PACKAGE_CUSTOMLOGO
+	bool "Custom logo"
+	help
+	  Change linux boot logo with your own graphics. 
+	  Can be used as an early bootsplash.
+
+	  *REQUIRES* a pre installed imagemagick on the host system.
+
+if BR2_PACKAGE_CUSTOMLOGO
+
+config BR2_PACKAGE_CUSTOMLOGO_PATH
+	string "image file path"
+	help
+	  This image will be used as custom logo.
+
+endif
diff --git a/package/customlogo/customlogo.mk b/package/customlogo/customlogo.mk
new file mode 100644
index 0000000..4f11522
--- /dev/null
+++ b/package/customlogo/customlogo.mk
@@ -0,0 +1,15 @@ 
+################################################################################
+#
+# customlogo
+#
+################################################################################
+
+CUSTOMLOGO_SOURCE =
+
+define CUSTOMLOGO_BUILD_CMDS
+	convert $(BR2_PACKAGE_CUSTOMLOGO_PATH) \
+		-dither None -colors 224 -compress none \
+		$(@D)/logo_linux_clut224.ppm
+endef
+
+$(eval $(generic-package))