Disable Boot Messages on Jetson-TX1

How can i disable all booting messages appears on HDMI screen??
I requires showing black screen after bootup until ubuntu desktop screen shows up…

If you edit /boot/extlinux/extlinux.conf, you should be able to edit the kernel command line and change the default logging behavior. I’m not sure of the exact option, but appending ‘quiet’ to the command line or changing the default tty should result in different behavior.

Adding ‘quiet’ and changing to tty1 decrease some log messages but not completely.
Here is my extlinux.conf after modification

TIMEOUT 30
DEFAULT primary

MENU TITLE p2371-2180 eMMC boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      FDT /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
      APPEND fbcon=map:0 console=tty1 console=ttyS1,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 root=/dev/mmcblk0p1 rw rootwait quiet

Please remove below parameters from command line and try again

fbcon=map:0 console=tty1

Yeah… Done…
Thanks.
Removing “fbcon=map:0 console=tty1” and adding quiet at last disable all boot messages on HDMI.

Hi,

I tried the above steps and I’m not getting any boot messages. But, every time I start the TX1, I get Ubuntu login: message for about 1-2 seconds on the console and then, it displays the Ubuntu desktop page.

Ubuntu 14.04 LTS tegra-ubuntu tty1
tegra-ubuntu login: _

But I don’t want any console messages to appear on the screen as I’m using the TX1 for GUI purpose. Can you guys please help me out ?

Thanks,
Prd_umm

I won’t guarantee this, but what you are probably seeing is from the normal mechanics of booting first to multi-user (text) mode, and then running the X11 GUI (graphical) mode (so far as I know any graphical-mode enabled Linux distribution does this). Basically the current terminal is always set to run a console, and then the GUI replaces it. This would not be specific to a Jetson, and any documentation you find on Ubuntu getty would be correct.

If you were running console mode only, then you would normally switch between consoles via alt-F1 through alt-F6. getty sets this up by configuring bash (or a given login name’s shell) to run along with the login prompt. Graphical mode just replaces that terminal program and its login for running the X11 server (this is in sequence where first text mode exists and only after this does GUI run to replace text mode). Each of those alt-F1 through alt-F6 key bindings could be configured to run anything at all, e.g., one of those bindings could run a second or third X11 GUI session, or a curses based text mode wall clock.

To avoid this entirely you’d have to figure out how to configure the terminal of default getty session to not run console or login shell. Prior to bringing up X11 this would leave that getty key binding blanked out and inert. Since you can tell the system that the associated key binding can run anything, you can also tell it to run nothing by leaving the binding unconfigured.

I’m not positive of the best way to do this, you’ll need to experiment. On Ubuntu 14.04 and earlier I think there might be config files in “/etc”. Once you get to Ubuntu 16.04 it is possible this changes due to systemd now controlling part of boot configuration (Ubuntu 16.04 has begun the migration to systemd instead of standard init files, but I do not believe the migration is 100%). Under systemd XML files are used for defining targets, services, and other requirements (something like a master bookmark name to suggest a list of other bookmarks required to achieve that master bookmark). An example is that to go to text mode root user could issue command “systemctl isolate multi-user.target”, and to go back to GUI mode “systemctl isolate graphical.target”.

So in the case of old style init there may be a file listing the terminal associated with the alt-F1 through alt-F6 key bindings and could be edited directly. For systemd you may need to change the XML file to eliminate spawning text console on that particular default terminal key binding equivalent.

Regardless of whether you use systemd or init files there exists a possibility to completely skip text mode, but I suspect that’s a very invasive edit. One side effect would be no console is ever available except through remote login (or perhaps through serial console). If you don’t mind a large learning curve to figure out how to edit text mode completely out of init (along with the completely missing console mode), then this might be useful to you.

Hi,
Thanks linuxdev.

I was able to hide those messages during boot-up.
I figured out the run level and then updated the tty1.conf file in /etc/init and removed respective run level number in this file.

I have already disabled the boot messages and also enable auto login so i can see right away ubuntu desktop. And for the boot period i can see the black screen.

But can i show any image instead of black screen during booting?

Sorry for the long explanation, I know the mechanisms of how this works, but not the specifics for Ubuntu (I’m a Fedora guy!).

In general dealing with splash screens uses the Plymouth software package to look at various parameters on the kernel command line (Plymouth does more than splash screens…though talked about as if it is a splash screen program this is not true…Plymouth does several things during boot and splash is just one of them). This is likely standard even across Linux distributions beyond Ubuntu and Fedora.

More specifically to Ubuntu’s variants, Jetsons should be a standard mechanism which is no different in Ubuntu admin documents from any other Ubuntu distribution (whatever you find on the web for Ubuntu splash screens should be true on Jetsons). Basically it involves setting an argument on the kernel command line parameters through the APPEND key/value pair of extlinux.conf (this triggers Plymouth to look at splash screens…somewhere will be an Ubuntu document naming what that parameter is), and then having init do something based on those variables (there should be an init configuration for the standard splash screens which you can customize for your particular graphics). On Fedora and RedHat variants the splash screen uses kernel command line “rhgb” to trigger splash display…I don’t know what Ubuntu does, but it must be similar (i.e., kernel accepts a command line token known in Ubuntu documentation which is passed to init as environment and triggers Plymouth to use the splash which is configured through init files).

Note that there are a number of kernel command line values which are read directly by the kernel and coding is built into the kernel (for example “rootfs=” is known directly by the kernel); other parameters which are not directly understood by the kernel are simply passed to the environment and any init code which is interested in those parameters just checks its environment (you can add any parameter you want to APPEND, it only matters if something is interested in that parameter…the bash scripts of init can see environment variables and pick what’s interesting). Somewhere in the init scripts of “/etc” will be a script which looks at an environment variable and picks a splash screen behavior. Grep those files for any “splash” code:

cd /etc
sudo egrep -R -i -l 'plymouth.*splash' *
sudo egrep -R -i 'plymouth.*splash' *
sudo egrep -R -i -l 'splash' *

…something in the code you see there will be the boot graphics code.

Thanks linuxdev from great explanation.

ubuntu@tegra-ubuntu:/etc$ sudo egrep -R -i -l 'plymouth.*splash' *
egrep: blkid.tab: No such file or directory
init/plymouth-splash.conf
init/console-font.conf
init/plymouth.conf
init/plymouth-stop.conf
init/plymouth-ready.conf
init/plymouth-shutdown.conf
init/setvtrgb.conf
ubuntu@tegra-ubuntu:/etc$ sudo egrep -R -i 'plymouth.*splash' *
egrep: blkid.tab: No such file or directory
init/plymouth-splash.conf:# plymouth-splash - Show the splash screen
init/plymouth-splash.conf:# plymouth must be started ASAP to avoid racing with gdm, but the splash
init/plymouth-splash.conf:exec /bin/plymouth show-splash
init/console-font.conf:start on starting plymouth-splash
init/plymouth.conf:# plymouth - Userspace bootsplash utility
init/plymouth.conf:# plymouth provides a boot splash screen on the system console using
init/plymouth-stop.conf:# plymouth-stop - Hide the splash screen
init/plymouth-stop.conf:# This job ensures that only one service stops the plymouth splash screen,
init/plymouth-ready.conf:# This job notifies that the plymouth splash screen is up, either started
init/plymouth-ready.conf:# from the initrd or when the 'plymouth-splash' job starts.  The login
init/plymouth-ready.conf:# managers use the event to avoid a race with plymouth-splash:
init/plymouth-ready.conf:start on startup or started plymouth-splash
init/plymouth-ready.conf:     status plymouth-splash | grep -q "start/started" || \
init/plymouth-shutdown.conf:# plymouth - Userspace bootsplash utility
init/plymouth-shutdown.conf:# plymouth provides a boot splash screen on the system console using
init/plymouth-shutdown.conf:post-start exec /bin/plymouth show-splash
init/setvtrgb.conf:start on (started plymouth-splash or started tty1)
ubuntu@tegra-ubuntu:/etc$ sudo egrep -R -i -l 'splash' *
alternatives/x-window-manager
alternatives/ghostscript-current/lib/ps2ai.ps
egrep: blkid.tab: No such file or directory
default/flash-kernel
dictionaries-common/words
init/plymouth-splash.conf
init/console-font.conf
init/plymouth.conf
init/plymouth-stop.conf
init/plymouth-ready.conf
init/plymouth-shutdown.conf
init/setvtrgb.conf
ld.so.cache
mime.types
scite/au3.properties
scite/Embedded.properties
timidity/freepats.cfg
wildmidi/wildmidi.cfg
X11/app-defaults/XScreenSaver-nogl
X11/app-defaults/XScreenSaver

After removing “fbcon=map:0 console=tty1” and enabling auto login i am not getting any plymouth default theme. I am directly getting ubuntu desktop without Ubuntu Logo or loading screen. So is plymouth is disabled after removing from extlinux.conf???

Plymouth is related to setting up video for non-X/non-accelerated purposes (which is why it owns non-X/non-graphical splash screen config). When you removed the framebuffer console (fbcon) you removed what Plymouth manages (this framebuffer is is the non-X/non-accelerated video interface). You essentially unplugged the video card during console mode as a way to stop seeing messages, thus splash also went away.

It is another mechanism which directs logging and warning type messages to console…rather than removing the console, you need to remove the message passing. I’m not sure how to change message debug levels during boot…after boot dmesg can be used for those purposes, e.g., “dmesg --console-off”…I would guess that log level settings during boot depend on the systemd runlevel startup files (but give dmesg commands a shot…maybe log level changes are persistent, I don’t know).

It may be useful to know that systemd has various settings which are understood on the kernel command line (which means systemd services related to dmesg console log levels could also be modified on the kernel command line before boot ever starts). I think part of this may be broken in L4T, but as an illustration consider booting to text mode versus graphical mode. On the interactive bash command line you’d do this:

# to text mode:
sudo systemctl isolate multi-user.target
# to graphical mode:
sudo systemctl isolate graphical.target

…this can also be accomplished with the APPEND key/value pair parameter in extlinux.conf (I do this in grub.cfg on x86_64 for different boot configurations, the syntax is the same, only the file name changes):

systemd.unit=multi-user.target
# OR
systemd.unit=graphical.target

If you find out which of the systemd services sets console logging (which would be included in multi-user.target and graphical.target), then you could substitute your own service configuration by putting an edited version in “/etc/systemd/system/”. Notice that in that directory default is to use a symbolic link to the non-modified version in “/lib/systemd/system/” files…copy the file which does the message logging level setup to etc, edit the copy to not use messages, and suddenly boot will no longer log those messages (but Plymouth will still run and fbcon can display splash). To revert back just remove your modified version (or temporarily rename it) from etc.

Actually with default /boot/extlinux/extlinux.conf i am not getting plymouth splash screen i am getting directly login screen if automatic login is disable.

I think in L4T plymouth is disabled by default.

Actually i have disabled boot message and now i want to show some custom message / image right after TX1 power up. so my customer can know that his board is successfully powered ON. because TX1 takes around 25-30 sec to boot and show my QT app.

So can i add some message or image (Ex. please wait or starting…,) very first of booting so that my customer come to know that board is successfully powered up and now he has to wait for some time.

If it is a simple text message for a console login you can put that text in “/etc/motd” and this will show up (“motd” stands for “Message Of The Day”…there are actually a lot of programs for rotating to a new message each day…in the past it was popular to either have an interesting new “factoid” or joke automatically updated each day). This displays upon login.

Additionally there are shell init files which load when a shell starts (the distinguishing difference of motd and shells is that the login system starts the motd and picks the shell…a shell only runs after motd and login software…although login is automatic in your case the login does still occur). For example, there are bash init files in “/etc/bash.bashrc” for anyone running that shell. Additionally, each user has his own “~/.bashrc” which loads after the “/etc/bash.bashrc” file. Any bash init file can have an echo statement added to display upon shell startup.

A user picking an alternate shell would avoid the bash startup files…motd will run regardless of shell.

Here is how I turned off all boot messages on my Nano. I am setting console to tty1 instead of tty0 so that it does not appear on the screen. That way, I can keep using ${cbootargs} without having to extract every single argument that it would provide and merge with the needed overrides.

Edit /boot/extlinux/extlinux.conf, and apply these changes:

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      # In order to not show any logging or blinking cursors during startup, set these additional args:
      APPEND ${cbootargs} quiet loglevel=0 vt.global_cursor_default=0 console=tty1 fbcon=map:1
      # APPEND ${cbootargs} quiet