- Что такое Windows 10 IoT
- Windows 10 IoT выросла из Windows Embedded
- IoT Enterprise предназначен для использования с несколькими устройствами
- IoT Core предназначен для простых плат, индивидуальных программ и датчиков
- Windows IoT — это вариант с закрытым исходным кодом для разработчиков Visual Studio
- Windows 10 IoT Enterprise — секреты настройки для Embedded-сценариев
- Предисловие
- О чем же все это говорит?
- Какую бизнес-задачу решаем?
- Подготовка решения
- Шаг 1 – подготовка устройства
- Шаг 2 – установка Win 10 IoT
- Шаг 3 – сохранение образа системы
- Шаг 4 – установка драйверов
- Шаг 5 – русификация системы
- Шаг 6 – настройка питания
- Шаг 7 – отключение аварийного режима загрузки
- Шаг 8 – отключение сообщений об ошибках и всплывающих уведомлений
- Шаг 9 – настройка обновлений системы
- Шаг 10 – настройка запуска приложения
- Шаг 11 – настройка отображения загрузки системы
- Шаг 12 – установка и удаление ключа Windows
- Шаг 13 – запечатываем систему
Что такое Windows 10 IoT
Microsoft предлагает Windows 10 в девяти отдельных выпусках, начиная с домашней версии и заканчивая корпоративной. Windows 10 IoT («Интернет вещей») — это издание, которым Вы, скорее всего, не обладаете, но которое Вы, вероятно, использовали чаще, чем представляете себе.
Windows 10 IoT выросла из Windows Embedded
Windows 10 IoT — это эволюция более ранней версии Windows — Windows Embedded. Вы можете вспомнить банкоматы под управлением Windows XP и нуждающихся в серьезном обновлении. Эти банкоматы и другие подобные устройства работали под управлением Windows Embedded (XPe). Это урезанная версия операционной системы Windows, которая будет хорошо работать на менее мощном оборудовании, использовать один сценарий использования или оба варианта.
Банк может использовать эту ОС для банкомата, розничный торговец может использовать ее для системы POS (точки продажи), а производитель может использовать ее для простого прототипа устройства. Однако Windows IoT — это не просто переименованная версия Windows для использования Интернета вещей, и не только для предприятий и крупных корпораций. Это очевидно в двух разных версиях ОС, IOT Enterprise и IoT Core.
IoT Enterprise предназначен для использования с несколькими устройствами
Microsoft предлагает Windows 10 IoT в двух вариантах: Enterprise и Core. Корпоративная версия по сути Windows 10 Enterprise, но с дополнительными элементами управления блокировкой. С помощью этих элементов управления, например, Вы можете заставить Windows отображать одно приложение для киоска. Windows по-прежнему будет работать в фоновом режиме, но обычные пользователи не должны иметь доступ к этим службам. Если Вы подошли к киоску регистрации и заметили, что приложение для регистрации не работает, и Windows 10 уже видна, Вы, вероятно, столкнулись с Windows 10 IoT Enterprise.
Как и в Windows 10 Enterprise, Вы не можете купить лицензию для IoT Enterprise в магазине. Microsoft распространяет лицензии через партнеров по перепродаже и OEM-соглашения. Поскольку это полная версия Windows, Вы получаете всю мощь, которая прилагается к ней, но есть один существенный недостаток: IoT Enterprise не будет работать на процессорах ARM.
IoT Core предназначен для простых плат, индивидуальных программ и датчиков
IoT Core это урезанная версия. Вы не получаете полный опыт Windows Shell; вместо этого ОС может запускать только одно приложение универсальной программы Windows (UWP) и фоновые процессы. Однако IoT Core будет работать на процессорах ARM. Вы бы выбрали IOT Core для запуска простых программ, которые могут не требовать столько непосредственного взаимодействия с пользователем. Например, термостат Glas использует IoT Core. А благодаря совместимости с ARM Вы можете запускать IoT Core на простых платах, таких как Raspberry Pi .
Эта особенность делает IoT Core отличным выбором для быстрых прототипов для производителей или одноразовых проектов для любителей. Hackster , сообщество разработчиков аппаратного и программного обеспечения, содержит немало уникальных примеров IoT Core, в том числе дверь с распознаванием домашних животных , дверь с распознаванием лиц , информационную панель smarthome и волшебное зеркало . Это все проекты, которые Вы могли бы построить самостоятельно, если у Вас есть необходимые навыки. Microsoft даже продемонстрировала робота на базе Raspberry Pi , который использовал Windows IOT и взаимодействовал с голограммами. Он предоставляет необходимые ресурсы, поэтому Вы можете загрузить IoT Core для личного использования с бесплатной лицензией.
Кроме того, IoT Core на Raspberry Pi или Minnowboard может быть соединен с датчиками и механизмами, такими как камеры, PIR-датчики, сервоприводы и температурные датчики для расширенного использования. Это, в свою очередь, позволяет Windows 10 передавать данные, собранные этими датчиками, что является основной предпосылкой Интернета вещей.
Windows IoT — это вариант с закрытым исходным кодом для разработчиков Visual Studio
Вам может быть интересно, почему кто-то использует Windows IoT вместо альтернатив, таких как Linux или Android. Большая часть этого сводится к тому, для чего или для кого предназначено устройство и кто занимается программированием.
Преимущества открытого исходного кода, такие как варианты лицензирования и настройки, часто рекламируются как замечательные вещи — и это так. Но открытый исходный код не лучший выбор для всех сценариев сценариев. Иногда для конкретных проектов требуется программное обеспечение с закрытым исходным кодом (или проприетарное). Некоторые предприятия и правительства (в лучшую или в худшую сторону) также прямо запрещают использование программного обеспечения с открытым исходным кодом в своих покупках. Даже если компания не запрещает ПО с открытым исходным кодом, оно может быть неофициально осуждено. Если Вы производитель и способны работать с любым из этих вариантов, Вы будете использовать все, что порадует Вашего клиента.
Но если оставить в стороне эти дебаты с открытым исходным кодом и проприетарным программным обеспечением, у некоторых людей есть еще одно явное преимущество. Windows 10 IoT связывается с Visual Studio, и Вы можете использовать эту среду разработки для разработки программ для нее. Фактически, IoT Core спроектирован так, чтобы работать без графического интерфейса и будет подключаться к другому компьютеру с Windows 10 для программирования и обратной связи. Если Вы все равно проводите большую часть времени разработки в Visual Studio, выбор IoT для Windows 10 вместо альтернативы может сэкономить время на обучение и настройку. Вы сможете сразу же использовать весь свой опыт.
Обычный пользователь, вероятно, не будет загружать и использовать IoT для Windows 10, но это не значит, что он не столкнется с этим. По большей части, если Вы не разработчик, эта ОС работает для Вас так, что Вы можете даже не заметить. Это может быть питание киоска, который Вы использовали для заказа еды в ресторане, или приготовления коктейля. Даже если Вы разработчик, и Вы не хотите тратить время на изучение альтернативы, такой как Linux, Windows 10 IoT может быть лучшим вариантом для Вашего следующего проекта.
Windows 10 IoT Enterprise — секреты настройки для Embedded-сценариев
Предисловие
Наверно Вы видели банкоматы, информационные киоски, рекламные панели, на которых отображается ошибка или уведомление системы. Если Вы не видели подобные общественные устройства «живьем», то Вы легко сможете найти подобные фотографии в интернете если поищете картинки по словам «банкомат ошибка windows». А однажды уведомление системы появилось в прямом эфире во время прогноза погоды, фото можно найти по словам «уведомление windows в прямом эфире». Ради интереса еще можете поискать «самый большой синий экран».
О чем же все это говорит?
— Вы любите кошек?
— Нет
— Вы просто не умеете их готовить!
Для специализированных устройств Майкрософт предлагает использовать Windows 10 IoT Enterprise, которая отличается от Windows 10 Enterprise только отсутствием универсальных приложений. Соответственно, с технической точки зрения Win 10 IoT Enterprise является настольной операционной системой, которая подразумевает взаимодействие с пользователем. Но на специализированных устройствах взаимодействия с пользователем не должно быть т.к. порой даже нет пользователя в привычном его понимании, особенно это касается рекламных панелей.
При подготовке специализированного устройства некоторые технические специалисты забывают о вышеуказанном нюансе совсем или забывают отключить какую-либо категорию уведомлений. Данная статья написана чтобы напомнить о некоторых особенностях настройки Windows для специализированных решений. В данной статье мы рассмотрим подготовку решения для одной бизнес-задачи.
Все настройки будут описаны для Win 10 IoT Enterprise 2016 LTSB, демо-версию которой можно скачать здесь.
Какую бизнес-задачу решаем?
Как-то раз я приехал в пункт самовывоза одного онлайн магазина. В данном магазине продавцы только выдавали товар или давали его посмотреть, а заказ нужно было оформлять только на сайте магазина. Чтобы можно было оформить заказ прямо в пункте самовывоза, в зале самовывоза было установлено множество ПК. Сами ПК были спрятаны, был только монитор и мышка, на экране была открыта специализированная база магазина, в которой можно было найти товар и оформить заказ и экранная клавиатура.
Рассмотрим подготовку аналогичного решения, которое будет предназначено для навигации по сайту www.quarta-embedded.ru. Предполагаемые условия использования – без источника бесперебойного питания и с минимальным техническим обслуживанием.
Подготовка решения
Шаг 1 – подготовка устройства
В качестве устройства был взят обычный ПК, с жестким диском 120 ГБ, оперативной памятью 4 ГБ. Режим загрузки ОС – Legacy.
Т.к. у нас устройство будет использоваться без источника бесперебойного питания нужно обязательно предусмотреть внеплановое отключение питания. Т.е. устройство должно само включаться при появлении питания, для этого необходимо соответствующим образом настроить BIOS устройства. Необходимые пункты в BIOS’е можно найти по интуитивно-понятным названиям, у меня это «Advanced > Power-On Options > After Power Loss», выставляем «On». Но если Вы хотите, чтобы при включении устройство оставалось выключенным, когда его выключили намеренно, то установите «Previous State».
Шаг 2 – установка Win 10 IoT
Установка Win 10 IoT Enterprise ничем не отличается от установки Win 10 Enterprise, поэтому не вижу особого смысла описывать установку. Я буду устанавливать «Win 10 IoT Enterprise 2016 LTSB x32» без подключения к интернету, чтобы в систему не «прилетело» ничего лишнего. При первой загрузке создал пользователя Admin.
Шаг 3 – сохранение образа системы
Что, не ждали такого поворота? Только установили систему и сразу сохраняем образ. При подготовке решения желательно периодически сохранять образ системы на тот случай если вдруг что-то пойдет не так. Тогда не нужно будет делать настройку системы сначала.
Когда мы говорим о создании образа мы затрагиваем вопрос тиражирования, но он настолько широкий, что ему можно посвятить отдельную статью и не одну, поэтому в данной статье я не буду подробно описывать данный вопрос.
Для создания технологического (промежуточного) образа я запечатаю систему командой
и создам wim образ системного тома с помощью утилиты DISM.
Важно — если Вы пойдете тем же путем, то после разворачивания такого образа не забудьте скопировать содержимое каталога «Windows\System32\Recovery» на первый том в папку «Recovery\WindowsRE». И сделать это нужно до загрузки ОС т.к. после загрузки ОС каталог «Windows\System32\Recovery» уже будет пустым. У меня это реализовано следующим образом:
Обратите внимание, что после запечатывания система будет автоматически входить во встроенную учетную запись администратора. И теперь автоматически будет запускаться sysprep. Чтобы это окно мне не мешало, я добавил в shell:startup скрипт с одной единственной командой
Чтобы не забыть удалить скрипт, я сразу сделаю скрипт для запечатывания, в котором будет прописана команда для очистки автозапуска.
Мне ведь все равно нужно будет запечатывать систему в oobe режиме.
Все технологические файлы я буду размещать в папке C:\Sysprep
Шаг 4 – установка драйверов
Как ни странно, но некоторые жалуются, что после установки Win 10 «драйверы не установились сами». Спешу Вас огорчить, само ничего не бывает, драйверы необходимо устанавливать. В системе идет некий набор стандартных драйверов, но вряд ли со стандартным набором драйверов можно будет использовать все возможности оборудования. Лучше всего если Вы сами установите наиболее подходящие драйверы для Вашего устройства. Windows может автоматически загружать драйверы из специального хранилища Майкрософта и устанавливать их, но не обязательно что там будут все необходимые драйверы или что это будут подходящие драйверы. Драйвер, который система установит автоматически может привести к сбою системы. Что же делать если Вы оказались в ситуации, когда нужно предотвратить такую автоматическую установку драйвера? Есть 2 варианта:
1. Отключить службу обновления
net stop wuauserv – команда остановки службы
sc config wuauserv start=disabled – изменить режим запуска службы на «Отключено»
Но в таком случае система не будет получать какие-либо обновления вообще
2. Отключить установку конкретного драйвера в групповых политиках
Для этого нужно:
Открыть редактор групповых политик командой gpedit
Перейти в раздел «Конфигурация компьютера\Административные шаблоны\Система\Установка устройства\Ограничение на установку устройств». Англоязычный вариант ветки «Computer Configuration\Administrative Templates\System\Device Installation\Device Installation Restrictions»
В данном разделе Вы сможете запретить установку драйвера по конкретному классу или ID оборудования. Для предотвращения установки других драйверов НЕ нужно устанавливать флажок «Также применить для соответствующих устройств, которые уже были установлены» «Also apply to matching devices that are already installed», иначе Вы сделаете использование устройства невозможным.
Т.к. у меня экспериментальное решение и драйверы особого значения не имеют, я не буду целенаправленно устанавливать драйверы. После подключения к интернету система нашла драйвер на некоторые устройства.
Шаг 5 – русификация системы
Думаю, что это действие весьма простое и его не нужно подробно описывать. Скажу, что для корректного отображения кириллицы я указал русский язык для программ, которые не поддерживают Юникод. Указал расположение, хотя в моем случае это не нужно. И попутно можно изменить часовой пояс т.к. по умолчанию UTC -8. Установил русскоязычный языковой пакет, когда я устанавливал языковой пакет через интернет, мне показалось это долгим, поэтому я установил его с помощью предварительно скачанного пакета «Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab», установил командой
После установки переключил основной язык системы на русский и включил опцию копирования языковых параметров для экрана приветствия и новых учетных записей.
Вот и все, русский язык добавлен, пожалуй, можно сохранить образ системы…
Шаг 6 – настройка питания
Наше устройство не должно засыпать и отключать монитор, поэтому нужно настроить питание соответствующим образом. Питание можно настроить с помощью скрипта:
Шаг 7 – отключение аварийного режима загрузки
Важный момент – если у нашего устройства будет 2-3 раза подряд некорректное завершение работы, то система загрузится в режим восстановления, а этого допускать нельзя. Поэтому отключаем этот режим загрузки. Это можно сделать с помощью команды
Обратите внимание, что данная настройка прописывается в bcd хранилище, которое находится на разделе восстановления. Я не сохраняю раздел восстановления при сохранении образа системы, следовательно после разворачивания системы данная настройка будет в исходном состоянии т.к. будет новое bcd хранилище. Чтобы не забыть про данную настройку я добавлю ее в скрипт запечатывания в oobe режиме.
Шаг 8 – отключение сообщений об ошибках и всплывающих уведомлений
Чтобы система не выдавала сообщения об ошибках, запрос об отправке отчетов об ошибках, сообщения о проблемах с оборудованием, все это нужно отключить. Службу политики диагностики можно настроить в групповых политиках:
Конфигурация компьютера\Административные шаблоны\Система\Диагностика
Диагностика: настройка уровня выполнения сценария — Включить «Только обнаружение и диагностика»
Но мне проще все настроить с помощью одного reg файла.
Всплывающие уведомления можно настроить в групповых политиках «Конфигурация пользователя\Административные шаблоны\Меню «Пуск» и панель задач\Уведомления». Но мне проще включить режим «Не беспокоить», его можно включить в графическом интерфейсе, в центре уведомлений и в реестре. Т.к. эта настройка относится к конкретному пользователю, то и выполнять его нужно под целевым пользователем. Поэтому создаем пользователя, под которым и будет выполняться приложение для общественного использования. Пока этот пользователь будет в группе администраторы, для удобства настройки. Чтобы не было проблем с названием группы русская/английская, то получу название группы по SID’у.
И включаем режим не беспокоить.
Чтобы не забыть исключить пользователя из группы администраторы, добавлю команду на исключение в скрипт запечатывания.
Шаг 9 – настройка обновлений системы
Не помешает установить все актуальные обновления на момент подготовки системы. Настроить обновления Вы можете исходя из специфики работы Вашего устройства. Можно отключить установку всех обновлений или обновлений драйверов, как это сделать мы рассмотрели в шаге 4. А можно отключить установку обновлений системы и оставить обновление драйверов.
Но также возможна ситуация, когда нужно устанавливать обновления системы, но какое-то конкретное обновление выводит систему из строя. В этой ситуации можно запретить установку конкретного обновления. Это можно сделать с помощью утилиты wushowhide.diagcab, которую можно найти здесь.
В групповых политиках Вы можете найти множество детализированных настроек по установке обновлений. «Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Центр обновления Windows»
Т.к. мне обновления не нужны я их отключу полностью:
Здесь я в очередной раз сохраню образ системы.
Шаг 10 – настройка запуска приложения
Навигация по сайту quarta-embedded.ru будет в IE, чтобы убрать доступ к адресной строке и настройкам можно включить полноэкранный режим в групповых политиках. «Конфигурация пользователя > Административные шаблоны > Компоненты Windows > Internet Explorer > Включение полноэкранного режима». И нужно запретить закрытие IE «Конфигурация пользователя > Административные шаблоны > Компоненты Windows > Internet Explorer > Меню браузера > Меню «Файл»: отключить закрытие окон браузера и проводника».
Для запуска приложения вместо оболочки системы будем использовать специальное средство запуска приложений – ShellLauncher. С его помощью можно:
1. Назначать запуск конкретного приложения для конкретного пользователя или группы пользователей
2. Контролировать работу запущенного приложения, при закрытии запущенного приложения можно:
- a. Перезапустить приложение
- b. Перезагрузить систему
- c. Выключить систему
- d. Не предпринимать никаких действий
Сначала нужно добавить ShellLauncher как компонент, это можно сделать в графическом интерфейсе «Панель управления > Программы > Включение и отключение компонентов Window», раздел «Блокировка устройства». Настроить запуск программ можно в ветке реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Embedded\Shell Launcher». настройка запуска программ производится по SID’ам пользователей, SID’ы можно узнать с помощью утилиты whoami. Для включения ShellLauncher’а нужно просто заменить в реестре запуск стандартной оболочки на запуск ShellLauncher’а. И еще маленький нюанс, ShellLauncher не влияет на размеры и положение окна запущенной программы, а IE хотелось бы запустить развернутым на весь экран. Поэтому настраиваем режим запуска IE, опять же под пользователем User, заодно запрещаем вызов контекстного меню IE, чтобы пользователь ничего не испортил.
Теперь настраиваем ShellLauncher, опять же мне все удобней делать с помощью консоли…
И, в качестве примера, можно назначить запускаемую оболочку по умолчанию, когда пользователю не назначено никаких приложений.
И включаем Shell Launcher
Шаг 11 – настройка отображения загрузки системы
В предыдущих версиях Windows можно было установить свои логотипы, которые отображались бы при загрузке системы, сейчас есть только две опции вкл. и выкл. Отключить процесс отображения загрузки можно в bcd хранилище, эти команды я выполню сразу и добавлю в скрипт запечатывания.
Также можно скрыть процесс входа пользователя в систему.
Теперь включаем автоматический вход пользователя User, это можно сделать с помощью команды netplwiz. Перезагружаемся и смотрим что получилось, отображения хода загрузки ОС нет, отображения входа пользователя в систему нет. Только, непосредственно перед входом в систему на несколько секунд появляется значок Win и анимация в виде шариков, но это потому, что ОС в режиме аудита, после запечатывания в режиме oobe этого не будет. Автоматически запустился IE с адресом www.quarta-embedded.ru, чуть позже появилась вкладка microsoft.com, ну ничего, нужно будет добавить в файл ответов запечатывания команду на изменение настроек в реестре
Вот здесь я опять сделаю образ системы.
Шаг 12 – установка и удаление ключа Windows
Перед установкой ключа нужно отключить ПК от интернета, чтобы система не активировалась. Можно добавить ключ и сразу же его можно удалить, чтобы никто не смог его вытащить. При этом система все равно сможет активироваться.
Шаг 13 – запечатываем систему
Чтобы система не задавала вопросов при первой загрузке после запечатывания в oobe режиме, я использую файл ответов, предварительно подготовленный в утилите «Windows System Image Manager». Запускаю скрипт для запечатывания, ниже содержание скрипта и файла ответов.