---
title: "The board's system and boot time"
---

# The board's system and boot time

A board's CPU, memory, processes, systemd units, mounts, network, kernel modules and kernel log read over SSH with read-only commands, confirmed unit, signal and module actions, boot time from systemd-analyze and initcalls, and snapshot exports.

Each board in the **Targets** view has a **System** group, read over SSH with read-only commands (a POSIX shell and BusyBox applets). It replaces the remote system views of the vendor IDEs.

**State:** modelled on a QEMU arm64 board (Linux 6.8.0, BusyBox 1.36.1 init, Dropbear 2022.83, a loadable module, `initcall_debug`): processes, modules, interfaces, kernel log levels, 283 initcalls and probes, following `/dev/kmsg`, a signal refused for a reused PID then sent, `modprobe -r`; on systemd 255 as PID 1 of a container behind OpenSSH 9.6p1: units, journal, `systemd-analyze` time, blame, critical-chain and plot, restart, stop and start; on a BusyBox stand-in: what the image lacks reported; the running app. Not run on a real board (such as the i.MX 8M Plus) or a real boot with firmware and loader phases, with thermal zones, on Windows, with util-linux `dmesg -w`, through `sudo -n`, with bootchart files, or on Wind River Linux images.

## The System group

Expanding **System** reads:

- CPU use per CPU and the load average, cpufreq and thermal zones;
- memory from `/proc/meminfo`, with CMA;
- processes and threads with RSS and PSS from `smaps_rollup`;
- **Services**: systemd units with state, file state, main PID and result, failed units first (init scripts on images without systemd);
- mounts and storage, network interfaces with addresses and counters, kernel modules;
- **Kernel Log** with counts per level.

What the image lacks (no systemd, no `ip`, no module support) is said in the group. **Refresh Target System** reads it again; **Set Target System Refresh Interval...** reads it every 2 to 60 seconds while the group is open and the view shown (`neuralInverse.embeddedLinux.targetSystemRefreshSeconds`; `0` reads only on request). Each read is one SSH session.

## Units, processes and modules

These change the board, and each asks first with the board and the exact command:

- **Start Unit on Target...**, **Stop Unit on Target...**, **Restart Unit on Target...** run `systemctl`;
- **Send Signal to Process on Target...**, **Terminate Process (SIGTERM)...** and **Kill Process (SIGKILL)...** signal only the process that was read (a reused PID is refused);
- **Remove Kernel Module on Target...** runs `modprobe -r`.

**Show Unit Journal on Target...** opens a unit's journal as a document. **Open Kernel Log of Target** opens the kernel log; **Follow Kernel Log of Target** keeps it updating until **Stop Following Kernel Log of Target**.

## Boot time

**Open Boot Time of Target** opens the boot time editor:

- `systemd-analyze` time with its phases (firmware and loader when systemd reports them), **Critical Chain** and **Slowest Units** (blame), and **Show Plot** for `systemd-analyze plot`;
- on every image, the kernel's start of init and the slowest initcalls and probes, when the board booted with `initcall_debug` on the kernel command line (the editor says how to add it to U-Boot's bootargs);
- bootchart files.

## Export a snapshot

**Export Target System Snapshot...** writes the board's system as JSON or text, for comparing boots or releases.

## Agent tools

Four read-only tools read the system, journals and boot time; units, signals and module removal are three tools that always ask first.

Next: [Debug on the board](https://neuralinverse.com/docs/modules/embedded-linux/debug/).
