Locate the native device factory (command line / env property, ServiceLoader, default)
Start the native device factory
If using the new GPIO character device, inspect all GPIO chips and lines to auto-populate GPIO information [this should be skipped if there is an existing board definition file]
Initialise the board info
Detect the local board by inspecting /proc/cpuinfo (fallback to /proc/device-tree/model for Arm64)
Instantiate all board info providers (ServiceLoader) to see if they recognise this device
Populate pin info using the BoardInfoProvider initialisePins method
This can be in Java code
Or via reading a boarddefs text file; attempt look-up using combinations of values from /proc/device-tree/compatible
LibraryLoader will probably get triggered
Load libdiozero-system-utils.so via LIBRARY_PATH and CLASSPATH