📜 ⬆️ ⬇️

Windows 10 IoT: Evolution of Development Tools

In recent years, Microsoft’s focus has shifted toward cloud computing, the Internet of Things (IoT), and related services. At the same time, many devices that interact with cloud services have on-board operating systems (OS). A striking example is Windows 10, released in 2015, which claims to be the universal system for almost any type of device.


Together with the new system, new concepts of application model, service and delivery of updates, as well as development tools that have no analogues in previous versions of the OS. To understand what led to radical changes in Windows 10 (IoT) , and what advantages it will bring to developers of embedded devices, it will be interesting to trace the history of the development of image development tools of Microsoft operating systems.

FAMILY OF OPERATING SYSTEMS WINDOWS EMBEDDED / IOT
')
For use in custom (ie, functionally complete) systems, Microsoft offers a separate family of Windows Embedded operating systems with special licensing terms and additional components designed to simplify the process of creating out-of-the-box embedded solutions [1, 2]. The Windows Embedded family fully supports software (software) developed for Windows versions for general purpose computers (this does not apply to Windows CE / Compact). The operation of the OS components designed to ensure uninterrupted operation of the solution being developed is transparent and invisible to the application software.

The Windows Embedded OS family can be divided into the following groups:



Due to the combination of good compatibility with existing applications and unique embedding capabilities, the last two OS groups usually represent the greatest interest for developers.

As can be seen from the above, Windows 10 IoT belongs to the last group. However, having both the features of the FES group and including special embedding capabilities, the OS does not require separate configuration, and the development process can be reduced to the simplest installation of the system from a boot disk. However, development tools (rather accurate customization) for Windows 10 IoT still exist and are designed to simplify the production of a complete system image, immediately configured with specific project requirements.
Note that with the advent of Windows 10 IoT, some ambiguity in the names is created.

First, Windows 10 IoT itself has three varieties: Enterprise, Mobile Enterprise, and Core, which have some differences, but are based, nonetheless, on a single core [3]. Windows 10 IoT Enterprise may also be called Windows 10 Enterprise LTSB in a number of sources, which is associated with a special method of delivering updates to it (LTSB - Long Term Servicing Branch, means a service branch in which the system automatically installs only critical updates and security updates , and also allows you to postpone the installation for a long time [4]).

Secondly, it should be noted that the name Windows IoT is used instead of the well-established Windows Embedded, which is associated with the development of the Internet of Things (Internet of Things, IoT) and the orientation of Windows 10 IoT to use it in the Internet of Things connected to the cloud.

DEVELOPMENT FOR WINDOWS

It is necessary to clarify that when it comes to the concept of “development for Windows”, the following types of processes should be distinguished:
Development of an OS image, that is, a set of OS components, which, being deployed to a file system, make up an OS ready for loading and using an OS with installed applications;
Development of applications running in the environment provided by the operating system.
Further, we will consider only the development of OS images, as it is in the case of embedded OS there are some features. The development of applications for them is a waste process and is no different from the development of those for the classic general-purpose operating systems.

MODEL SETUP IMAGES (TO WINDOWS 10)

Under the Customization Framework, an image customization model is defined as a certain way of making settings in an OS image that are related to the appearance of the system, network connection methods, user interaction, branding elements, adaptation to the target market to which the device is shipped. This may also include the addition of applications, modification of icons and menus, sounds, network and other system settings [5].
Before the advent of Windows 10, various image customization models were used for various Windows Embedded operating systems.
In Windows Embedded CE, a number of files in different formats are used to describe the configuration of the images; reading the data from them, the assembly system creates an OS image [6]. This includes files storing the list of components, file system structure, and registry data.
Windows Embedded CE systems are unique in their own way, and their configuration model is not like other systems. Unlike other systems, they do not imply complicated maintenance procedures, since the image in this case is actually a firmware (“firmware”) of the device.
The image development tool in this case is Microsoft Visual Studio with installed add-ons for Windows Embedded CE.
Starting with Windows Phone 8.1 systems, the Mobile Managed Centralized Settings Framework (MCSF) [7] is introduced for mobile devices. It is designed for manufacturers of mobile devices and allows them to reduce the number of images that are subject to ongoing support. This model allows, having a single basic image, to carry out various settings in it related to the specific conditions of use of the target device, for example, to change the parameters of communication or branding.
MCSF settings are defined in custom response files (CAFs). These XML files can be created manually or using the development tool supplied with the operating system. During the image build, such a file is converted to a customization package (Customization Package), which is embedded in the device image. It is possible to update or modify such packages in the image.
For all other systems, the Unattend Framework configuration model [8] is intended, which is most familiar to a wide range of IT specialists, since it is usually used to automate the deployment (installation) in classical Windows OS for general purpose computers, which is why the name (Unattend - unattended, automatic deployment).
The essence of this model lies in the so-called answer files (Answer files, sometimes Configuration files) containing a description of the configuration of a specific OS image in XML format. Each component of the OS image includes a number of parameters that can be used to create such an answer file. It is sometimes said that the answer file contains “answers” ​​to the questions of the installation wizard (by analogy with manual input of answers to the system's questions), which is why its name and the essence of such automation are determined.
However, in addition to the above, the Unattend Framework model provides more opportunities:



The answer file development tool is the Windows System Image Manager (SIM) tool from the Windows Assessment and Deployment Kit (ADK) (Fig. 1) [10].

image
Fig. one

For Windows Embedded Standard systems, its variant Image Configuration Editor (ICE) [11] from the corresponding set of development tools is used (Fig. 2).

image
Fig. 2

To create an answer file using these tools, you must first select a system image:



Thus, a response file is created for a specific image or storage of components and its compatibility with other images or repositories is not guaranteed.

It is important to note that when working with SIM or ICE, the developer must understand which phases the Windows installation program goes through (there are 7 of them, but a typical installation includes 4), since setting the parameters of the components requires explicit indication of the installation phase (Fig. 3).

image
Fig. 3

Not to mention one more tool related to deployment, the Microsoft Deployment Toolkit (MDT), which has its own approach to customization and is focused on network deployment of general-purpose Windows systems. Additional information about it can be found on the link [12].

From the description of the models and development tools it is clear that by the release of Windows 10, there was a great deal of their fragmentation: there were several configuration models and development tools that were supplied in several versions with their own features. A developer who mastered a new version of Windows often needed to learn new techniques. There is a need for a qualitative change - the transition to a universal model and development tool, common to all Microsoft OSes, which was accomplished with the release of Windows 10.

WINDOWS 10 IMAGE ADJUSTMENT MODEL

Note that in Windows 10, not only the configuration model and development tools are universal, but the system itself and the Windows Store applications. Considering the previous version, Windows 8.1, we can say that the applications in it were not truly universal. When creating a solution in Visual Studio that was oriented simultaneously on Windows 8.1 and Windows Phone 8.1, three related projects were actually created (Fig. 4):



image
Fig. four

Thus, the developer still had to write separate parts of the code for a specific platform. The interface has also been developed separately.

In Windows 10, such a solution already contains a single project (Fig. 5): applications are truly universal, both at the expense of the system core, which is common to a large number of platforms, and at the expense of supporting an adaptive user interface [13]. Of course, in order to achieve a quality result, the means providing such universality should be used correctly.

image
Fig. five

The universal image customization model in Windows 10 is called the Provisioning Framework [14]. The corresponding Windows Imaging and Configuration Designer (ICD) development tool (Figure 6) from the ADK suite [15] combines work with components, maintenance, and preparation for the deployment of images using both a graphical interface and the command line. This model supports all editions of Windows 10, including Mobile and Core.

image
Fig. 6

The new configuration model (Fig. 7) uses the Provisioning XML Schema, which defines the structure of image component settings. This scheme has the means of specifying the conditions under which the settings fall into the image, which allows you to determine the dependence of a particular image configuration on its state (the so-called multivariate settings [16]). An example of changing the state of an image is, for example, changing the region in the device settings.

image
Fig. 7

The image of any edition of Windows 10 contains the metadata (Settings Manifest) with a description of the components and their possible settings. In the process of developing an image using ICD, all possible settings obtained from this metadata are available in the Settings Store.
From this we can conclude that the development of the image in Windows 10 is not in its component-wise assembly from the component repository, as was the case in Windows Embedded Standard systems, but in fact in the modification of the base image. The basic image consists of components, but they are inseparable, just like in systems like FES.

From the scheme it is not difficult to see that in Windows 10, the parameters of components from previous development models are still available. Moreover, the ADK still includes the Windows SIM tool for creating answer files within the Unattend Framework model, which allows both the use of familiar development tools and the gradual transition to new ones.

The image settings made in ICD are saved in a new answer file format called the Windows Provisioning Answer File (WPAF). The WPAF file is then converted into a Provisioning Package, which contains both the settings themselves and additional components (Deployment Assets), which include drivers, applications, updates, language packs, etc. A unique feature of this package is that it can be applied both in the initial image deployment (on the Imaging Tool diagram) and already on a running image (using the Provisioning Engine). In the first case, a new installation media is created from the base image and the WPAF response file, which includes all the settings made. In the second - already on the deployed image, all settings are applied and additional components are deployed.

Combining settings and additional components in one package (Provisioning Package) solves one of the Unattend Framework problems when additional components and the response file containing the path to them were separated, which created potential difficulties when the file along the specified path was unavailable, for example, due to errors and inaccuracies in the design. This problem was solved, for example, by using configuration sets and OEM folders (Configuration Sets, OEM Folders) [17] or custom modules in Windows Embedded Standard 8 [18]. Another way to solve the problem was to use data images [19] or manually add the necessary software already on the deployed image and then seal it and replicate it. These methods were not always convenient.

Like any new and universal tool, ICD is not in all situations the most suitable means for solving a problem. So, it is noted that some developers [20] recommend using SIM instead of ICD, since ICD “works well with Windows 10 IoT Core, but not with IoT Enterprise”, “is promising, but becomes stable after several releases”, “sealing the system was problematic. "

Indeed, ICD cannot help in sealing the image with the answer file, since The sysprep utility used for sealing expects the Unattend Framework model response file, and ICD can save settings only in WPAF. In our opinion, this is due to the fact that ICD is not focused on the classical model of replicating “deploy-configure-seal-capture” images, when a large number of settings are performed directly on a working image.

We believe that, instead, ICD offers a “configure-deploy” cycle, which does not involve making adjustments on a running image and then replicating it. Thus, each time you get an already configured system with a “clean” installation. In combination with the existing difficulties of embedding classic Win32 applications directly at the deployment stage (we will explain below), such a cycle looks somewhat contradictory.

Some confusion is caused by the fact that using DISM (Deployment Image Servicing and Management, the main tool for deploying and servicing images in Windows on the command line) cannot directly apply the WPAF answer file to the image, but you can do this if the WPAF is part of the Provisioning Package, which, nevertheless, is quite consistent with the ideology of the Provisioning Framework model (see diagram above).

We also noticed that some of the settings made in the ICD do not work as expected, or their behavior is different when creating images of different types. Perhaps this is due to the fact that ICD was designed as a universal tool that hides its power behind external simplicity, and, like any other tool, it requires some time to eliminate roughness. The ICD interface is much simpler than SIM or ICE and does not require deep preparation, and all settings are provided with instantly prompts.

Within the framework of one article, it is almost impossible to describe all the innovations in the development of Windows 10 images, therefore we will list the most significant, including those that are easy to find right in ICD:



image
Fig. eight

In analyzing the new development model and related tools, it is necessary to focus on a number of significant observations:

.

Recommendations for obtaining and testing a trial version of Windows 10 IoT Enterprise are speculated in [23].

You can receive additional consultations, order the development and purchase the Microsoft embedded operating system from the authorized distributor in Russia and the CIS countries Quarta Technologies, www.quarta-embedded.ru

LITERATURE
1. Lockdown features (Industry 8.1). msdn.microsoft.com/en-us/library/dn449278 (v=winembedded.82).aspx
2. .. Windows 8 Embedded Lockdown — . Control Engineering Russia. 2013. № 3 (45). . 64-69. www.controlengrussia.com/programmnye-sredstva/windows-8-embedded-lockdown-vozmozhnosti-dlya-vstraivaniya
3. Windows 10 IoT . www.quarta-embedded.ru/products/windowsembedded/windows10
4. Understanding the Long Term Servicing Branch and Current Branch in Windows 10. windowsitpro.com/windows-10/understanding-long-term-servicing-branch-and-current-branch-windows-10
5. Windows 10 Customization. msdn.microsoft.com/en-us/library/windows/hardware/mt269765 (v=vs.85).aspx
6. Run-Time Image Configuration Files (Compact 2013). technet.microsoft.com/ru-ru/ee478986
7. Managed Centralized Settings Framework (MCSF). msdn.microsoft.com/en-us/library/windows/hardware/dn772150 (v=vs.85).aspx
8. Customize using the desktop Unattend framework. msdn.microsoft.com/en-us/library/windows/hardware/dn898376 (v=vs.85).aspx
9. sysprep. www.quarta.ru/wiki/public :windows:servicing:sysprep
10. Windows (Windows ADK) Windows 8.1. www.microsoft.com/ru-ru/download/details.aspx?id=39982
11. Create an OS Image by Using Image Configuration Editor (Standard 8). msdn.microsoft.com/en-us/library/jj980217 (v=winembedded.81).aspx
12. Microsoft Deployment Toolkit. technet.microsoft.com/ru-ru/windows/dn475741.aspx
13. Guide to Universal Windows Platform (UWP) apps. msdn.microsoft.com/en-us/library/windows/apps/dn894631.aspx
14. Customize using the Windows Provisioning framework. msdn.microsoft.com/en-us/library/windows/hardware/dn898375 (v=vs.85).aspx
15. Windows ADK. msdn.microsoft.com/ru-ru/windows/hardware/dn913721.aspx
16. Create a provisioning package with multivariant settings. msdn.microsoft.com/en-us/library/windows/hardware/dn916108 (v=vs.85).aspx
17. $OEM$. technet.microsoft.com/ru-ru/library/dd744507 (v=ws.10).aspx
18. Modules (Standard 8). msdn.microsoft.com/en-us/library/jj963003 (v=winembedded.81).aspx
19. . technet.microsoft.com/ru-ru/library/cc765989 (v=ws.10).aspx
20. Sean D. Liming and John R. Malin. Addendum 1: Windows 10 IoT Enterprise Build 10240. annabooks.com/Articles/Articles_IoT10/Windows-10-IoT-E-Addendum-1%20Rev1.4.pdf
21. WIMBoot Windows Embedded Industry 8.1. Intel NUC DC3217IYE. ruemb.blogspot.ru/2015/04/wimboot-windows-embedded-industry-81.html
22. WIM-, VHD- FFU-: . msdn.microsoft.com/ru-ru/library/windows/hardware/dn938355 (v=vs.85).aspx
23. Windows 10 Enterprise LTSB. www.quarta.ru/wiki/public :windows:servicing:win10_evaluation

Source: https://habr.com/ru/post/278879/


All Articles