That should use “quiet” correctly, but it might be that this does not entirely eliminate boot messages in Linux. Assuming this is not a serial console, and you are speaking of the locally attached HDMI monitor (please verify if this is the case, versus something like a serial console), then U-Boot should not show up either. However, to verify this with an easy test, can you temporarily remove the word “quiet” from “/boot/extlinux/extlinux.conf” and see if the boot messages increase?
Also, what is your ultimate goal for this? For example, are you trying to speed up boot, or perhaps just wanting the end user to not see the boot messages?
Note that stages of boot prior to the Linux kernel won’t output to the monitor anyway (except perhaps for a logo?), and so you should be able to do this entirely from the Linux kernel’s command prompt. The effect of “quiet” says this is working as expected, and so you should be able to use the extlinux.conf file to disable local terminal debug messages.
If you look at this command: cat /proc/cmdline
…then you will see the arguments passed to the kernel at boot. This one is for local console boot messages: console=tty0
This particular argument is unusual in that most arguments have only one occurrence, and any extra arguments prior to the last argument are ignored. Console is different in that it accepts both a serial console argument and a local console argument. I am thinking if you add this to the end of the extlinux.conf’s APPEND key/value pair, then it should work: console=ttyS0,115200n8 console=`
In theory what this would do is keep serial console (unrelated to your issue, and serial console is very useful) while removing the local monitor’s console. It is easy to test, so if this does not work, then you can move on to device tree. I am not positive, but I think the “fbconmap=map:0” is ok to keep (it is the kernel messages being sent to the console which matters, not the fact that a console is possible).
Does that work? If not, then what do you see from this? cat /proc/device-tree/chosen/bootargs
Note that in extlinux.conf the “APPEND” is normally a combination of inheriting from the argument “${cbootargs}”. The content of “${cbootargs}” is from the device tree’s “chosen->bootargs” node. You could remove “console=tty0” from that device tree node and simply remove any occurrence of “console=tty0” from ever reaching “${cbootargs}”. If you need to change the device tree just ask (the earlier steps I mentioned might be enough, so let’s try the easy way first).
Are those messages the only ones showing up? If so, then this is a rather interesting case. However, what is the output of “cat /proc/cmdline”? We have all of the other information from the APPEND of extlinux.conf, plus we have the device tree node. What we don’t have is what the final cmdline is. This is still interesting because it shows most content has gone away (if that screenshot is the only boot output).
My end goal is to create a type of kiosk with nano so i have removed all the jetson boot up logo etc .so this is the only messages which are upcoming up in boot.
Thank you so much for looking into it.Attaching a video for your reference.
This is becoming more interesting! Those messages are purely from the last stages of boot under the Linux kernel, so kernel command line should do the job. Normally the kernel considers only the last instance of some setting passed to it on command line. Earlier on you have “console=tty0”, which is the specification causing print in Linux. Then, at the end, this should be overridden since it has “console=” (and no “tty0”). I am thinking that perhaps some of the code related to what prints at the very end might not be looking at the last specification for “console=”. This seems reasonable since “console=” is one of the few tokens one can pass and it might have meaning in both the first and last instance (all due to having serial console plus regular console).
If this is the case, then you might need to use the device tree. You would edit node “chosen->bootargs”, and remove the “console=tty0” from it, then install the tree again. An example for doing this:
# If dtc is not installed, then:
sudo apt-get install device-tree-compiler
# This might have warnings, ignore them for now unless something fails.
dtc -I fs -O dts -o extracted.dts /proc/device-tree
# Now use a text editor on extracted.dts, find "bootargs" under "chosen". Look for "console=tty0",
# and remove it. Then create a binary from this:
dtc -I dts -O dtb -o edited.dtb extracted.dts
# Place a copy of this at:
/boot
# Add an FDT key/value pair naming this in "/boot/extlinux/extlinux.conf", causing it to become:
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
FDT /boot/edited.dtb
INITRD /boot/initrd
APPEND ${cbootargs} vt.global_cursor_default=0 root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 net.ifnames=0 quiet
Once this boots you should find that file “/proc/device-tree/chosen/bootargs” no long has “console=tty0”, and this would be reflected in “cat /proc/cmdline”.
Alternate: Create a second boot entry instead of modifying the first. Use serial console to select this alternate entry (which would be the one with a new “LABEL” and new “MENU LABEL”). This is safer and leaves the original entry always available.
If there is no more “console=tty0”, and the problem persists, then you have found a bug. The workaround would then probably become one of setting the log level such that those logs are ignored during boot.
Did you remove the “console=tty0” from the device tree? Be certain it is gone from “cat /proc/device-tree/chosen/bootargs”. Once it is gone there, then simply remove all “console=tty0” from extlinux.conf. Then the “console=” (without any argument) would need removal.
Then, as mentioned by @WayneWWW, the next workaround would be setting loglevel to disable logging of messages. Like the other “APPEND” values in extlinux.conf you can put the “loglevel=0” on the end to add that to the command line.
I did all steps mentioned by you to remove console=tty0 from device tree but it is not seems to have any effect on bootargs.
Not sure why after i remove from device -tree it is still not changing bootargs.
Added loglevel=0 but still same messages no change
If the bootargs still has that in it, then it means the device tree (for whatever reason) is still one of the others. The device tree is possibly in two places:
In “/boot” with “extlinux.conf” naming it, or
In a partition (which requires a flash to update, though you don’t have to update the rootfs).
For the case when the extlinux.conf named FDT is found, then the partition is ignored.
Special exception is if security fuses are burned, then only the signed partition version is accepted.
Once you change this in the partition device tree there is no need to use any extlinux.conf version. Even the “console=” (without argument) should be removed (I’m not certain what the effect of this is since console has two entries and not one…one for serial and one for regular terminal). Can you be certain that (other than for serial console) all console= in extlinux.conf is also removed?
There is some difference in flashing different Jetson models for the device tree partition. I don’t know from memory what the correct command would be, but could someone say what the particular DTB file is for flashing of the SD card dev kit (if it is for a third party carrier and eMMC model, then we’d have to use their initial device tree)? And what the command is to flash just that partition without flashing any rootfs content?
Hi
Looks like it is solved i think device tree was not changing because of FDT key value pair i have to add in twice only then it is hiding tty0 in “/cat/proc/device-tree/chosen/bootargs”
here attaching my extlinux.conf
TIMEOUT 10
DEFAULT primary
MENU TITLE L4T boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
FDT /boot/edited.dtb
INITRD /boot/initrd
FDT /boot/edited.dtb
APPEND ${cbootargs} vt.global_cursor_default=0 loglevel=0 root=/dev/mmcblk0p1 rw rootwait rootfstype
=ext4 net.ifnames=0 quiet console=ttyS0,115200n8 console=
strange thing is that if i comment even one occurrence of dtb file its now working.
Glad it worked out. FYI, if you want to (just an option) find out where it was loading and when, then you’d search for device tree content in the boot logs of the serial console. I’d expect device tree entries can occur prior to the Linux kernel loading, as well as near the time of the Linux kernel loading as well (depending on what is loading).
You’d need to open a new thread for that. However, there are already many threads on that topic, so you’ll probably find some answers already out there.
I won’t go into what is in those threads, but if you want to work on that, then the first thing you’d need is a serial console boot log. That log has time stamps of boot even before Linux ever loads…and thus it would tell you where boot time is being spent.