This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How can I replace the Tux Splash Screen?



I'm interested in replacing the Tux splash screen with my own Image. I searched around a bit but I haven't found anyway to get this working yet.

The cloest I found seemed here: http://sumanprasanna.wordpress.com/2012/12/11/how-to-change-your-boot-logo-in-linux-kernel/

but it seems to not be quite there.

My updates:

1) stored my image.png to drivers/video/logo

2) Used netpbm to convert it to logo_emerson.png

3) Updated the header file: include/linux/linux_logo.h for my new structure:

extern const struct linux_logo logo_emerson;

4) Updated the drivers/video/logo/Kconfig file:

 config LOGO_EMERSON
  bool "Emerson logo"
  default y

 

5) And the drivers/video/logo/Makefile:

obj-$(CONFIG_LOGO_EMERSON)  += logo_emerson.o

 

6) and finally the logo.c source file:

 #ifdef CONFIG_LOGO_EMERSON
  logo = &logo_emerson;
 #endif

 

After that I updated the defconfig to remove the original Tux logo and add my new one:

CONFIG_LOGO_EMERSON=y
#CONFIG_LOGO_LINUX_MONO is not set

Then I executed a "make linux_clean" and a "make linux" to rebuild the kernel. The result was a build failure:

 scripts/kconfig/conf --silentoldconfig Kconfig
warning: (SOC_OMAP5 && SOC_DRA7XX) selects ARM_ERRATA_799270 which has unmet direct dependencies (CPU_V7 && SMP)
warning: (SOC_OMAP5 && SOC_DRA7XX) selects ARM_ERRATA_799270 which has unmet direct dependencies (CPU_V7 && SMP)
make[1]: Leaving directory `/home/mike/ti-sdk-am335x-evm-07.00.00.00/board-support/linux-3.12.10-ti2013.12.01'
make[1]: Entering directory `/home/mike/ti-sdk-am335x-evm-07.00.00.00/board-support/linux-3.12.10-ti2013.12.01'
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
make[2]: `include/generated/mach-types.h' is up to date.
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  GZIP    kernel/config_data.gz
  CHK     kernel/config_data.h
make[4]: *** No rule to make target `drivers/video/logo/logo_emerson.o', needed by `drivers/video/logo/built-in.o'.  Stop.
make[3]: *** [drivers/video/logo] Error 2
make[2]: *** [drivers/video] Error 2
make[1]: *** [drivers] Error 2
make[1]: Leaving directory `/home/mike/ti-sdk-am335x-evm-07.00.00.00/board-support/linux-3.12.10-ti2013.12.01'
make: *** [linux] Error 2


So, the error seems to make some sense, there's no logo_emerson.c file to generate the object file... however I can't find a ".c" file to match any of the others:

mike@mike-VirtualBox:~/ti-sdk-am335x-evm-07.00.00.00/board-support/linux-3.12.10-ti2013.12.01/drivers/video/logo$ ls
clut_vga16.ppm             logo_emerson2.ppm        logo_sgi_clut224.ppm
EmersonLogo800x480.png     logo_emerson.ppm         logo_spe_clut224.ppm
Kconfig                    logo_linux_clut224.ppm   logo_sun_clut224.ppm
logo_linux_mono.pbm      logo_superh_clut224.ppm
logo_blackfin_clut224.ppm  logo_linux_vga16.ppm     logo_superh_mono.pbm
logo_blackfin_vga16.ppm    logo_m32r_clut224.ppm    logo_superh_vga16.ppm
logo.c                     logo_mac_clut224.ppm     Makefile
logo.o                     logo_dec_clut224.ppm       logo_parisc_clut224.ppm

Thoughts on how to fix this, or a better set of instructions to follow?

  • Mike Worster said:
    mike@mike-VirtualBox:~/ti-sdk-am335x-evm-07.00.00.00/board-support/linux-3.12.10-ti2013.12.01/drivers/video/logo$ ls clut_vga16.ppm logo_emerson2.ppm logo_sgi_clut224.ppm EmersonLogo800x480.png logo_emerson.ppm logo_spe_clut224.ppm Kconfig logo_linux_clut224.ppm logo_sun_clut224.ppm logo_linux_mono.pbm logo_superh_clut224.ppm logo_blackfin_clut224.ppm logo_linux_vga16.ppm logo_superh_mono.pbm logo_blackfin_vga16.ppm logo_m32r_clut224.ppm logo_superh_vga16.ppm logo.c logo_mac_clut224.ppm Makefile logo.o logo_dec_clut224.ppm logo_parisc_clut224.ppm

    I see a much different set of files:

    a0193370@ubuntu:~/ti-sdk/ti-sdk-am335x-evm-07.00.00.00/board-support/linux-3.12.10-ti2013.12.01/drivers/video/logo$ ls
    built-in.o                 logo_linux_mono.c        logo_sgi_clut224.ppm
    clut_vga16.c               logo_linux_mono.o        logo_spe_clut224.c
    clut_vga16.ppm             logo_linux_mono.pbm      logo_spe_clut224.ppm
    Kconfig                    logo_linux_vga16.c       logo_sun_clut224.c
    logo_blackfin_clut224.c    logo_linux_vga16.o       logo_sun_clut224.ppm
    logo_blackfin_clut224.ppm  logo_linux_vga16.ppm     logo_superh_clut224.c
    logo_blackfin_vga16.c      logo_m32r_clut224.c      logo_superh_clut224.ppm
    logo_blackfin_vga16.ppm    logo_m32r_clut224.ppm    logo_superh_mono.c
    logo.c                     logo_mac_clut224.c       logo_superh_mono.pbm
    logo_dec_clut224.c         logo_mac_clut224.ppm     logo_superh_vga16.c
    logo_dec_clut224.ppm       logo.o                   logo_superh_vga16.ppm
    logo_linux_clut224.c       logo_parisc_clut224.c    Makefile
    logo_linux_clut224.o       logo_parisc_clut224.ppm  modules.builtin
    logo_linux_clut224.ppm     logo_sgi_clut224.c       modules.order

    I think you need to figure out why all those C files have gone missing...

  • Brad Griffis said:

    I think you need to figure out why all those C files have gone missing...

     
    Great question! How are you populating your TI SDK area?! Here's my steps, start to finish, (I just tried a fresh initialization and copied this direct from the terminal):

    mike@mike-VirtualBox:~/Downloads$ ./ti-sdk-am335x-evm-07.00.00.00-Linux-x86-Install.bin 
    ----------------------------------------------------------------------------
    Welcome to the ti-sdk-am335x-evm-07.00.00.00 Setup Wizard.
    
    ----------------------------------------------------------------------------
    Linux Environment Support Message
    
    
    
    It is highly recommend that the user, or especially new users, install this SDK 
    into a Ubuntu 12.04 distribution environment. This is the environment that was 
    used to develop and test this SDK.
    
    Please note that this suggestion does not prevent the SDK from installing on 
    other Linux Distributions.
    Press [Enter] to continue :
    
    ----------------------------------------------------------------------------
    GPLv3 Components Contained within SDK
    
    
    
    This installation step is to inform you that there are software components 
    within the SDK that are licensed as GPLv3. These software components are for 
    development purposes only, and are intended to be removed before installing the 
    application(s) code in your final product. For more information please refer to 
    the Software Developer's Guide (SDG) for more information on GPLv3 and removal 
    instructions
    
    Please click "Next" to continue installation, or click "Cancel" to exit the SDK 
    installation
    Press [Enter] to continue :
    
    ----------------------------------------------------------------------------
    Choose Destination Location
    
    Setup will install ti-sdk-am335x-evm in the following folder.
    
    To install to this folder, click "Forward". To install to a different folder, 
    click the browse icon and select another folder.
    
    Destination Folder [/home/mike/ti-sdk-am335x-evm-07.00.00.00]: /home/mike/tisdk7
    
    ----------------------------------------------------------------------------
    Review Installation Decisions
    
    
    
    Install Directory:
    	/home/mike/tisdk7
    Press [Enter] to continue :
    
    ----------------------------------------------------------------------------
    Setup is now ready to begin installing ti-sdk-am335x-evm-07.00.00.00 on your 
    computer.
    
    Do you want to continue? [Y/n]: Y
    
    ----------------------------------------------------------------------------
    Please wait while Setup installs ti-sdk-am335x-evm-07.00.00.00 on your computer.
    
     Installing
     0% ______________ 50% ______________ 100%
     #########################################
    
    ----------------------------------------------------------------------------
    Setup has finished installing ti-sdk-am335x-evm-07.00.00.00 on your computer.
    
    mike@mike-VirtualBox:~/Downloads$ ls ~/tisdk7/board-support/linux-3.12.10-ti2013.12.01/drivers/video/logo/
    clut_vga16.ppm             logo_linux_mono.pbm      logo_sun_clut224.ppm
    Kconfig                    logo_linux_vga16.ppm     logo_superh_clut224.ppm
    logo_blackfin_clut224.ppm  logo_m32r_clut224.ppm    logo_superh_mono.pbm
    logo_blackfin_vga16.ppm    logo_mac_clut224.ppm     logo_superh_vga16.ppm
    logo.c                     logo_parisc_clut224.ppm  Makefile
    logo_dec_clut224.ppm       logo_sgi_clut224.ppm
    logo_linux_clut224.ppm     logo_spe_clut224.ppm
    mike@mike-VirtualBox:~/Downloads$ 
    


    So you can see... I installed the TI SDK7, checked the directory, and I do not have any .c files located in the /drivers/video/logo directory. What do you do to populate your directory??

  • The plot thickens!!!  :-)  Ok, so I just opened logo_linux_mono.pbm and I see the following at the top:

    /*
     *  DO NOT EDIT THIS FILE!
     *
     *  It was automatically generated from drivers/video/logo/logo_linux_mono.pbm
     *
     *  Linux logo logo_linux_mono
     */

    So it looks to me like it got generated as part of the build process.   So that said, perhaps you should go back to a "out of the box build" to see where it's being generated and hopefully that will be the missing piece in terms of the step you're missing.

  • OK... that did it. I did the full build and the .c files came back:

    mike@mike-VirtualBox:~/tisdk7$ ls board-support/linux-3.12.10-ti2013.12.01/drivers/video/logo/
    built-in.o                 logo_linux_mono.c        logo_sgi_clut224.ppm
    clut_vga16.c               logo_linux_mono.o        logo_spe_clut224.c
    clut_vga16.ppm             logo_linux_mono.pbm      logo_spe_clut224.ppm
    Kconfig                    logo_linux_vga16.c       logo_sun_clut224.c
    logo_blackfin_clut224.c    logo_linux_vga16.o       logo_sun_clut224.ppm
    logo_blackfin_clut224.ppm  logo_linux_vga16.ppm     logo_superh_clut224.c
    logo_blackfin_vga16.c      logo_m32r_clut224.c      logo_superh_clut224.ppm
    logo_blackfin_vga16.ppm    logo_m32r_clut224.ppm    logo_superh_mono.c
    logo.c                     logo_mac_clut224.c       logo_superh_mono.pbm
    logo_dec_clut224.c         logo_mac_clut224.ppm     logo_superh_vga16.c
    logo_dec_clut224.ppm       logo.o                   logo_superh_vga16.ppm
    logo_linux_clut224.c       logo_parisc_clut224.c    Makefile
    logo_linux_clut224.o       logo_parisc_clut224.ppm  modules.builtin
    logo_linux_clut224.ppm     logo_sgi_clut224.c       modules.order
    

    Another "make linux_clean" again to verify and they were gone:


    mike@mike-VirtualBox:~/tisdk7$ ls board-support/linux-3.12.10-ti2013.12.01/drivers/video/logo/
    clut_vga16.ppm             logo_linux_mono.pbm      logo_sun_clut224.ppm
    Kconfig                    logo_linux_vga16.ppm     logo_superh_clut224.ppm
    logo_blackfin_clut224.ppm  logo_m32r_clut224.ppm    logo_superh_mono.pbm
    logo_blackfin_vga16.ppm    logo_mac_clut224.ppm     logo_superh_vga16.ppm
    logo.c                     logo_parisc_clut224.ppm  Makefile
    logo_dec_clut224.ppm       logo_sgi_clut224.ppm
    logo_linux_clut224.ppm     logo_spe_clut224.ppm
    

    So clearly they're being auto generated/cleaned as you noted... I guess I need a pbm file as well as a ppm file. This was not mentioned in the tutorial I was following.

  • I've changed the logo before as outlined in the steps in this post.  That was for the 3.2 kernel in SDK 6.0, though, but I'm pretty sure it's still valid.

  • jelliott said:

    I've changed the logo before as outlined in the steps in this post.

     
    I read throught the steps there... it sounds like "reformat the image, drop it in the folder and recompile the kernel"... that can't be it right? How would the Kconfig and Makefile be adjusted? Wouldn't the defconfig have to be updated for the new image instead of the old Tux?
     
    I'm not sure I understand how your answer works. Could you explain?
  • I thought about Josh's post a bit and dug through the Makefile and I see it now. The Makefile is looking for the _clut224 suffix on the file name in order to know it's a 224 color image. By renaming my image (and the assiocated code changes in logo.c/Makefile/linux_logo.h) I can now see my code successfully compile.

    I also understand that Josh's changes could be so simple because he was replacing the default 224 color Tux logo with the new one by naming his logo: logo_linux_clut224.ppm (the same name as the previous logo)

    My one sticking point now is that I can't seem to get my logo to show up instead of tux. The code compiles and makes sense, but still Tux remains. I thought it was because the "logo" variable from logo.c was getting overwritten so I went back to the defconfig and updated it:

    CONFIG_LOGO=y
    CONFIG_LOGO_EMERSON=y
    #CONFIG_LOGO_LINUX_MONO is not set
    #CONFIG_LOGO_LINUX_VGA16 is not set
    #CONFIG_LOGO_LINUX_CLUT224 is not set

    So everything was removed except for mine, but still Tux is showing up... I'm hacking through the code right now trying to figure out why I can't see my logo, but that's where I'm at in case anyone else has other ideas.