Remove Boot lines

Hi all,

I want to make my system boot without displaying all the log lines of Ubuntu.
Do you know how i could do such a thing ?

Thank you
Regards,
François

The kernel arguments which cause console to tty0 are “console=tty0”. You’ll see this reflected in “cat /proc/cmdline”. The method of removing this depends on which release you are using. Prior to R28.1 this was just part of “/boot/extlinux/extlinux.conf”. Now it is part of the device tree, so it would need to be removed there, and then the device tree flashed (edited only for that).

Note that part of the device tree belongs to U-Boot, and even stages before this, e.g., cboot. If you have a serial console you can look at U-Boot environment and test changes before committing to them. A change to a variable in the U-Boot command line is effective for only one boot, unless you use saveenv.

One of the variables you will find in the U-Boot command line is “cbootargs” (“print cbootargs” from console):

cbootargs=root=/dev/mmcblk0p1 rw rootwait console=ttyS0,115200n8 <b>console=tty0</b> OS=l4t fbcon=map:0 net.ifnames=0 memtype=0 video=tegrafb no_console_suspend=1 earlycon=uart8250,mmio32,0x03100000 nvdumper_reserved=0x2772e0000 gpt tegraid=18.1.2.0.0 tegra_keep_boot_clocks maxcpus=6 androidboot.serialno=0334916010131 bl_prof_dataptr=0x10000@0x277240000 sdhci_tegra.en_boot_part_access=1
Tegra186 (P2771-0000-500) # setenv cbootargs "cbootargs=root=/dev/mmcblk0p1 rw rootwait console=ttyS0,115200n8 OS=l4t fbcon=map:0 net.ifnames=0 memtype=0 video=tegrafb no_console_suspend=1 earlycon=uart8250,mmio32,0x03100000 nvdumper_reserved=0x2772e0000 gpt tegraid=18.1.2.0.0 tegra_keep_boot_clocks maxcpus=6 androidboot.serialno=0334916010131 bl_prof_dataptr=0x10000@0x277240000 sdhci_tegra.en_boot_part_access=1"
Tegra186 (P2771-0000-500) # print cbootargs
cbootargs=cbootargs=root=/dev/mmcblk0p1 rw rootwait console=ttyS0,115200n8 OS=l4t fbcon=map:0 net.ifnames=0 memtype=0 video=tegrafb no_console_suspend=1 earlycon=uart8250,mmio32,0x03100000 nvdumper_reserved=0x2772e0000 gpt tegraid=18.1.2.0.0 tegra_keep_boot_clocks maxcpus=6 androidboot.serialno=0334916010131 bl_prof_dataptr=0x10000@0x277240000 sdhci_tegra.en_boot_part_access=1

Now “boot” and you should find that no console messages occur on tty0 (I can’t test because my monitor does not like the mode presented during the console phase…but it should work).

You could run “saveenv” and have this be the default from then on (or at least in theory…once more I have not tested since I want console to show messages), or edit the device tree (this latter solution would work regardless of anything else, and would also work in a production environment where you don’t want to boot and manually set environment in U-Boot for each new flash).

Ok i will try this.

there is no way to do it by changing the splash screen conf ?
on internet, i saw some guys talking about plymouth / grub default config …
but i cant find it on the ubuntu 16.04 i have on the jetson.

Thx,
François

Desktop computers have a BIOS (or UEFI), embedded systems do not. This means a Jetson can’t use grub (grub depends on a BIOS or UEFI interface to the hardware), and in turn, anything you read about grub won’t work on your Jetson. U-Boot is used instead…in a way U-Boot is like grub plus BIOS integrated for this specific hardware (some hardware access which would be provided by a BIOS is instead coded directly into U-Boot via drivers which grub would not have).

Plymouth is a different story, this is the same on a Jetson (most of what you read about Plymouth will be the same on a Jetson versus a desktop system). Passing arguments to init (which Plymouth will see) can differ since the bootloader is U-Boot instead of grub. You’d have to determine if the splash screen conf you are referring to is part of grub or if it is part of Plymouth…I don’t know. Telling the kernel to not pass that text should always work…no text for Plymouth or console, and nothing will display regardless of whether text is allowed by Plymouth or not. The “quiet” argument would become irrelevant (unless of course it is the kernel watching this argument instead of just passing it on to Plymouth…but I’m pretty sure this is Plymouth modified to use “quiet”).

My monitor does not like the initial scan rate during TX2 R28.1 boot and refuses to display (this is probably an L4T bug…the EDID is valid but console mode is incorrect until later stages…initial console mode is out of range for my monitor)…this means I can’t test whether the “quiet” argument works or not (I would test and experiment if I could, but I cannot). I would expect methods shown for grub won’t do as you want.

hello,

I have the same question as François so I was pleased to find this thread. However when I changed my cbootargs as recommended here I didn’t get the desired result. It did take a long time before the bootlines started coming, but they were still there at the end.
So I also put the keyword quiet at the end but that didn’t help either since then I saw early lines coming for a short time then stop, clear the screen and show the login lines.
I have a TX2 with the 4.2.2 jetpack.

regards,
Gert

Some releases change steps for device tree flash. If you run command “cat /proc/cmdline”, do you see your argument changes show up there? This is the actual command line the kernel had at boot, double check to make sure the changes are still there.

Keep in mind that earlier in boot there is CBoot and U-Boot possibly putting out log lines, and then later on it is the Linux kernel. You could perhaps post the boot text you are seeing so we’d know from which stage of boot the text is from.

so this is the command:

ncentric@tegra-ubuntu:~$ cat /proc/cmdline 
root=/dev/mmcblk0p1 rw rootwait OS=l4t fbcon=map:0 net.ifnames=0 video=tegrafb no_console_suspend=1 earlycon=uart8250,mmio32,0x3100000 nvdumper_reserved=0x2772e0000 gpt usbcore.old_scheme_first=1 tegraid=18.1.2.0.0 maxcpus=6 boot.slot_suffix= boot.ratchetvalues=0.983055.1 bl_prof_dataptr=0x10000@0x275840000 sdhci_tegra.en_boot_part_access=1 root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 quiet

and this is what is still visible on the screen during startup:

[    0.474831] pca953x 0-0074: failed reading register
[    0.474880] pca953x: probe of 0-0074 failed with error -121
[    0.729798] tegra-xusb-padctl 3520000.xusb_padctl: Invalid OC pin: 2
[    0.784044] tegradc 15210000.nvdisplay: dc_hdmi_hotplug_init: couldn't get regulator vdd_hdmi_5v0, -517
[    1.414758] tw686x 0000:02:00.0: dma0: unable to allocate B-buffer
[    1.414786] tw686x 0000:02:00.0: can't register video
[    1.464287] ina3221x 0-0042: ina3221 reset failure status: 0xffffff87
[    1.464494] ina3221x: probe of 0-0042 failed with error -121
[    3.924163] cgroup: cgroup2: unknown option "nsdelegate"
[    5.236225] using random self ethernet address
[    5.278274] using random host ethernet address
[    5.344751] using random self ethernet address
[    5.385750] using random host ethernet address
[    5.406656] random: crng init done
[    5.406659] random: 7 urandom warning(s) missed due to ratelimiting
[    6.178164] A link change request failed with some changes committed already. Interface br-lan may have been left with an inconsistent configuration, please check.
[    6.403026] vdd-1v8: voltage operation not allowed
[    6.403054] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[    6.422057] vdd-1v8: voltage operation not allowed
[    6.422090] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[    6.443145] vdd-1v8: voltage operation not allowed
[    6.443173] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[    6.445947] vdd-1v8: voltage operation not allowed
[    6.445968] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[    6.553697] usb 1-1: new high-speed USB device number 2 using tegra-xusb
[    6.571058] vdd-1v8: voltage operation not allowed
[    6.571090] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[    6.572264] vdd-1v8: voltage operation not allowed
[    6.572289] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[    6.574195] vdd-1v8: voltage operation not allowed
[    6.574223] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[    7.936069] A link change request failed with some changes committed already. Interface wlan0 may have been left with an inconsistent configuration, please check.
[    7.984406] A link change request failed with some changes committed already. Interface br-wan may have been left with an inconsistent configuration, please check.

which is a bit strang, since if i ook at the log with dmesg these lines are like a selection of everything that was output. It reminds me a bit at what happens if you try to redirect the output of a program to a file but you only get the standard out and the standard errors are still shown and not in the file. Is there such a thing for the bootsequence as well possible?

regards

Your “quiet” did make it through. I’m thinking there is probably also a device tree setting needed, but I don’t know what that setting is. Would someone know what, in addition to “quiet” in the kernel command line, is required to prevent startup boot messages on the HDMI?

Hi @gert.willems

I am also solving the same issue to disable the boot up messages on TX2. I have edited the ‘APPEND ${cbootargs} quiet’ in extlinux.conf file to turn off the boot messages and it worked but I still see few messages that are similiar to the ones that you received (image that you have attached in your post).

I am new to this system and Please let me know if you have the solution. If anybody there can help me, I will really aprrecaite that.

Thanks

Hi there manjotkaurhansra,

I eventually had to acknowledge that the linux kernel itself always needs an output in some way or an other, this can be the screen or a serial port but if you deny this all together, all kinds of nasty stuff starts to happen that you want to avoid as much as possible. So my eventual solution was to give only the screen as output and then switch to a new virtual screen in my rc.local at the end so that I have a fresh clean screen to start from. If in your case you don’t care about any output going to the serial port I suggest you use that as only output for your kernel and then your screen will stay clean and you won’t need to use this “artificial” switching of virtual screens.

regards

1 Like

Do know that you need the “${cbootargs}”, and removing “quiet” helps, but only from the point in time when the Linux kernel takes over. There are other steps required for bootloader stages prior to the Linux kernel loading. The actual “${cbootargs}” derives from the device tree. Specifically, the device tree’s “chosen->bootargs” node.

If you adjust the device tree to remove “console=tty0”, then this may do what you want. The other entry is for serial console, and this you likely want to keep (serial console will not output anything to the monitor).

Note that if you run the command “cat /proc/cmdline”, then this is the full argument to the Linux kernel and will reflect what the kernel was told via both “${cbootargs}” and the “APPEND” key/value pair of extlinux.conf.

1 Like

Thanks @gert.willems