Windows std что это
Встраиваемые системы: Windows специального назначения
О могущественные хабрамэн и прекраснейшие хабравимен! Ничтожный заметил, что сура о блистательной Windows Embedded ещё не записана в книге мудрости хабра. Да будет дозволено мне, недостойному, поведать вам одну поучительную историю о том как был построен и внедрён особо пуленепробиваемый Windows ® ™ на объектах одной российской железнодорожной корпорации.
Как мы дошли до жизни такой
Итак, одним утром, в нашу скромную обитель Системного ПО прибыл гонец от программистов с ужасными и печальными новостями. Истинно говорю вам — программцы в командировке не смогли обновить ПО на рабочем месте, т.к. оное обуял шайтан и заселил его вирусами, троянами, порнобаннерами и контерстрайком (сауирщенно неуиновные пользователи были сауирщенно ни при чём).
ПО представляет собой АРМ электромеханика СЦБ, написано на VC++ 6 + MFC + WINAPI.
Наш мудрейший халиф, узнав о таком непотребстве, созвал диван. И так говорили придворные мудрецы и звездочёты:
Антивирус не был установлен по причине отсутствия на станциях интернета (станции раскиданы по всей поверхности России и ездить с офлайн базой для обновления — как-то не вариант). На некоторых станциях есть выход в интранет, где есть корпоративный антивирус, но во-первых: не на всех, во-вторых: антивирус там — хтонический Symantec, старый и добрый.
Спустя некоторое количество служебок, было принято решение заменить десктопный Windows на что-то более прочное и надёжное, но при этом win32-совместимое. Из всей массы подходящих платформ был выбран Windows XP Embedded, т.к. по нему уже имелись наработки да и вообще, классная себе такая система.
Windows XP Embedded — это встраиваемая компонентная операционная система на базе Windows XP Professional Edition и предназначена для применения в различных встраиваемых системах: системах промышленной автоматизации, банкоматах, медицинских приборах, кассовых терминалах, игровых автоматах, VoIP-компонентах и т. п. Windows XP Embedded включает дополнительные функции по встраиванию, среди которых фильтр защиты от записи (EWF и FBWF), загрузка с флеш-памяти, CD-ROM, сети, использование собственной оболочки системы и т. п.
В настоящий момент известна как Windows Embedded Standard.
Windows on steroids
Но это всё скучно и просто. Начальство прониклось идеей модульного ПО™, которая заключается в разделении прикладного, системного ПО и конфигурации на «модули» — образы ФС, объединяющие ПО по функциональным признакам. Плюсы такого подхода:
Очевидных минусов вроде бы нет, казалось бы — внедряй и радуйся. Но то, что для QNX (изначально модульная система разрабатывалась для наших промышленных компьютеров) было просто и естественно в Windows стало адовой мигренью и выглядело как попытка скрестить морского ежа с подъёмным краном. В итоге реализовать таки получилось, но обо всём по порядку.
Усекновение Windows
Проблема отключения PnP-устройств может быть решена несколькимиспособами (а ещё есть devcon), но этот меня привлёк своей глобальностью, т.е. заодно с USB-накопителями будут отключены любые другие несанкционированные периферийные устройства, но, при этом сохранится возможность заменить USB-мышь\клавиатуру (т.к. драйвер имеется в системе и он содержит цифровую подпись — такие драйвера устанавливаются автоматически)
Монтирование образов
Поиски ПО для монтирования образов в Windows были долгими и мучительными. Попадались только реализации RAM-drive, что безусловно классно, но не то. Вспомнил, что в комплект Windows Virtual Server включена утилита для монтирования файлов vhd, но как добавить её в мою WinXP и легально ли это вообще, мне так и не открылось. Проект века уже почти накрылся медным тазом, я прикидывал как бы отделаться меньшей кровью и избежать разработки собственного драйвера, как вдруг в гугле всплыла ссылка на отличнейший filedisk. Подходит по всем статьям — может монтировать образы как логические диски (эмулировать носитель он не умеет, но это и не требовалось), выполнен в виде драйвера, что позволяет легко добавить в проект XP Embedded, из коробки содержит консольную утилиту для управления дисками — то что надо для использования в стартовых скриптах. В общем — стопроцентное попадание.
Драйвер установлен, но где же взять сами образы? Берём dd for windows и создаём из её виртуального /dev/null образы требуемого размера. Подключаем их с помощью filedisk, видим логические диски без ФС, создаём на них NTFS, заполняем содержимым.
На одном из образов я разместил стартовые скрипты, которые запускаются после логона и производят некоторые настройки(установка IP-адреса, разрешения экрана и т.п. из конфиг-файла). Ясно, что к моменту логона, образы уже должны быть примонтированы. И тут я перепробовал кучу вариантов — Schtasks, который позволяет выполнять задачу при логоне (но он срабатывал как-то далеко не всегда), загонял скрипт монтирующий диски в сервисы с помощью sc — при этом, содержимое образов было недоступно пользовательским аккаунтам от имени которых запускалось прикладное ПО (как вариант можно было бы перенести задачи из скриптов в службу, но скриптоложство мне почему-то милее этого бездушного C++). В итоге сколхозил — AutoExNt выполняет монтирование перед логоном, а задачи конфигурирования системы исполняются с помощью зашифрованных cpau-заданий от имени администратора (т.к. автологон происходит под аккаунтом обычного пользователя). Это был первый из стабильно работающих вариантов, а отладка к тому моменту так меня достала, что плюнул на уродство способа и оставил как есть.
Дополнительно, разработал небольшую простую утилитку автозапуска, т.к. из проекта был исключён Explorer Shell и ключи авторана в реестре никто не обрабатывал, а программы на старте запускать кому-то надо было.
На этом мои мучения с системным ПО Windows в принципе окончились, настало время подумать как же вся эта хрень будет устанавливаться на целевую машину.
Развёртывание
Windows XP Embedded не содержит в себе инструментов для разметки и форматирования диска, в отличие от обычной Windows XP. Т.е. установка XPe заключается в копировании структуры каталогов проекта в корень раздела, отформатированного в FAT32/NTFS и помеченного как активный (флаг boot установлен). Комплект поставки XPe включает в себя диск WinPE, который содержит необходимые для разметки утилиты, но сценарии применения этого диска довольно туманны(например, он не может быть использован как диск восстановления). Похвалив про себя такую заботу о пользователях, я решил вообще не связываться с продукцией Microsoft для развёртывания XPe (хотя есть вроде бы бесплатный Windows AIK, но по предыдущему опыту попыток разобраться в лицензионных ограничениях продуктов Microsoft было принято решение поискать чего-то на стороне).
Решил попытать счастья с GNU/Linux, т.к. драйвер ntfs-3g уже довольно давно был стабильным и вполне себе работал (и, кстати, в довольно странных местах — по блажи Realtek, в SDK для их мультимедиа-платформ используется как ФС по умолчанию для внешних накопителей). Взял Live-CD Ubuntu LTS, очистил его от логотипов и упоминания Ubuntu (ибо для глубокой модификации системы Canonical выдвигает такие требования) и начал кастомизировать. Выбор дистрибутива был обусловлен личными предпочтениями.
Первая версия среды развёртывания представляла из себя bash-скрипт, который общался с пользователем с помощью zenity. Простенько и со вкусом. Была забракована, как недостаточно божественная в плане UI.
Вторая версия была написана на Mono (C# — корпоративный стандарт) и содержала в себе чуть ли не все графические элементы GTK. Высокая комиссия отметила, что UI по-прежнему недостаточно божественен, но таки жизнеспособен.
Сама процедура установки состояла из вызова внешних утилит — parted для разметки, mkfs.ntfs из пакета ntfsprogs(ntfstools) для создания ФС и rsync для копирования данных с установочного носителя.
Дальше — ребут и переход непосредственно к развёртыванию Windows Embedded.
Заключение
Сейчас Windows XP Embedded (Windows Embedded Standard 2009) стремительно теряет актуальность (хотя поддержка будет продолжаться до 2015 года) — на смену ей пришла Windows Embedded 7, которая гораздо, гораздо, гораздо удобнее XPe, однако разработкой с её использованием занимается мой коллега, я же описал (как мог, хе-хе) собственный опыт. Надеюсь кто-то найдёт что-нибудь полезное в этом сборнике вредных советов.
В завершении приведу список полезных ресурсов по Windows Embedded:
Операционные системы Windows Embedded для встраиваемых решений
Компьютерные технологии все глубже и глубже проникают в жизнь людей. Сегодня многие не представляют своего существования без мобильного телефона или портативного цифрового музыкального проигрывателя. Никого не удивляет установленный на улице или в вестибюле метро банкомат с функцией выдачи наличных по кредитной карте, автомат для оплаты разнообразных услуг с возможностями погашения кредита, автомат для покупки билетов в кино или на концерт. Приемники кабельного или спутникового телевидения есть во многих квартирах. Цифровые фотокамеры вытесняют, по крайней мере, из любительской съемки пленочные. Что общее у всех этих устройств? Все они содержат внутри себя микропроцессор. Зачастую он достаточно производителен — всего несколько лет назад такая вычислительная мощность была мечтой большинства владельцев настольных компьютеров. Для «оживления» этого микропроцессора и выполнения необходимых функций часто используются операционная система с прикладной программой.
10—12 лет назад, на начальном этапе развития рынка встраиваемых интеллектуальных устройств, у производителя практически не было другого выхода, как под каждое новое устройства заново разрабатывать специализированную операционную систему, жестко интегрированную с прикладной задачей, отвечающей за выполнение тех или иных функций. Помимо временных затрат, такой подход требовал усилий большой команды высококвалифицированных разработчиков. Это, в свою очередь, оборачивалось высокой себестоимостью разработки и, следовательно, высокой стоимостью для конечного пользователя, что сильно ограничивало число потенциальных потребителей. Однако спрос на различные интеллектуальные устройства продолжал расти. Решением проблем стоимости и сроков разработки стало появление специализированных операционных систем, предназначенных для широкого спектра решений. Теперь разработчики смогли сосредоточиться на решении прикладных задач и реализации новых функций, необходимых потребителям.
Сегодня корпорация Microsoft предлагает производителям встраиваемых интеллектуальных устройств и разработчикам целое семейство операционных систем для некомпьютерных интеллектуальных устройств (см. рис. 1).
В это семейство входит несколько классических операционных систем с лицензионным ограничением на использование только во встраиваемых и некомпьютерных устройствах, две ОС широкого применения, ОС, ориентированная на вертикальный рынок, а также версии серверных ОС для создания специализированных сетевых серверов.
Microsoft Windows Embedded CE предназначена для мобильных устройств, терминалов, сотовых и IP-телефонов, мультимедийных устройств, телевизионных приставок, промышленной автоматики и др., где требуется минимальный размер, согласованное действие множества микропроцессорных архитектур, а также работа в условиях жесткого реального времени.
Microsoft Windows Embedded Standard предназначена для использования в банкоматах, игровых автоматах, мощных телевизионных приставках, кассовых машинах, торговых терминалах и информационных киосках, т.е. там, где требуется высокая производительность, защита информации, использование стандартного компьютерного оборудования, минимальные затраты на разработку и использование прикладного программного обеспечения.
Microsoft Windows Embedded POSReady предназначена для рынка систем обслуживания и основана на технологиях Windows XP Professional SP3 с дополнительными возможностями по встраиванию; предоставляет возможность стандартного OEM-развертывания из дистрибутива.
Линейка встраиваемых серверных решений от Microsoft логично завершает линейку встраиваемых операционных систем, позволяя выстраивать инфраструктурные решения на платформе Windows Embedded.
Рассмотрим Windows Embedded CE 6.0 и Windows Embedded Standard 2009 подробнее.
Лицензии Windows ОЕМ и ESD
Приобретая в офлайн или онлайн-магазинах лицензионную операционную систему, вам предложат выбрать типы лицензий Windows, каждая из которых дает пользователю различные права. Эти типы определяют условия использования операционной системой, но никак не сказываются на ее функциональности.
Тип лицензии – это правовой инструмент, через который производитель «договаривается» с пользователем об особенностях использования продукта. Сегодня мы разберемся, какие типы лицензий Windows существуют, какие из них самые популярные и как выбрать нужный вариант для собственных нужд.
Какие бывают типы лицензий?
Операционные системы и другие программы можно разделить на два типа – бесплатные и платные. Оплаты не требует, как правило, сопроводительный (например, который идет в комплекте с платной утилитой), рекламный (знакомит покупателя с новым продуктом) или пиратский софт. Последний создается с единственной целью – внести уязвимости в систему, чтобы получить доступ к данным пользователя.
Платный софт, к которому относятся операционные системы Windows от Microsoft, продается на сайте производителя или в интернет-магазинах. В зависимости от того, для каких целей и кем будет использоваться система, компания предлагает выбрать тип лицензии:
Что такое лицензия FPP и ESD?
Retail или коробочная лицензия дороже всех остальных вариантов, доступных рядовому пользователю. В цену продукта вкладывается стоимость флешки (или другого материального носителя дистрибутива), логистика, расходы на хранение и доставку продукта. Такой вариант подходит в случае, если нужно купить лицензионную версию Windows на один ПК.
Главное преимущество лицензии FPP – материальное доказательство покупки. Упаковку, документацию и сертификат подлинности следует сохранить. В случае проверки, например, на предприятии доказать подлинность используемого программного обеспечения не составит труда.
Наибольшей популярностью пользуются электронные ключи, распространяемые по лицензии ESD. Так же, как и FPP, они привязываются не к железу, а к учетной записи. Такую лицензию можно установить на один компьютер, а после перенести на другой при условии, что лицензия была удалена с первого устройства.
Из-за отсутствия материального дистрибутива ESD лицензия Windows обходится дешевле, чем Retail. После оплаты установочный файл и ключ приходит пользователю на почту. Эти документы стоит заархивировать – они будут служить доказательством легальности ОС. Если вам требуется приобрести сразу несколько ключей Windows (для установки на несколько домашних компьютеров или активации работы операционных систем в небольшом офисе), этот вариант – оптимален.
Что такое лицензия OEM?
Производители и сборщики ПК могут выбрать операционку, например, Microsoft Windows 10 Pro OEM, купить ее и продавать оборудование уже с установленной и активированной ОС. Она поставляется, как и FPP, на физическом носителе, но имеет технологическую упаковку – футляр или подложку, залитую в пленку. В состав такого продукта входит:
Дистрибутив, сертификат и соглашение остаются у сборщика, а наклейка помещается на системник или корпус ноутбука. Она является дополнительным доказательством подлинности ключа.
OEM лицензия прописывает ключ в BIOS, то есть привязывает его к железу. Это и есть главный ее недостаток. Вы не сможете перенести лицензионную систему на другое устройство. Также могут быть сложности с заменой комплектующих. В таких компьютерах материнская плата не подлежит замене (иначе активация просто слетит), такие же ограничения могут быть наложены, например, на процессор. В большинстве случаев при апгрейде компьютера вам придется связываться с производителем и подтверждать активацию операционной системы. Да и делать это можно не бесконечно. Компания сама решает, в какой момент замена комплектующих нарушает права использования системой в соответствии с типом лицензии OEM и деактивирует ключ.
Покупать такой вариант есть смысл в случаях, когда вы изначально подобрали оптимальную по функционалу и мощности «машину» и в ближайшее время не собираетесь ее совершенствовать.
Заметка про лицензирование Windows Server или как не обанкротить компанию при лицензионном аудите
Лицензионная политика Microsoft — вещь достаточно сложная и запутанная. Тем не менее, многие уже изучили все основные правила и знают, как лицензировать тот или иной продукт. Но проблема в том, что не учтя всего один небольшой нюанс, можно ошибиться на несколько порядков. И такая ошибка может попросту привести к банкротству компании при процедуре лицензионного аудита от Microsoft.
Взять, например, Windows Server, который используется практически в любой компании. Почти все системные администраторы знают, чем отличается лицензирование Windows Server Standard от Windows Server Datacenter. Опустим отличия в функционале, которое снова появилось в версии 2016. Основное отличие в том, что 1 лицензия Windows Server Standard может быть установлена на 2 виртуальных машинах в пределах 1 хоста, а Datacenter на неограниченном числе виртуальных машин в пределах одного хоста. Второе важное требование — это лицензирование всех физических ядер (ранее процессоров) сервера. Это, казалось бы, все знают. Но дьявол, как известно, кроется в деталях.
Рассмотрим практическую задачку.
У нас есть 5-узловой Hyper-V кластер. Каждый хост имеет по 2 процессора по 20 ядер. И на каждом хосте будет работать по 10 виртуальных машин с Windows Server. Давайте прикинем, как будет выгоднее пролицензировать?
Для начала посчитаем Windows Server Datacenter
Если мы возьмём Datacenter, то не важно, сколько у нас виртуалок, просто лицензируем все ядра на хосте. Т.е. 2*20 = 40 Core лицензий на хост. Поскольку Windows продаётся лицензиями по 2 ядра, получаем 20 2Core лицензий на хост. Поскольку у нас 5 хостов, получаем 20*5 = 100 лицензий 2Core.
По стоимости получаем:
9EA-00128 WinSvrDCCore 2016 SNGL OLP NL 2Lic CoreLic 40579,94*100 = 4’057’994р. (4 млн. руб.)
Теперь посчитаем Windows Server Standard
У нас 10 виртуалок на хост. 10 ВМ на хост требует 5 лицензированных Windows Server. (т.к. 1 лицензия Standard — это 2 ВМ). Поскольку у нас на 1 хост 2×20 = 40 ядер. Нужно 5 раз пролицензировать 40 ядер. — это 200 Core лицензий. Но, поскольку Windows Server Standard продаётся лицензиями по 2, то нужно 100 2Core лицензий на каждый хост. Всего у нас 5 хостов, потому умножаем на 5. Получаем 500 2Core License.
По стоимости получаем:
9EM-00124 WinSvrSTDCore 2016 SNGL OLP NL 2Lic CoreLic 5815,38*500 = 2’907’690р. (2,9 млн. руб.)
Казалось бы, если будем лицензировать Windows Server Standard, то сэкономим целый миллион рублей по сравнению с Datacenter. Так?
Мы упустили одну маленькую мелочь, на которую редко кто-то обращает внимание. Уже догадались о чём я?
Если нет, то мелочь заключается в том, что я вначале написал, что у нас кластер. А в кластере любая виртуальная машина может перемещаться с хоста на хост. Причём, даже если у вас нет динамического распределения ресурсов. Она может переехать на другой хост просто в случае отказа одного из хостов. И согласно политике лицензирования Microsoft вы должны пролицензировать все виртуальные машины на все хосты, на которых они теоретически могут работать. А для аудиторов достаточно того, что у вас HA кластер. Причём, о таком сценарии явно сказано в документации (см. картинку).
А теперь пересчитываем лицензирование Windows Server Standard для нашего сценария «правильно»:
5 хостов по 10 машин — это 50 виртуалок, т.е. требуется 25 лицензированных Windows. Каждую виртуалку нужно пролицензировать на все хосты, т.е. на все ядра всех хостов, а это 200 ядер. Т.е. вам получается нужно 200*25 = 5 000 Core лицензий. Ну или 2500 2Core лицензий!
По стоимости получаем:
9EM-00124 WinSvrSTDCore 2016 SNGL OLP NL 2Lic CoreLic 5815,38*2500 = 14’538’450р. (14,5 млн. руб.)
14,5 миллионов рублей — против 2,9 миллиона, который мы посчитали изначально. 5-кратная ошибка. Можете представить масштаб бедствия, если у вас не 5 хостов, а 50 или 500.
Т.е. в данном случае, естественно намного дешевле будет лицензировать все хосты более дорогой лицензией Datacenter (это обойдётся в 4 млн. руб.). Хотя на первый взгляд кажется, что версия Standard выходит дешевле.