TorizonOS boot speedups

I have noticed a particular amount of slowdown in the boot up process in 7.2+, taking almost a minute and a half to get to the login prompt.
I get the following messages during the bootup on the IVY board using just theimx8mp-verdin-wifi-ivy.dts.:

Starting kernel …

[ 0.994522] imx-drm display-subsystem: no available port
[ 1.138084] mdio_bus 30be0000.ethernet-1: MDIO device at address 7 is missing.
Starting systemd-udevd version 255.18^
sysroot.readonly configuration value: 0 (fs writable: 1)
Using legacy ostree bind mount for /
[ 7.004268] imx-bus-devfreq 32700000.interconnect: failed to fetch clk: -2
[ 9.310901] tpm tpm0: A TPM error (256) occurred attempting the self test
[FAILED] Failed to start Network Manager Wait Online.

Torizon OS 7.3.0-devel-20250613+build.239 verdin-imx8mp-15139619 ttymxc2

Is there a way to blacklist some of these or correct some of the issues to speed up the boot process? Why is docker so slow to boot? The module is the same as we were using on another project, and we were using Torizon OS 6.6, I got it down to ~40 seconds, WITH Docker.

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


Hello! Thank you for reaching out with your boot-time concerns on Torizon OS 7.x and the diagnostic messages you’ve encountered. Let’s go through your questions and how you can optimize your system for faster startup.

Addressing Boot-Time Slowdowns

1. Investigate and Profile Boot Process

Start by using Systemd’s built-in analysis tools to understand what’s consuming time during boot:

systemd-analyze time
systemd-analyze blame
systemd-analyze critical-chain

These commands will show you a breakdown of where boot time is spent and which services are taking the longest.
Boot Time Optimization Guide

2. Managing Kernel Messages and Drivers

Some messages (e.g., “imx-drm display-subsystem: no available port” or MDIO/TPM errors) can be suppressed or improved by blacklisting unused drivers:

  • Blacklisting WiFi or Unused Drivers:
    To blacklist drivers you don’t use (e.g., WiFi, TPM, unused display interfaces), create a .conf file in /etc/modprobe.d/.
    Example to disable the TPM driver:
    echo "blacklist tpm" | sudo tee /etc/modprobe.d/blacklist-tpm.conf
    
    This can be repeated for other modules if you are certain they aren’t necessary.
    How to Blacklist Drivers

3. Service Optimization (e.g., NetworkManager, Docker)

  • NetworkManager Wait Online:
    The [FAILED] Failed to start Network Manager Wait Online. message suggests a delay or misconfiguration in network setup. If your application doesn’t need the network to be up immediately, you could:

    • Disable or mask NetworkManager-wait-online.service:
      sudo systemctl mask NetworkManager-wait-online.service
      
    • Additionally, review your /etc/network/interfaces or NM configuration.
  • Docker Startup:

    • Docker waits for network services by default. If your containers don’t require network access right away, you can remove or adjust network dependencies in Docker’s systemd unit with an override:
      sudo systemctl edit docker.service
      
      In the opened editor, add:
      [Unit]
      After=basic.target
      Requires=
      
      Save and exit.
      More details here:
      Running Container Applications Earlier
  • Persisting Changes:
    Save customizations using TorizonCore Builder to make your modified systemd units, blacklist configs, and other tweaks persist across updates.

4. Understanding New Overheads

Torizon OS 7.x may have newer kernel modules, services, or additional device-tree checks that slow down the process compared to 6.6. Disabling unnecessary features can help bring the timing back to your previous results.

Key Steps to Try

  1. Profile boot with systemd-analyze.
  2. Mask unnecessary services (NetworkManager-wait-online, unneeded device drivers).
  3. Reduce Docker’s dependencies.
  4. Persist changes with TorizonCore Builder.
  5. If further reduction is needed, consider customizing your BSP to remove unneeded features entirely.

For a full walkthrough, refer to the TorizonCore Boot Time Optimization documentation.

Let me know if you need help with specific override configuration examples or clarifications!

Best regards,
Toradex AI Assistant.