1

i want to reduce boot time on my Raspberry Pi 3B+. I'm using this tutorial http://himeshp.blogspot.com/2018/08/fast-boot-with-raspberry-pi.html and i done 1,2 and 3 step. After this i reboot Pi and check systemd-analyze and boot.log file. There are different boot times, boot time in boot.log is probably the real one. Why systemd-analyze shows 3.8s boot time and it isn't correct value? Thanks for help. enter image description here

enter image description here

2
  • Please don't use pictures of text. Instead paste the text output direct into the question.
    – Ingo
    Commented Oct 3, 2019 at 10:11
  • Where can I find that boot.log file? Have looked on a default Raspbian installation but without success.
    – Ingo
    Commented Oct 3, 2019 at 10:24

1 Answer 1

1

Why systemd-analyze shows 3.8s boot time

Actually what it says is "Startup finished in...". At what point "booting" is finished depends on your definition of booting, which is really about context. It could be defined as the amount of time it takes the kernel to load from power on and launch a userland -- I think this would be equivalent to the first number in the systemd-analyze output (~1.13s), but that is just a presumption.

By "launching a userland" I mean starting the first process (conventionally "init"), which is systemd. All subsequent process running on the system can be traced back to that one, which is the only one started by the kernel.

The init process involves a bunch of forking, generally persistent processes. Most of these will have a point at which they can be considered set up and running; usually this happens very quickly but it may involve ambiguities -- e.g., the ssh daemon takes some small amount of time to open a port, and is then dependant on networking running before it might be considered functional.

There are mechanisms in the init system for services of to establish when they are ready for dependent processes to start, but this is not required and I think it is actually an unusual relationship -- it doesn't really matter to sshd whether networking is available or not, it just does to our definition of having it functional.

Point being, the only meaningful definition of when booting is finished is one based on a particular requirement. Notice that lightdm and the graphical-target are established in that timeline before networking. This means it was possible to login at that point locally, which is a valid and useful definition of when booting is "finished", but that does not mean every single system service has completed initialization.

There may be system services that are misconfigured and not really being used that never reach a functional state, so a definition which requires "everything be ready" is both hard to establish (because services are not required to report to anything that they are ready) and pragmatically pointless.

boot time in boot.log is probably the real one

This is just another definition, and an arbitrary one. It doesn't say anywhere there that "booting is finished". It logs a bunch of specific times for specific checkpoints.

I'm not sure at exactly what point systemd decides to write this file (/var/log/boot.log), and I actually don't have one on Raspbian -- the systems it does exist on, it is pretty clearly when the pre-login console output ends because it is simply a copy of that. But what you have posted isn't that, I suspect it is actually dmesg, syslog, or journald output.

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.