Using plymouth on tx2.


Plymouth is installed by default but is not enabled.

I do not see the message at boot time, and I want to know how to enable the plymouth screen to be visible.

I don’t know what differences you will run into for the Jetson, but here is some reference material:

One thing to know is that there is no grub boot loader on a Jetson, so if there is information on passing arguments to the kernel or setup in the boot loader itself there will be some differences in how to accomplish this. Mostly everything past boot loader stage will match the generic documentation on the topic, although there may also be limitations based on the video card.

I managed to make it work, kind of (with side effects).

Steps to make it work:
In /boot/extlinux/extlinux.conf:

  • remove “console=ttyS0” (the S matters)
  • replace “console=tty0” by “console=tty1
  • append “quiet loglevel=0 splash” at the end of command line arguments
  • edit /etc/sysctl.conf and uncomment the line that contains “printk”. I also replaced the 4 numbers by 0 to make sure no log makes it through (probably overkill, but 3 is insufficient since I have an “ERROR” in my boot log).
  • install whatever plymouth theme you want (using “update-alternatives --install […]” then “update-alternatives --config default.plymouth” etc., many tutorials exist for that).

Unfortunately, the splash screen arrives very late in the boot process. So you get about 8 seconds of active HDMI black screen instead of boot logs, and then only 1-2 seconds of splash screen when booting into Ubuntu Desktop.

I tried changing the dependencies of plymouth-start.service in systemd but it mostly broke plymouth.

What I understand from these modifications:

  • console=tty1 is a “real” display (framebuffer? pixel display?) and is compatible with scripted plymouth themes (unlike tty0 which only accepts text themes).
  • “quiet loglevel=0” tells the kernel to not log anything, until this parameter is overridden by the config file present in root fs (once mounted).
  • /etc/sysctl.conf override loglevel. With these 2 settings, there is absolutely no visible boot logs.
  • console=ttyS0: I don’t know what this does, but it doesn’t work if you leave it.

Main (bad) side effect: the boot UART prints nothing (except for the VERY early console, about 10 lines of boot log), and it may even be inactive after boot (no login etc.).

You can list a couple of consoles at once, typically a “real” console as you mentioned, a “ttyN”. The serial console “ttyS0” is in addition to the “real” console and the two won’t necessarily be mutually exclusive (it is odd that having ttyS0 has any effect on tty0 or tty1). If serial console does not interfere it is a bad idea to remove its access. Initial boot to a “real” tty should be a framebuffer. I do not know in what ways plymouth cares about or differs between tty0 and tty1. Since ttyS0 is a serial UART and ttyN terminals are a framebuffer I could imagine plymouth won’t work on serial console…and perhaps inadvertently disables plymouth on the framebuffers as well (perhaps configuration could get around that).

I don’t know if it is possible, but it seems like there should be a way to change log level on ttyS0 separately from tty0 or tty1. It would be unfortunate if both consoles had to have the same log levels, but during initial single user boot perhaps both consoles must mirror each other until reaching multi-user target (and multi-user target might be when plymouth splash begins and would explain the delay between black screen and logo, but it is just speculation).

This was working with R27.1, but it doesn’t work with R28.1.

The same thing happens when a serial console is present (“plymouth:debug” kernel option yields “No pixel displays”, and the default text splash is displayed).
When a serial console is not present in bootargs, another error happens: “no seats available to show splash on, waiting…”, and it shows no splash at all.

I have not tried to set this up, but one of the major changes between a 3.x kernel and a 4.x kernel series is that graphics mode is set within the kernel itself, and not via outside libraries (such as Xlib). There has probably been a change to framebuffer console configuration causing this, but I don’t know.

I remembered trying this on rel-24.2.1 in some topics, but not on rel-28.1 since plymouth is not in the scope.

By removing tty0 and ttyS0 in kernel command, plymouth would select framebuffer as interface to show splash screen.

However, the latency is as slow as Maxbns described. Becasue udev “fb0” is initiated late and cause plymouth also be late.

This file is also missing and need to add manually.


with follow content

# Distribution defaults. Changes to this file will get overwritten during
# upgrades.

hi linuxdev
for boot animation (plymouth ) ,when doing sudo update-initrams -u error is show

aatch-64 -linux-gnu-egl. conf and global. conf exits but…

There isn’t enough there to say, but I have doubts that update-initramfs has sufficient knowledge of TX2 boot to correctly handle this.

The part where it mentions on file for “/etc/” (where “...” is either EGL or GL) implies a directory was named for the dynamic linker to make available, but the conf file (or perhaps the location named in the conf file) does not exist. What do you see from “ls -l /etc/*.conf”?

What use case is this for? Knowing what you are trying to do might help answer.

What do you see from:
ldconfig -p | egrep '(libGL|libEGL)'