- Some commands do not have an equivalent in the internal language available to the loader (Lua, Forth)
- The language has limited visibility into the devices available
Commands without programmatic equivalent
The following are broken down categorically by architecture or boot firmware interfaces.
EFI environment access is only via the following set of commands:
None of these can be used to fetch EFI environment variables into the language. Setting and clearing environment variables can be done by building a command and invoking it (not optimal, but workable.)
Flattened Device Tree (FDT)
There is information in the FDT which may be useful to loader scripts. There is currently no way for the scripts to fetch information from FDT nodes.
Modifications to the FDT can be done by building a command and invoking it (not optimal, but mostly workable.)
The ubenv command. While individual commands could be build and invoked to populate environment variables that can then be fetched by the language, this is a bit heavy weight doing it this way. It also can pollute the environment which will required cleaning up after populating variables. Having an interface directly from the language would be an improvement.
Limited device visibility
The scripting used in the loader may want to do some decisions based on more detailed device information. For example, obtain the label associated with a partition/volume on a storage device, get the file system format used on the partition/volume, etc. One may not just be able to use the name assigned to the device by the loader to do meaningful, consistent decisions.