Intel Local Manageability Service allows applications to access the Intel Active Management Technology (AMT) firmware via the Intel Management Engine Interface (MEI).
- Download ACE library from ACE Download page.
- Configure ACE_ROOT environmental variable with download location.
- Add "#define ACE_USES_WCHAR" to ${ACE_ROOT}/ace/config.h - note that Windows LMS requires ACE compiled with WCHAR support.
- Build ACE library.
- Configure ACE_LIBRARY environmental variable with compiled library full path.
- Configure ACE_INCLUDE_DIR environmental variable with full path to ACE_ROOT.
- Configure ACE_DEFINITIONS if any compile definitions should be passed.
- Download libxml from GNOME Download page and build it or use prebuilt binary.
- Configure LIBXML2_LIBRARY environmental variable with compiled library full path.
- Configure LIBXML2_INCLUDE_DIR environmental variable with full path to libxml2 include directory.
- You can use the ACE package provided by your distribution (libace-dev package in Debian).
- Alternatively:
- Download ACE library from ACE Download page.
- Configure ACE_ROOT environmental variable with download location.
- Build ACE with default Linux configuration Building and Installing ACE on UNIX.
- Configure ACE_LIBRARY environmental variable with compiled library full path.
- Configure ACE_INCLUDE_DIR environmental variable with full path to ACE_ROOT.
- Configure ACE_DEFINITIONS if any compile definitions should be passed.
CMake script downloads the MeTee library sources from GitHub if the library is not found in the system paths (git installation and correct proxy setup are required). Alternatively, in order to use pre-compiled MeTee one can set the following environment variables:
- METEE_LIB_PATH to pre-compiled library path
- METEE_HEADER_PATH to headers path
The in-tree copy of OpenWsman library is located at CIM_Framework/openwsman/ directory. The sources are from 2.7.0 version from GitHub with local modifications:
- Passwords are securely cleaned up
For builds that includes unit-tests CMake script downloads googletest from GitHub. To skip automatic download one can download it manually to Common/googletest directory.
- VisualStudio 2017 with CMake support.
- cmake
- C++ compiler
- python3
- debuild (if DEB package is required)
- rpmbuild (if RPM package is required)
- gio-2.0 (libglib2.0-dev package in Debian, glib2-devel in RHEL)
- libcurl (libcurl4-openssl-dev package in Debian, libcurl-devel in RHEL)
- libxerces-c (libxerces-c-dev package in Debian, xerces-c-devel in RHEL)
- libnl-3 (libnl-3-dev package in Debian, libnl3-devel in RHEL)
- libnl-route-3 (libnl-route-3-dev package in Debian, not needed on RHEL)
- libxml2 (libxml2-dev package in Debian, libxml2-devel in RHEL)
- libidn2 (libidn2-0-dev package in Debian, libidn2-devel in RHEL)
- xsltproc
- docbook-xsl
LMS utilizes network service for querying the host network parameters, it can work with NetworkManager, Connman, or directly with netlink. To select network service set CMake flags:
- NETWORK_NM=ON NETWORK_CM=OFF for Network Manager (this is a default one),
- NETWORK_NM=OFF NETWORK_CM=ON for Connman,
- NETWORK_NM=OFF NETWORK_CM=OFF to use netlink directly (with reduced functionality). You can not set both flags to ON.
Note: The DLL signature check tests Intel(R) signatures, so external build should disable DLL signature check.
- Create
build
directory - Run
cmake -G "Visual Studio 15 2017" -A <Build_arch> -DIGNORE_DLL_SIGNATURES=YES <srcdir>
from thebuild
directory (best to set build_arch to Win32) - Run
cmake --build . --config Release --target package -j <nproc>
from thebuild
directory to build an archive with all executables and libraries (e.g. lms-1.0.0-win32.zip)
- Create
build
directory. - Run
cmake <srcdir>
from thebuild
directory. One may need to add -DCMAKE_INSTALL_PREFIX=/usr for installation to match the distribution default (e.g. Debian-based distributions, CentOS, etc.). This is important for DBus and syslog configuration files. - Run
make -j$(nproc)
from thebuild
directory to build project or Runmake -j$(nproc) package
from thebuild
directory to build a Debian package (e.g. lms-1.0.0-Linux.deb) and RHEL package (e.g. lms-1.0.0-Linux.rpm)
- Unpack bin directory from build-generated archive.
- Run
lms-installer.bat install
from unpacked archive.
sudo dpkg -i <generated .deb package>
sudo rpm -i <generated .rpm package>
make install
from thebuild
directory
LMS prints debug logs to syslog with prefix "lms_svc". If syslog filter is installed, messages are routed to /var/log/lms.log
Messages with level WARNING and up are logged by default. Use UNS/linux_scripts/lms_enable_logging_severity.sh script to set desired log level.
LMS service should be restarted to pick up a new log level.
LMS prints debug logs to the file, located at C:\Windows\SysWOW64\Gms.log. The file is trimmed at service start.
Messages with level DEBUG and up are logged by default. Use UNS/windows_scripts/lms_enable_logging_severity.bat script to set desired log level.
LMS service should be restarted to pick up a new log level.
The LMS service on Linux contains a watchdog ticker sub-service which ticks the AMT watchdog. This service uses /dev/iamt_watchdog device node. LMS is packaged with a udev script (70-mei-wdt.rules) that creates an alias named '/dev/iamt_watchdog' for a watchdog device with identity 'iamt_wdt'.
The watchdog sub-service pings the AMT watchdog if two conditions are met: The AMT is provisioned on the platform and the mentioned device node alias is accessible to the service.
Note: Ubuntu-base systems usually blacklist watchdog kernel modules on default. One should unblacklist mei-wdt module manually in /etc/modprobe.d/blacklist-watchdog.conf
On systems with more than one watchdog, usually the platform iTCO_wdt watchdog and with a standard watchdog ticker enabled, e.g. one provided by systemd, the ticker can acquire the AMT watchdog if AMT watchdog loads first and registers as /dev/watchdog0. To prevent that, one need to create an alias for platform watchdog iTCO and configure the standard ticker with that alias.
The AMT watchdog can either report to the management console about system failure, but it can be configured to also perform system reboot. In this case do not enable the platform or other watchdog to prevent the collision.