How can I customize the Ubuntu boot up logo?

88,906

Solution 1

Install Theme

I have created theme as you wanted with a faded Ubuntu logo (moreover I have added an animation of the Ubuntu logo. Hope you'd like it :-P )

Screenshot

Spinning Ubuntu logo and the Ubuntu text logo with a moving fade effect.

Want to see it live?

Go to http://www.youtube.com/watch?v=zPo50gM3txU

Where can you get this theme?

I have uploaded it to Mediafire cloud here.

How do you install it?

Download from the above link, save it on your Desktop, then issue these commands one by one. Please replace /lib/plymouth/themes with /usr/share/plymouth/themes in the commands, if you are on 16.04 or later.

cd ~/Desktop/
tar -xf ubuntufaded.tar
sudo cp -r ubuntu-faded-screen '/lib/plymouth/themes'
sudo rm '/lib/plymouth/themes/default.plymouth'
sudo ln -s '/lib/plymouth/themes/ubuntu-faded-screen/ubuntu-faded-screen.plymouth' '/lib/plymouth/themes/default.plymouth'
sudo update-initramfs -u

How to check it?

  1. Restart Ubuntu and you'll see a nice animation while booting up and shutting down. OR
  2. Copy the whole command below and paste it into a terminal and hit enter. (You will probably need to install a package: sudo apt-get install plymouth-x11)

    sudo plymouthd --debug --debug-file=/tmp/plymouth-debug-out ; sudo plymouth --show-splash ; for ((I=0;I<10;I++)); do sleep 1 ; sudo plymouth --update=event$I ; done ; sudo plymouth --quit

How to create a Plymouth theme yourself

Plymouth Scripting Language is very similar to C or JavaScript. If you know these languages, it'll be very easy to create Plymouth scripts yourself.

Let's start with basics like operators, looping, comments, etc. Three type of comments are supported.

# comment like in bash
// single line comment like in C
/* block comments */

Statements are terminated with a semicolon, e.g.

foo = 10;

Statement blocks can be created with curly brackets, e.g.

{
    foo = 10;
    z = foo + foo;
}

The supported operators are +, -, *, /, %. Shorthand assignment operators are also supported +=, -=, *=, etc. Unary operators are also supported, e.g.

foo *= ++z;

+ is used for concatenation e.g.

foo = "Jun" + 7; # here foo is "Jun7"

Comparison operator example:

x = (3 >= 1); # assign 1 to x because it's true
y = ("foo" == "bar"); # assign 0 to y because it's false

Conditional operations and looping:

if (foo > 4)
{
    foo--;
    z = 1;
}
else
    z = 0;


while (foo--)
    z *= foo;

&&, ||, ! are also supported.

if ( foo > 0 && foo <4 )

This may be new to many readers: hashes, similar to arrays. Hashes can be created by accessing their contents using dot or [ ] brackets, e.g.

foo.a = 5;
x = foo["a"] ; # x equals to 5

Use the fun keyword to define function, e.g.

fun animator (param1, param2, param3)
{
    if (param1 == param2)
        return param2;
    else
        return param3;
}

The two basic Plymouth objects

Image

To create a new Image, give the filename of an image within the theme directory to Image(). Remember, only .png files are supported. For example:

background = Image ("black.png"); 

To show a text message you must create an Image of the text. (This might surprise you.) For example:

text_message_image = Image.Text("I love Ubuntu");

Width and height can be found using GetWidth() and GetHeight(); for example:

image_area = background.GetWidth() * background.GetHeight();

One can rotate or change the size of an Image; for example:

down_image = logo_image.Rotate (3.1415); # Image can be Rotated. Parameter to Rotate is the angle in radians
fat_image = background.Scale ( background.GetWidth() * 4 , background.GetHeight () ) # make the image four times the width

Sprite

Use Sprite to place an Image on screen.

Creating a Sprite:

first_sprite = Sprite ();
first_sprite.SetImage (background);

Or by supplying image to its constructor,

first_sprite = Sprite (background);

How to set different the sprite to different positions on screen (x,y,z):

first_sprite.SetX (300); # put at x=300
first_sprite.SetY (200); # put at y=200
background.SetZ(-20);
foreground.SetZ(50);

Or you can set all at once with SetPosition():

first_sprite.Setposition(300, 200, 50) # put at x=300, y=200, z=50

Changing opacity:

faded_sprite.SetOpacity (0.3);
invisible_sprite.SetOpacity (0);

Some miscellaneous methods used are:

Window.GetWidth();
Window.GetHeight();
Window.SetBackgroundTopColor (0.5, 0, 0); # RGB values between 0 to 1.
Window.SetBackgroundBottomColor (0.4, 0.3, 0.6);
Plymouth.GetMode(); #  returns a string of one of: "boot", "shutdown", "suspend", "resume" or unknown.
etc.

Predefined Functions

Plymouth.SetRefreshFunction (function); # Calling Plymouth.SetRefreshFunction with a function will set that function to be called up to 50 times every second
Plymouth.SetBootProgressFunction(); # function is called with two numbers, time spent booting so far and the progress (between 0 and 1)
Plymouth.SetRootMountedFunction(); # function is called when a new root is mounted
Plymouth.SetKeyboardInputFunction(); # function is called with a string containing a new character entered on the keyboard
Plymouth.SetUpdateStatusFunction(); # function is called with the new boot status string
Plymouth.SetDisplayPasswordFunction(); # function is called when the display should display a password dialogue. First param is prompt string, the second is the number of bullets.
Plymouth.SetDisplayQuestionFunction(); # function is called when the display should display a question dialogue. First param is prompt string, the second is the entry contents.
Plymouth.SetDisplayNormalFunction(); # function is called when the display should return to normal
Plymouth.SetMessageFunction(); # function is called when new message should be displayed. First arg is message to display.

Mathematical Functions

Math.Abs()
Math.Min()
Math.Pi()
Math.Cos()
Math.Random()
Math.Int()
etc.

It is better to modify an existing script than to start from scratch.

Open up .script file from my uploaded theme and try to understand what it does. A fantastic guide can be found here.

I'm sure you'll learn this. It isn't hard. Let me know if you need any help.

Hope it'd help you create one yourself.

Answer to Roshan George's Comment : Is it possible to replace the purple colour with an image as background in the default Plymouth theme names "ubuntu-logo" ?

background = Image ("your-image.png"); 
sprite = Sprite (background.Scale (Window.GetWidth(), Window.GetHeight()));
sprite.SetX (0); # put at x=0
sprite.SetY (0); # put at y=0

You might need to add sprite.SetZ (-10);

You should remove

Window.SetBackgroundTopColor (p, q, r);
Window.SetBackgroundBottomColor (a, b, c);

where p, q, r, a, b, c are some values.

More links

Solution 2

Use the Plymouth Manager to change this. You can get it from from here on Launchpad or run the commands below.

wget https://launchpad.net/plymouth-manager/trunk/stable/+download/plymouth-manager_1.5.0-1_all.deb
sudo dpkg -i plymouth-manager_1.5.0-1_all.deb 

After that you will need to launch plymouth-manager with the command:

sudo plymouth-manager

The "magic" command if you want to do all by yourself, (writing your own plymouth config file), and you want to apply it when you are ready is:

sudo update-alternatives --config default.plymouth && sudo update-initramfs -u

Solution 3

I have changed the GRUB screen with the GRUB Customizer software. But if you want to change the Plymouth screen it's different.

All the things of this software is in the /lib/plymouth/themes directory and all the animation of this one is in the /lib/plymouth/themes/ubuntu-logo/ubuntu-logo.script file.

If you want to modify to your liking Plymouth, all you need is on the ubuntu-logo folder.

You can do it by your own without the help of any external software, but you must understand programming.

Also you can find tools to do that in the Ubuntu repository, but you need to learn to create Plymouth themes.

Good luck!

Share:
88,906

Related videos on Youtube

Roshan George
Author by

Roshan George

Updated on September 18, 2022

Comments

  • Roshan George
    Roshan George over 1 year

    I am making a custom distribution, and have a question about the Ubuntu Logo with 5 dots displayed when booting up.

    The Ubuntu-Logo-Script in the /lib/plymouth/themes/ubuntutext folder has the word Ubuntu and beneath that 5 progressing 'dots'. Is it possible to remove the progress bar dots, and instead replace it with a faded Ubuntu logo, that gradually colors up to full?

    enter image description here

  • Nirmik
    Nirmik almost 12 years
    Can i get the same as u have created but with the ubuntu logo and text(in same positions like now) glowing and diming alternately(when logo glows,txt dims and when text glows,logo dims) with no rotating border and a slit progress as the Ubuntu9.10 playmouth...i.e this-wiki.ubuntu.com/Artwork/Incoming/Karmic/Boot/… would like to have only the slit progress bar like the one in the link...the txt and logo being in positions same as urs...Can u help me have that?? m trying to learn from what u have xplained meanwhile...Thanx! gr8 answer
  • Rinzwind
    Rinzwind almost 12 years
    Sometimes I wish I could upvote more than 1 time :D
  • ish
    ish almost 12 years
    @Rinzwind : I just gave him "10 upvotes" on behalf of us all :)
  • Roshan George
    Roshan George almost 12 years
    Thanks man, the tutorial is superb. I look forwrd in diting this. Is that allowed ?
  • Rahul Virpara
    Rahul Virpara almost 12 years
    @RoshanGeorge sure, you can edit this. We have power of Freedom ! :-)
  • Roshan George
    Roshan George over 11 years
    I would like to know whether it is possible to change the live cd plymouth theme ?
  • Lucio
    Lucio about 11 years
    You have to create your own LiveCD.
  • Lucio
    Lucio about 11 years
    @virpara You have created a full Plymouth Scripting Language guide! You can create Wikipedia entry with that info :)
  • Roshan George
    Roshan George almost 11 years
    Is it possible to replace the purple colour with an image as bavkground in the default plymouth theme names "ubuntu-logo" ?
  • Rahul Virpara
    Rahul Virpara almost 11 years
    @RoshanGeorge I've updated the answer.
  • Roshan George
    Roshan George almost 11 years
    @virpara , but this doesnot show up in an distro made using ubuntu-builder. What privileges should be given ?
  • Rahul Virpara
    Rahul Virpara almost 11 years
    @RoshanGeorge Did you run sudo ln -s '/lib/plymouth/themes/your-theme/your-script.plymouth' '/lib/plymouth/themes/default.plymouth'; sudo update-initramfs -u ? this command changes your default plymouth theme and updates initrd file
  • Roshan George
    Roshan George almost 11 years
    i did that, but still it is not showing..i just get a black screen. should i do chmod a+x to the themes folder ?
  • Rahul Virpara
    Rahul Virpara almost 11 years
    @RoshanGeorge Are you able to check that using plymouth-x11 ?
  • Roshan George
    Roshan George almost 11 years
    how do i do that
  • Rahul Virpara
    Rahul Virpara almost 11 years
    please follow How to check it ? in answer.
  • Roshan George
    Roshan George almost 11 years
    Hi, I found the initrd file and it has the plymouth theme I made, but it is not running when I either boot up the live cd, or when I instal it.
  • Rahul Virpara
    Rahul Virpara almost 11 years
    @RoshanGeorge Did you put that initrd file in your squashfs and also inside iso file ?
  • Roshan George
    Roshan George almost 11 years
    I am using ubuntu-builder, so uncompressing and compressing of squashfs is done automatically, so, s there a provision for adding it?
  • Rahul Virpara
    Rahul Virpara almost 11 years
    You have to do it using chroot. You should not put your /boot/initrd to extracted file-system(from .squashfs). Please wait for a day or two. I'll put complete guide here.
  • shreddish
    shreddish about 8 years
    @viapara unbelievable tutorial really appreciate the level of detail! I have customized your original file a little bit and I have one question I am running this on ubuntu 15.10 and when it starts up the background is black even though I have set the background top and bottom to white. The only colors that are white are the images that I have replaced yours with? Any idea why this would be happening?
  • Olivier
    Olivier almost 8 years
    Note that in 16.04, the themes directory location changed to: /usr/share/plymouth/themes
  • Kaz Wolfe
    Kaz Wolfe over 7 years
    Holy crap, this is impressive. A well deserved +1.
  • Xiaodong Qi
    Xiaodong Qi about 7 years
    Since Ubuntu 16.04, the plymouth theme directory has been changed as told by another comment. Please update your answer to reflect this, if you have a chance. Thank you!
  • Puspam
    Puspam over 3 years
    Thanks for posting such a helpful answer. Once I had tried to modify a Plymouth script, but I became mad by looking at a long script. But after reading your answer, I can now make a complete meaning out of it.