Подключение тонкого клиента к windows 10

Пользователи сервиса могут работать с приложениями не только в веб-браузере, но и в тонком клиенте «1С:Предприятия».

Пользователи сервиса могут работать с приложениями не только в веб-браузере, но и в тонком клиенте «1С:Предприятия».

В этой статье будет рассказано о том, как установить и использовать тонкий клиент на компьютере, работающем под управлением операционной системы Windows.

Содержание

1. Определение нужной версии тонкого клиента

Вначале необходимо определить, какая версия тонкого клиента вам нужна.

  1. Запустите приложение сервиса в любом браузере.
  2. Нажмите кнопку Сервис и настройки (Сервис и настройки) в правом верхнем углу окна приложения:

  3. Выберите в выведенном меню пункт О программе.
  4. В верхней строке окна О программе будет указано, под какой версией платформы «1С:Предприятие 8» работает приложение. Вам необходим тонкий клиент той же версии.

    Вывод сведений о версии платформы

2. Скачивание тонкого клиента

Скачайте нужную версию тонкого клиента. Вот ссылки на скачивание программ установки тонкого клиента для используемых в сервисе 1cfresh.com версий платформы «1С:Предприятие 8» и различных версий Windows:

Если интернет-браузер не спросил, куда поместить скачанный файл, то файл будет сохранен в папке, назначенной в настройках браузера по умолчанию. Как правило, эта папка называется Загрузки или Downloads.

3. Установка тонкого клиента

Установите тонкий клиент с помощью скачанного файла установки:

  1. Запустите скачанный exe-файл тонкого клиента.
  2. Если будет выведено окно 1С:Предприятие. Доступ к веб-серверу, введите в него свои логин и пароль в сервисе и нажмите кнопку OK.

    Ввод логина и пароля

  3. Тонкий клиент будет установлен и затем будет запущен автоматически.

4. Настройка тонкого клиента

Для удобства работы с тонким клиентом «1С:Предприятия 8» рекомендуется включить режим отображения списка информационных баз в виде дерева (это достаточно сделать один раз):

  1. Запустить тонкий клиент.
  2. Нажать в окне Запуск 1С:Предприятия кнопку Настройка…
  3. Установить флажок Отображать в виде дерева.
  4. Нажать кнопку OK.

После этого в списке информационных баз тонкого клиента будет расположена группа 1cfresh.com с пунктами:

  • вызова доступных вам приложений сервиса 1cfresh.com;
  • Личный кабинет (1cfresh.com) — вход в ваш личный кабинет в сервисе;
  • Завершить сеансы (1cfresh.com) — сброс сведений о вашем подключении к сервису. При следующем входе с помощью тонкого клиента в любое приложение сервиса или в личный кабинет сервиса у вас будут запрошены логин и пароль (подробнее см. по ссылке.

5. Запуск приложений с помощью тонкого клиента

Чтобы запустить приложение с помощью тонкого клиента:

  1. Щелкните ярлык тонкого клиента на рабочем столе Windows:

    Ярлык тонкого клиента на Рабочем столе

  2. В окне Запуск 1С:Предприятия откройте группу 1cfresh.com, выделите в ней нужное приложение и нажмите кнопку 1С:Предприятие.

    Запуск информационной базы

  3. Если будет выведено окно 1С:Предприятие. Доступ к веб-серверу, введите в него ваши логин и пароль в сервисе и нажмите кнопку OK.

    Ввод логина и пароля

  4. Приложение будет запущено и вы сможете с ним работать.

6. Автоматическое обновление тонкого клиента

В сервисе 1cfresh.com обеспечиватся возможность автоматического обновления тонкого клиента для пользователей, работающих в операционной системе Windows версий 7, 10, 11.

Если версия тонкого клиента, с помощью которой такой пользователь обращается к приложению сервиса, отличается от версии «1C:Предприятия», под управлением которой работает информационная база приложения, то пользователю выводится диалоговое окно с предложением обновить версию тонкого клиента:

Предложение обновить версию тонкого клиента

Если пользователь нажмет кнопку Обновить и запустить, то будет автоматически скачан и установлен дистрибутив нужной версии тонкого клиента.

Желаем приятной и успешной работы в сервисе!


См. также:

Содержание

  • Руководство по настройке терминального сервера Windows 10
    • Шаг 1: Установка специализированного ПО
    • Шаг 2: Изменение параметров профилей и настроек ОС
    • Шаг 3: Подключение к удаленному компьютеру
  • Вопросы и ответы

Терминальный сервер на Windows 10

По умолчанию операционная система Windows 10 не позволяет нескольким пользователям одновременно подключиться к одному компьютеру, но в современном мире подобная необходимость возникает все чаще и чаще. Причем эта функция применяется не только для удаленной работы, но и для личных целей. Из данной статьи вы узнаете о том, как настроить и использовать терминальный сервер в Windows 10.

Какой бы сложной на первый взгляд не казалась озвученная в теме статьи задача, на самом деле все до неприличия просто. Все что от вас требуется – четко следовать указанным инструкциям. Обратите внимание, что способ подключения схож с таковым в более ранних версиях ОС.

Подробнее: Создание терминального сервера на Windows 7

Шаг 1: Установка специализированного ПО

Как мы уже говорили ранее, стандартные настройки Windows 10 не позволяют использовать систему одновременно нескольким пользователям. При попытке такого подключения вы увидите следующую картину:

Пример одновременного входа нескольких пользователей в Windows 10

Чтобы исправить это, необходимо внести изменения в параметры ОС. К счастью, для этого есть специальный софт, который все сделает за вас. Сразу предупредим, что файлы, о которых пойдет речь далее, модифицируют системные данные. В связи с этим в некоторых случаях они распознаются как опасные для самой Windows, поэтому использовать их или нет – решать только вам. Все описанные действия были проверены на практике нами лично. Итак, приступим, в первую очередь выполните следующее:

  1. Перейдите по данной ссылке, после чего нажмите на строку, которая указана на изображении ниже.
  2. Ссылка на загрузку приложения rdpwrap

  3. В результате начнется загрузка архива с нужным софтом на компьютер. По окончании скачивания извлеките все его содержимое в любое удобное место и найдите среди полученных файлов тот, что называется «install». Запустите его от имени администратора. Для этого нажмите на нем правой кнопкой мышки и выберите из контекстного меню строчку с одноименным названием.
  4. Запуск файла install для установки софта в Windows 10

  5. Как мы упоминали ранее, система не определит издателя запускаемого файла, поэтому может сработать встроенный «Защитник Windows». Он попросту вас предупредит об этом. Для продолжения нажмите кнопку «Запустить».
  6. Предупреждение SmartScreen при запуске подозрительного приложения Windows 10

  7. Если у вас включен контроль профилей, на экране может появиться запрос на запуск приложения «Командная строка». Именно в ней и будет выполняться инсталляция ПО. Кликните в появившемся окне «Да».
  8. Подтверждение для запуска приложения от контроля учетных записей в Windows 10

  9. Далее появится окно «Командная строка» и начнется автоматическая установка модулей. Вам необходимо лишь немного подождать, пока не появится просьба нажать любую клавишу, что и нужно сделать. Это автоматически закроет окно инсталляции.
  10. Успешное окончание установки утилиты RDP в Windows 10

  11. Остается лишь проверить все внесенные изменения. Для этого в списке извлеченных файлов найдите «RDPConf» и запустите его.
  12. Запуск файла RDPConf в Windows 10

  13. В идеале все пункты, которые мы отметили на следующем скриншоте, должны быть зеленого цвета. Это означает, что все изменения внесены корректно и система готова к подключению нескольких пользователей.
  14. Окно проверки установленной утилиты RDP в Windows 10

    На этом первый шаг по настройке терминального сервера завершен. Надеемся, у вас не возникло сложностей. Двигаемся далее.

Шаг 2: Изменение параметров профилей и настроек ОС

Теперь необходимо добавить профили, под которыми другие пользователи смогут подключаться к нужному компьютеру. Помимо этого, мы произведем некоторую настройку системы. Список действий будет следующим:

Lumpics.ru

  1. Нажмите на рабочем столе вместе клавиши «Windows» и «I». Это действие активирует окно основных настроек ОС Windows 10.
  2. Перейдите в группу «Учетные записи».
  3. Переход в раздел Учетные записи из окна параметров Windows 10

  4. В боковой (левой) панели зайдите в подраздел «Семья и другие пользователи». Кликните на кнопку «Добавить пользователя для этого компьютера» несколько правее.
  5. Кнопка добавления нового пользователя в Windows 10

  6. Появится окно с параметрами входа Windows. Вводить ничего в единственную строку не стоит. Необходимо просто кликнуть по надписи «У меня нет данных для входа этого человека».
  7. Окно ввода данных нового пользователя в Windows 10

  8. Далее нужно нажать на строку «Добавить пользователя без учетной записи Майкрософт».
  9. Кнопка Добавить пользователя без учетной записи Майкрософт в Windows 10

  10. Теперь укажите название нового профиля и ключ к нему. Помните, что пароль следует вводить в обязательном порядке. В противном случае в дальнейшем могут возникнуть проблемы с удаленным подключением к компьютеру. Все остальные поля также нужно заполнить. Но это уже требование самой системы. По окончании нажмите кнопку «Далее».
  11. Ввод имени и пароля новой учетной записи в Windows 10

  12. Спустя несколько секунд новый профиль будет создан. Если все пройдет успешно, вы увидите его в списке.
  13. Список имеющихся пользователей системы в Windows 10

  14. Теперь перейдем к изменению параметров операционной системы. Для этого на рабочем столе на иконке «Этот компьютер» нажмите правой кнопкой мышки. Выберите из контекстного меню параметр «Свойства».
  15. Запуск окна Свойства компьютера в Windows 10

  16. В следующем открывшемся окне нажмите на отмеченную ниже строчку.
  17. Открытие дополнительных параметров системы в Windows 10

  18. Перейдите в подраздел «Удаленный доступ». Ниже вы увидите параметры, которые и следует изменить. Отметьте галочкой строку «Разрешить подключения удаленного помощника к этому компьютеру», а также активируйте опцию «Разрешить удаленные подключения к этому компьютеру». По завершении нажмите кнопку «Выбрать пользователей».
  19. Изменение параметров системы для подключения к удаленному рабочему столу

  20. В новом маленьком окне выберите функцию «Добавить».
  21. Окно добавления новых пользователей для подключения удаленного рабочего стола

  22. Затем необходимо прописать имя пользователя, которому будет открыт удаленный доступ к системе. Сделать это нужно в самом нижнем поле. После ввода названия профиля нажмите на кнопку «Проверить имена», которая находится правее.
  23. Ввод и проверка учетной записи для доступа к удаленному рабочему столу в Windows 10

  24. В результате вы увидите, что имя пользователя преобразится. Это значит, что оно прошло проверку и было найдено в перечне профилей. Для завершения операции нажмите «ОК».
  25. Подтверждение добавления учетной записи в список доверенных профилей

  26. Примените внесенные изменения во всех открытых окнах. Для этого нажмите в них на «ОК» или «Применить». Остается совсем немного.

Шаг 3: Подключение к удаленному компьютеру

Подключение к терминалу будет происходить посредством интернета. Это значит, что нам необходимо сперва узнать адрес системы, к которой будут подключаться пользователи. Сделать это не сложно:

  1. Откройте вновь «Параметры» Windows 10, используя клавиши «Windows+I» либо меню «Пуск». В настройках системы зайдите в раздел «Сеть и Интернет».
  2. Переход в раздел Сеть и Интернет в Параметрах Windows 10

  3. С правой стороны открывшегося окна вы увидите строку «Изменить свойства подключения». Нажмите на нее.
  4. Кнопка изменения свойств сетевых подключений в Windows 10

  5. На следующей странице будет отображена вся имеющаяся информация о сетевом подключении. Спуститесь вниз до тех пор, пока не увидите свойства сети. Запомните цифры, которые расположены напротив отмеченной на скриншоте строчки:
  6. Строка с указанием IP адреса сети в Windows 10

  7. Все необходимые данные мы получили. Остается лишь подключиться к созданному терминалу. Дальнейшие действия нужно выполнять на том компьютере, с которого будет происходить подключение. Для этого нажмите на кнопку «Пуск». В списке приложений найдите папку «Стандартные-Windows» и откройте ее. В перечне элементов будет «Подключение к удаленному рабочему столу», его и нужно запустить.
  8. Запуск приложения Подключение к удаленному рабочему столу из меню Пуск Windows 10

  9. Затем в следующем окне введите IP адрес, который вы узнали ранее. В завершении нажмите кнопку «Подключить».
  10. Ввод адреса в окне подключения к удаленному рабочему столу

  11. Как и при стандартном входе в систему Windows 10, потребуется ввести имя пользователя, а также пароль от учетной записи. Учтите, что на данном этапе нужно вводить имя того профиля, которому вы дали разрешение на удаленное подключение ранее.
  12. Ввод имени и пароля при подключении к удаленному рабочему столу

  13. В некоторых случаях вы можете увидеть уведомление о том, что системе не удалось проверить подлинность сертификата удаленного компьютера. Если такое произойдет, нажмите кнопку «Да». Правда делать это нужно лишь в том случае, если вы уверены в компьютере, к которому подключаетесь.
  14. Окно предупреждения о сомнительном сертефикате в Windows 10

  15. Остается лишь немного подождать, пока система удаленного подключения загрузится. При первом подключении к терминальному серверу вы увидите стандартный набор опций, которые при желании можно изменить.
  16. Настройки системы при первом входе в ОС Windows 10

  17. В конечном итоге подключение должно завершится успехом, и вы увидите на экране изображение рабочего стола. В нашем примере это выглядит следующим образом:
  18. Пример удачного подключения к удаленному рабочему столу в Windows 10

Это все, о чем мы хотели вам рассказать в рамках данной темы. Проделав описанные выше действия, вы без труда сможете подключаться к своему или рабочему компьютеру удаленно практически с любого устройства. Если у вас впоследствии возникнут трудности или вопросы, рекомендуем ознакомиться с отдельной статьей на нашем сайте:

Подробнее: Решаем проблему с невозможностью подключения к удаленному ПК

Еще статьи по данной теме:

Помогла ли Вам статья?

Данная статья представляет собой пошаговую инструкцию по настройке Windows 10 в качестве терминального сервера с доступом по RDP.

После настройки, к одному компьютеру смогут одновременно подключаться несколько пользователей по RDP (Remote Desktop Protocol — протокол удалённого рабочего стола). Наиболее популярное применение данного решения — работа нескольких пользователей с файловой базой 1С.

Процесс настройки показан на примере Windows 10 Enterprise x64, однако данное руководство полностью подходит для установки на других ОС Windows.

Внимание! статья написана исключительно в научных интересах. Лицензия Windows не позволяет использовать ОС в таком режиме.

СОДЕРЖАНИЕ

  • I. Создание пользователя и настройка прав для доступа по RDP
  • II. Настройка терминального сервера с доступом по RDP
  • III. Подключение к удаленному рабочему столу
  • IV. Часто задаваемые вопросы по теме статьи (FAQ)

Для настройки Windows 10 в качестве терминального сервера с доступом по RDP понадобятся:

1. Компьютер с установленной операционной системой Windows 10 и правами администратора, подключённый к локальной сети;

2. Компьютер в локальной сети, с которого будет производиться подключение и который имеет RDP клиент (прим. требуется ОС Windows XP/Vista/7/8/8.1/10 и т.д.);

3. Библиотека: RDP Wrapper Library Скачать c GitHub RDP Wrapper Library

I. Создание пользователя и настройка прав для доступа по RDP

1. Нажмите на значок поиска  , затем с помощью поисковой строки найдите и выберите Управление учетной записью (Рис.1).

2. В открывшемся окне выберите Семья и другие люди, затем нажмите Добавить пользователя для этого компьютера (Рис.2).

3. Нажмите на пункт У меня нет данных для входа этого человека (Рис.3).

4. Нажмите на пункт Добавить пользователя без учетной записи Майкрософт (Рис.4).

5. В соответствующих полях введите имя пользователя (прим. в данном примере это UserRDP), пароль для новой учётной записи и подсказку для пароля, затем нажмите Далее (Рис.5).

6. В окне параметров Вы увидите нового пользователя (прим. в данном примере это UserRDP) (Рис.6).

7. Нажмите на значок поиска  , затем с помощью поисковой строки найдите и выберите Этот компьютер, через правую кнопку мыши откройте меню и нажмите Управлять (Рис.7).

8. В открывшемся окне выберите: Служебные программы > Локальные пользователи и группы > Пользователи, затем выберите пользователя (прим. в данном примере это UserRDP), перейдите на вкладку Членство в группах и нажмите Добавить… (Рис.8).

9. Нажмите Дополнительно… (Рис.9).

10. Нажмите Поиск, выберите из списка Пользователи удаленного рабочего стола и нажмите OK (Рис.10).

11. Нажмите OK (Рис.11).

12. Нажмите Применить, затем OK (Рис.12).

II. Настройка терминального сервера с доступом по RDP

1. Нажмите на значок поиска  , затем с помощью поисковой строки найдите и выберите Система (Рис.13).

2. Нажмите Настройка удалённого доступа, в открывшемся окне перейдите на вкладку Удалённый доступ, выберите пункт Разрешить удалённые подключения к этому компьютеру, затем нажмите Применить и OK (Рис.14).

3. Распакуйте (прим. с помощью WinRAR или просто открыть через Проводник) скачанную Вами ранее библиотеку RDP Wrapper Library. Откройте папку и запустите от имени администратора (прим. используя правую кнопку мыши) файл install,после чего начнётся установка (Рис.15).

4. После окончания установки нажмите любую клавишу (Рис.16).

5. Нажмите на значок поиска  , затем с помощью поисковой строки найдите и выберите Выполнить (Рис.17).

6. В открывшемся окне введите gpedit.msc и нажмите OK (Рис.18).

7. Выберите: Конфигурация компьютера > Административные шаблоны > Компоненты Windows > Службы удалённых рабочих столов > Узел сеансов удалённых рабочих столов > Подключения > Ограничить количество подключений (Рис.19).

8. В открывшемся окне выберите пункт Включить, установите в параметрах разрешённое количество подключений к удалённым рабочим столам на 999999, затем нажмите Применить и OK. Перезагрузите компьютер (Рис.20).

III. Подключение к удаленному рабочему столу

1. Используя второй компьютер, находящийся в той же локальной сети, нажмите Пуск, с помощью поисковой строки найдите, а затем выберите Подключение к удалённому рабочему столу (Рис.21).

2. В открывшемся окне ведите имя компьютера к которому следует подключиться (прим. Тот, на котором производились все настройки), затем нажмите Подключить (Рис.22).

3. Прежде всего, выберите пользователя (прим. в данном примере это UserRDP) и введите пароль от учётной записи, который Вы указывали ранее (прим. см. Рис.5), затем нажмите OK (Рис.23).

4. В появившемся окне нажмите Да, после чего начнётся сеанс удаленного подключения (Рис.24).

 Настройка Windows 10 в качестве терминального сервера с доступом по RDP завершена!

IV. Часто задаваемые вопросы по теме статьи (FAQ)

Не работает терминальный сервер в Windows 10

Если у вас изначально не заработал терминальный сервер на windows 10 и количество rdp подключений ограничено одним. Либо если у вас после обновление сломался терминальный доступ, то давайте разбираться, что с этим делать.

Для начала запустите утилиту RDPConf.exe и посмотрите ее вывод.

Не работает терминальный сервер в Windows 10 после обновления

Значение listener state [not supportet] намекает на то, что у нас проблемы и rdp wrapper не работает. Проблема тут в том, что практически под каждую версию Windows 10 нужен свой файл конфигурации rdpwrap.ini. Так как автор давно забросил свою программу, автоматически эти конфигурации не обновляются. Их нужно либо писать самому, если понимаешь, как именно, либо искать где-то в интернете. Проще всего посмотреть в обсуждении проблем в репозитории на github https://github.com/stascorp/rdpwrap/issues.

Для того, чтобы на моей версии windows 10 заработал терминальный сервер, я пошел в указанный выше репозиторий и нашел там файл конфигурации под свою версию системы. Я взял содержимое этого файла и добавил его в существующий файл C:Program FilesRDP Wrapperrdpwrap.ini в самый конец.

После этого запустил еще раз RDPConf.exe.

Восстановление rdpwrap

Статус изменился на [fully supported]. Теперь нужно перезагрузить компьютер. После этого запустите утилиту RDPCheck.exe и убедитесь, что можно подключиться второй учетной записью к компьютеру.

Как починить rdpwrap после обновления windows

Если вы нигде не можете найти файл конфигурации rdpwrap.ini под вашу версию системы, то можно попробовать сделать следующий трюк. В некоторых случаях это помогает. По крайней мере у меня так иногда получалось.

Вам нужно найти рабочую конфигурацию под максимально близкую к вам версию. Далее просто в текстовом редакторе поменяйте указанную там версию на свою. Если разница в версиях не сильно большая, может помочь. Я видел в issues на гитхабе информацию о том, что получалось сразу же после поломки терминального доступа после очередного обновления, отредактировать конфиг под новую версию и все снова продолжало работать.

Так же в одном из обсуждений на github была предложена утилита с автоматическим обновлением rdpwrap.ini. Называется Automatic RDP Wrapper installer and updater — https://github.com/stascorp/rdpwrap/pull/859. Описание и инструкция по использованию есть внутри архива. Судя по отзывам, штука неплохая, работает. Если кратко, то пользоваться так:

  1. Скачиваем архив
  2. Распаковываем в Program Files/RDP Wrapper
  3. От имени администратора запускаем Program Files/RDP Wrapper/autoupdate.bat
  4. Проверяем конфигурацию через RDPConf.exe и пробуем подключаться.

В целом про превращение windows 10 в сервер терминалов для одновременного подключения и работы нескольких пользователей по rdp у меня все. Все очень легко и просто, можно использовать по необходимости для решения прикладных задач.

Является ли создание сервера терминалов из Windows 10 нарушением лицензии?

Однозначно, да. У Microsoft есть отдельный продукт и отдельная программа лицензирования для работе в терминале. И все это стоит немалых денег. Так что создавая терминал из windows 10 вы точно нарушаете условия лицензионного соглашения.

Как обезопасить себя в случае обновления операционной системы? Очень часто после этого терминальный режим перестает работать.

Надежнее всего отложить обновление и подождать, пока не появится rdpwrap.ini под новую версию обновленной системы. После этого можно самому обновиться и обновить конфигурационный файл.

Автор RDP Wrapper забросил свою программу?

Судя по всему, да. Обновлений давно не было. Меняются только конфигурационные файлы rdpwrap.ini, которые обновляет сообщество. Сама программа при этом не обновляется.

Локального пользователя постоянно выкидывает из системы, когда подключается удаленный. У меня не работает терминальный режим?

Да, не работает. Если вы все сделали правильно, то можно работать как локально, так и удаленно одновременно разным пользователям. Если одновременно не получается работать больше, чем одному пользователю, значит терминальный режим в windows 10 не работает.

Можно ли не обновлять систему, чтобы не сломать терминальный доступ?

Я не рекомендую так делать. В настоящее время это очень опасно. В протоколе rdp регулярно находят уязвимости, через которые на ваш компьютер может попасть, к примеру, шифровальщик. Необходимо учитывать эти риски и время от времени обновляться, либо полностью закрывать несанкционированный доступ к компьютеру.

Join @AdmNtsRu on Telegram

Смотрите также:

Время прочтения
5 мин

Просмотры 67K

Рано или поздно возникает вопрос о необходимости заменить один или несколько ПК по причине медленной работы.

Самый простой способ, нечего не выдумывать и просто заменить ПК.

Не самый простой способ, это начать внедрять «удаленные рабочие столы» в варианте терминальный сервер или виртуальные десктопы.

Стоимость тонкого клиента HP, DELL или других брендов может сравнится с стоимостью полноценного ПК, а использование старого ПК в качестве тонкого клиента позволит продлить срок эксплуатации на достаточно долгий срок.

Как поступить с морально устаревшими ПК:
— оставить на ПК Windows, пользователь будет подключатся к удаленному рабочему столу.
— загружать ПК по сети, один из linux вариантов thinstation.
— установить на ПК локальную версию linux, вариантов море.

Далее буду описывать вариант с Windows, такой тонкий клиент обладает некоторыми преимуществами при сравнении с linux вариантами.


Зачем я все это делал:

— У меня есть удаленные офисы с пользователями которых нужно было перевести работать на терминальные сервера, применение групповых политик в домене позволяют получить необходимый результат без присутствия в офисе и без замены ПК.
— И Windows и linux варианты пользовательских интерфейсов тонких клиентов HP, Wyse/DELL меня не устраивают по разным причинам.

Преимущества Windows варианта:
— Полная поддержка RDP/RemoteFX.
— Полная поддержка сменных носителей.
— Возможность использовать локальный принтер.
— Возможность использовать смарт карты для клиент банка.
— Редирект воспроизведения видео/аудио на тонкий клиент при использовании Windows Media Player, без тормозов и без нагрузки на сервер можно смотреть видео 1080р, но это отдельная история =).

Если начать с результата:

Так будет выглядеть загрузка рабочего стола пользователя, если на ПК установлен Windows XP:

Так будет выглядеть загрузка рабочего стола пользователя, если на ПК установлен Windows 7:

Чтобы получить результат который вы можете видеть на слайдах, необходим домен AD и несколько групповых политик для ПК и пользователей.

На ПК с XP SP3 необходимо установить обновления для rdp клиента KB969084 и Fixit50588, для расширенных групповых политик необходимо установить обновление KB943729.

Ключевые политики:

№1 — Пользователям необходимо разрешить Single sign-on, я распространяю эту политику на весь домен.

№2 — Для ПК делаем отдельный OU и замыкаем групповые политики в этом OU.

№3 — В новом OU создаем политику где меняем шел пользователя на «wscript c:thinPCthinPC.vbs /nologo /b».

На целевой ПК необходимо скопировать 3 файла, я использую для этого расширенные групповые политики.
Рекомендую фалы разместить в центральном хранилище групповых политик \имя доменаSYSVOLимя доменаPolicies, это позволит обеспечить отказоустойчивость в случаи недоступности одного из домен контроллеров.
На домен контроллерах этому сетевому ресурсу соответствует папка C:WindowsSYSVOLsysvolимя доменаPolicies

Содержимое файла thinPC.cmd

C:BGInfoBginfo.exe «C:BGInfoconfig.bgi» /NOLICPROMPT /timer:0
mstsc «c:thinPCthinPC.rdp»
shutdown -l

BGInfo добавляет на рабочий стол пользователя надпись с необходимыми данными, результаты работы BGInfo видны на слайдах.
mstsc запускает rdp клиент, после завершения удаленного сеанса выполняется команда shutdown -l для завершения сеанса пользователя на тонком клиенте.

В процессе работа описанного скрипта пользователь будет наблюдать выполнение команд в окне, и для скрытия окна скрипт запускается средствами VBS.

Содержимое файла thinPC.vbs

Dim oShell
Set oShell = WScript.CreateObject («WSCript.shell»)
oShell.run «C:thinPCthinPC.cmd»,0
Set oShell = Nothing

Содержимое файла thinPC.rdp
Это rdp файл с параметрами подключения которые необходимы.

— Необходимо отключить отображение панели подключения при работе на полном экране.
— Я отключаю проброс локальных дисков, но разрешаю проброс дисков подключенных позже, это позволит пользователям работать с сменными носителями которые подключат после начала удаленного сеанса.
— В случаи ОС windows 7 для использования протокола RemoteFX необходимо установить глубину цвета 32 бита и указать скорость соединения 10 мегабит/локальная сеть.
— В случаи если сертификат сервера самоподписанный необходимо отключить предупреждение в разделе «Проверка подлинности сервера».

Вот и все, замена шела у пользователя позволит сделать процесс загрузки тонкого клиента максимально приближенным на процесс загрузки обычного ПК.

Основным минусом предложенного скрипта является невозможность пользователю самостоятельно выбрать разрешение экрана, но я честно говоря не понимаю когда выпрашивают монитор 22-24 дюйма, а затем просят увеличить на нем буковки.
В таких случаях я устанавливаю на целевой ПК VNC сервер и меняю разрешение с его помощью.


Второстепенные политики:

№4 — Для того чтобы отключить данное сообщение, пользователю достаточно поставить галочку больше не уведомлять.

Для автоматизации процесса административными средствами нужно добавить ключ в реестр.

[HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientLocalDevices]
«адрес сервера»=dword:0000000d

№5 — Необходимо увеличиваем кеш для RDP соединения, в случаи Windows XP это жизненно необходимо, а вот в случаи Windows 7 может можно и без увеличения кеша.

[HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server Client]
«BitmapCacheSize»=dword:0000ffff

немного подробней про оптимизация графики, Terminal Services and Graphically Intensive Applications.

№6 — Interactive logon: Do not require CTRL+ALT+DEL
устанавливаем параметр Disabled.

№7 — Interactive logon: Do not display last user name
устанавливаем параметр Enabled.

№8 — Interactive logon: Message text for users attempting to log on и Interactive logon: Message title for users attempting to log on
Заполняем заголовок и текст который предназначен для пользователей, в самом простом случаи тут нужно указать контакты центра поддержки.

№9 — Для отключения визуальных эффектов на тонком клиенте, необходимо добавить ключ в реестр.

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerVisualEffects]
«VisualFXSetting»=dword:00000002

№10 — Power options
Средствами расширенных групповых политик необходимо создать план питания в котором при нажатии на кнопку питания тонкий клиент будет выключатся.

№11 — Software Restriction Policies
Рекомендую настроить контроль запуска ПО, данный механизм работает на WindowsXP и Windows 7 PRO.
AppLocker более гибки но работает только на Windows 7 enterprise и выше.
Считаю что в случаи тонкого клиента гибкость не нужна, преследуется цель исключить возможность запуска вредоносного ПО.

№12 — Turn off Autoplay
Для отключения автоматического запуска сменных носителей необходимо установить параметр Enabled for All drives.

№13 — Allow RDP redirection of other supported RemoteFX USB devices from this computer
Если вы планируете пробрасывать USB устройства, разрешите политику для Adminstrators and Users.

№14 — Delete user profiles older than a specified number of days on system restart
Я устанавливаю параметр в 180 дней, политика работает только на Windows 7.

№15 — User Account Control
UAC мне мешает и по этому отключаю.

№16 — Замена фона рабочего стола, красота требует жертв.

Для Windows XP, этот ключ в реестре отвечает за обои на экране ввода логина и пароля.
Файл с фоном может находится в любом месте, но это должен быть bmp файл.

[HKEY_USERS.DEFAULTControl PanelDesktop]
«Wallpaper»=«C:\thinPC\rd.bmp»
«WallpaperStyle»=«2»

Для изменения фона Windows 7 необходимо установить ключ, и передать файл с фоном %WindowsDir%System32oobeinfobackgroundsbackgrounddefault.jpg.

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionAuthenticationLogonUIBackground]
«OEMBackground»=dword:00000001

Также необходимо установить фон для сессии пользователя на тонком клиенте.

[HKEY_CURRENT_USERControl PanelDesktop]
«Wallpaper»=«C:\thinPC\rd.bmp»
«WallpaperStyle»=«2»


Про практику:

— Подобные тонкие клиенты работают уже больше года
— На нескольких старых ПК успели посыпаться диски, в замен выслали тонкие клиенты HP, ну а все данные пользователей были на серверах ;)
— Несколько бухгалтеров успешно работают с USB токенами BIFIT

Часть первая: Немного лирики

Нижеследующий текст автора не претендует на истину в последней инстанции и по нему не стоит судить о среднестатистическом уровне IT инфраструктуры в небольших компаниях нашей необъятной страны. Статья написана по мотивам общения с многочисленными знакомыми IT-шниками (в основном уровня «студент» и «только что из института»), начинающих свою карьеру с эникейщика в небольших компаниях.

Давайте представим себе среднестатический офис небольшой торговой фирмы с точки зрения IT:

  • несколько десятков слабеньких компьютеров для секретаря, менеджеров, бухгалтерии и, конечно, главного Босса;
  • одна-две-три машины, выполняющих роли:
    • домен-контроллера windows (нередки случаи, когда в сети компании отсутствует даже домен, а все компьютеры работают в одно-ранговой сети);
    • файлового сервера;
    • почтового сервера (вместо него иногда используют внешние бесплатные почтовые сервера, начиная от mail.yandex.ru и gmail.com и кончая десятидолларовым хостингом на N почтовых ящиков);
    • http-прокси для фильтрации доступа ко внешним ресурсам и логирования «куда кто ходит» (часто отсутствует)
    • маршрутизатора/файрвола на границе с внешней сетью для ограничения доступа наружу и наоборот (часто в качестве пограничного маршрутизатора используется любой SOHO-роутер начального уровня ценой до 100 долларов, он же выполняет роль DHCP сервера (для динамической раздачи IP адресов рабочим станциям сотрудников);
    • другие вещи, список которых может быть довольно большим;
  • несколько принтеров, часто подключенных локально к рабочим станциям сотрудников и расшареных по сети стандартными средствами Windows (как вариант, принтеры могут быть сетевыми изначально или же подключены через аппаратные принт-сервера).
  • в продвинутых случаях — один терминальный сервер (под Windows) для бухгалтерии (на нем крутится 1C а там же лежит база данных оной, а бухгалтеры, подключаясь к серверу терминалов через стандартные средства Windows (remote desktop), работают с ней на терминальном сервере (локально), что, во-первых, дает больше удобства, а во-вторых, ускоряет работу самой 1C (обычно же 1С с базой установлена на компьютере одного из бухгалтеров, а остальные подключаются к ней со своих компьютеров, работая с расшареной по сети базой).

Все это хозяйство связано в единую локальную сеть посредством одного/нескольких дешевых коммутаторов на 100Мбит. И работает это в едином домене NT/Active directory (хотя встречаются варианты одноранговых рабочих станций безо всяких доменов).

На всех машинах с Windows обычно установлен (хотя и тут бывают исключения) какой-то антивирус. Часто встречается не сетевые версии этих программ (тот же Avast), хотя, опять таки в более продвинутых (с точки зрения IT) конторах, стоят сетевые версии антивирусов с централизованным управлением и обновлением антивирусных баз.

Приведенные выше ситуации варьируются от случая к случаю, так как на конфигурацию сети, железа и софта влияют как знания/умения/желания (и, что немаловажно, лень) системного администратора(ов), так и понимание начальства (в лице главного Босса) «чем же именно этот наш системный администратор занимается, когда все и так отлично работает» (из последнего вытекает — сколько денег выделяется на оборудование для IT и зарплату будущего специалиста). Если денег выделяется мало (а так обычно и бывает — управленцы торговых компаний от IT обычно далеки и слабо понимают, что же там происходит), то поднабравшийся знаний эникейщик уходит в другую компанию. На место ушедшего приходит очередной студент и все повторяется по новой.

Думаю излишне говорить, что в подобных конторах отдел системного администрирования состоит из одного человека, который совмещает в себе инженера по прокладке/поддержанию офисной сети, системного администратора как такового (т.е. ту самую личность, что отвечает за работоспособность серверного парка на программном и аппаратном уровнях и внедрением нового функционала) и эникейшика — «мальчика на побегушках» — который занимается разрешением проблем у пользователей, протиркой мышек, сменой картриджей у принтеров и подобными вещами.

В результате, в небольших компаниях часто наблюдается довольно разнообразный парк пользовательских машин класса от pentium2/128Mb ram/5Gb hdd до P4 Celeron/1Gb ram/80Gb hdd. На всех машинах, разумеется, Windows (98, 2000 и XP Home/Pro) и разные версии софта (ставили то машины в разное время). Доходит до того, что и антивирусное ПО на машинах тоже от разных производителей.

А на нелегкую долю системного администратора (и эникейщика по совместительству), выпадает денно и нощно поддерживает весь этот зоопарк. А ведь железо иногда ломается:

  • вентиляторы начинают противно жужжать (их надо чистить и смазывать или же менять на новые);
  • блоки питания выходят из строя;
  • винчестеры — сыпятся;
  • сетевые карты (как встроенные в материнскую плату, так и внешние — перестают работать и требуют замены);
  • остальное железо, обычно, летит сильно реже, но тем не менее летит тоже

При выходе из строя винчестера (или же материнской платы компьютера), операционную систему на восстановленной машине часто приходится переставлять с нуля в такой или очень похожей последовательности:

  • ставим Windows;
  • ставим необходимые драйвера (весь парк железа разный — не забыли?), предварительно определив модель материнской платы в данной машине и скачав из Интернет последние версии драйверов или найдя нужные у себя на файл-сервере;
  • вводим машину в домен (если он настроен);
  • ставим необходимый софт (офис, браузер, почтовый клиент, тотал-коммантеры, аськи, джабберы, пунто-свитчеры и подобное) — в случае домена Active Directory часть софта можно поставить автоматически, но не у всех он настроен, да и не все знают его возможности;
  • ставим антивирус;
  • плюс дополнительные танцы с бубном, индивидуальные для конкретной сети каждой организации вокруг новой рабочей станции;

После успешного выполнения всех пунктов (эта процедура занимает примерно два часа) рапортуем Боссу, что рабочее место сотрудника спасено и он может приступать к работе.

Счастливый обладатель восстановленного компьютера садится за свое рабочее место, после чего выясняется, что (так как доменные профили были не перемещаемые или же домена не было вовсе, ссылка «мои документы» вела на локальный диск C:, а про то, что все важное нужно сохранять на сетевом диске — на сервере, сотрудник забыл):

  • у меня тут была папка с важными документами — где она?
  • а еще я там фотографии из Турции сохранил, можно их восстановить?
  • на рабочем столе было много важных ярлыков и еще сотня документов — куда они пропали?
  • в избранном (это про закладки в браузере ) моих любимых сайтов больше нет — где их теперь искать? и так далее…

Знакомо? Хорошо, если полетел не жесткий диск, а всего лишь материнская плата. Или же часть информации на осыпавшемся диске поддается восстановлению. Но все эти процедуры занимают рабочее время системного администратора, которое можно было бы потратить с куда большей пользой — поиграть в сетевую стрелялку или же… изучить IPv6 — ведь уже все на него переходят и совсем скоро перейдут, адреса в пространстве Ipv4 уже лет пять как закончились :)

В результате, поддержка IT инфраструктуры небольшой компании для системного администратора превращается, по большей части в поддержку работоспособности пользовательских рабочих станций, а именно:

  • переустановить Windows;
  • настроить на новой машине весь необходимый софт;
  • восстановить все то, что потерялось;
  • доустановить нуждающимся новые программы;
  • провести профилактику корпуса (пыль пропылесосить в системном блоке);

И в оставшееся время (если системный администратор не сильно ленив) надо пытаться изучить что-то новое, проапгрейдить софт на сервере (серверах) и ввести в строй новый сетевой сервис. Т.е. на основные обязанности (именно то, чем системный администратор и должен заниматься большую часть времени) времени то как раз и не остается.

Как же выйти из этого замкнутого круга?

Одним из вариантов решения вышеописанной проблемы, является отказ от «толстых» рабочих станций (там, где это можно сделать) и переход на тонкие клиенты.

Под «толстой» рабочей станцией понимается любой компьютер с установленной ОС, который и выполняет обработку большинства пользовательской информации. Т.е. браузер, офис и все остальное выполняется локально именно на рабочей станции пользователя, системный блок которой жужжит у него под столом или где то рядом.

Надо понимать, что требования современных ОС (не обязательно Windows) идут в ногу с современным железом — другими словами, для относительно комфортной работы в Windows XP старой (но полностью работоспособной и относительно мощной) машины класса Celeron 800Mgz/128Mb Ram/ 10Gb HDD может и не хватить. Работать под современной ОС на подобном железе, конечно, можно, но подтормаживать эта операционка и приложения будут довольно часто — хотя бы из-за малого количества набортной памяти и старого (читай — медленного) жесткого диска.

А тонкий клиент, если вкратце, можно определить как бездисковый компьютер, работа которого заключается лишь в подключении к удаленному серверу и отображении полученной с сервера информации на экране. Обычно такой сервер называется сервером терминалов или терминальным сервером. Вся же обработка пользовательской информации происходит именно на нем (одновременно к которому может быть подключено множество — хотя и не бесконечное количество — тонких клиентов).

Обычно тонкие клиенты делают на основе слабого (а, соответственно, и малопотребляющего) железа — часто это единая системная плата, на которой все и интегрировано. Процессор и память так же могут быть намертво припаяны к материнской плате. Некоторые тонкие клиенты имеют flash-диск (вставляемый в IDE разъем материнской платы), на котором прошита специализированная ОС (WinCE или другие).

Рис.1
Сравнение тонкого клиента Clientron U700 со стандартным корпусом для рабочей станции.

В результате, при включении тонкого клиента (их еще называют терминалами), ОС грузится со встроенного flash-диска (обычно на загрузку уходит менее 30 секунд), после чего на экране появляется диалог подключения к терминальному серверу. Некоторые из этих клиентов умеют подключаться только Windows Terminal Server или же Citrix Metaframe, другие — в том числе и к терминальным серверам других ОС. В любом случае, в цену таких решений закладывается и цена лицензии на WindowsCE, прошитую на встроенный flash-диск. Мы рассказывали о подобных решениях ранее:

  • Windows-терминал K-Systems Termin
  • Тонкий клиент AK-Systems GP
  • Windows-терминал AK-Systems GPN

Разумеется, подобные решения существуют и у других компаний. В том числе и без встроенной ОС (за которую, в случае Microsoft Windows CE, нужно дополнительно платить, да и flash-диск копейки, но стоит).

Терминальные клиенты без встроенного flash-диска, при включении загружают нужный образ ОС по сети, после чего они тратят на загрузку те же пару десятков секунд. После чего готовы к работе, под чем подразумевается вывод на экран меню со списком терминальных серверов для подключения или же автоматическое подключение к одному из жестко заданных терминальных серверов (в зависимости от настроек) — пользователю останется ввести лишь логин и пароль. После правильного ввода оного, он попадает в свою сессию на сервере терминалов и может приступать к работе.

Несомненные плюсы терминальных решений на специализированных тонких клиентах или правильных самосборных компьютерах:

  • отсутствие жесткого диска (которые греются и ломаются);
  • отсутствие вентиляторов (на процессоре и блоке питания установлены лишь радиаторы, которых хватает для рассеивания выделяемого при работе тепла);
  • низкое энергопотребление;
  • теоретическая дешевизна (при самосборе можно подобрать очень дешевые комплектующие — ведь производительности от железа не требуется; а вот производители за специализированные тонкие клиенты попросят раза в два больше)
  • минимальные временные затраты на обслуживание (при поломке такой железяки, достаточно отключить поломавшуюся и подключить запасную — работы на пять минут; а это уже минимальный простой для рабочего места сотрудника, а так же минимум затраченного на устранение поломки времени системного администратора)
  • весь софт для работы пользователей настраивается централизовано на одном (двух/трех/…) терминальных серверах — это значительно проще, чем поддерживать зоопарк софта на «толстых» рабочих станциях сотрудников

Не стоит забывать и о пользовательских данных — локально терминал ничего не хранит (все данные пользователя находятся на удаленных серверах). В результате легко настроить автоматических бекап всего и вся и, в случае чего, восстановить «случайно удаленный» документ.

В общем, плюсов море, но есть и минусы:

  • при отказе сети, рабочие места сотрудников «превращаются в тыкву» (а сотрудники на «толстых» клиентах могут продолжать набивать документ, к примеру, в OpenOffice);
  • при отказе терминального сервера рабочие места сотрудников опять «превращаются в тыкву» (но это решается установкой нескольких — например, двух — терминальных серверов; при выходе одного из них из строя, второй его подменит или же сотрудники просто переподключатся ко второму серверу вручную)
  • тонкие клиенты подходят не всем: к примеру, людям, постоянно смотрящим видео или работающим активно работающих с графикой (в фотошопе) или занимающимся версткой журнала, лучше делать это на локальном «толстом» клиенте (зато тонкие клиенты отлично подходят большинству остальных сотрудников, которым нужен лишь браузер с Интернет, почта, создание и редактирование документов в Openoffice и работа с 1C).

Последний минус, который мы тут рассматривать не будем — это лицензионная политика (если не сказать обдираловка) со стороны Microsoft. Работа на терминальном сервере под управлением ОС этой известной компании требует большого количества разнообразных лицензий:

  • лицензия на Windows Server
  • CAL (Client Access License) — лицензии на подключение к Windows-серверу и их кол-во должно быть не меньше количества подключаемых к серверу клиентов (обычно в составе Windows-сервера уже идет некоторое кол-во таких лицензий — от пяти и выше)
  • лицензии на работу с сервером терминалов (их количество тоже должно быть равно количеству подключаемых клиентов)

Не забываем про отдельные лицензии на весь используемый софт (например на Microsoft Office) в количестве, равном количеству подключаемых к серверу клиентов. Если клиентские лицензии на Microsoft Office еще можно обойти, отказавшись от данного продукта и поставив ему замену в виде, к примеру, OpenOffice, то от самого терминального сервера в лице Windows 2000/2003 TS избавиться несколько сложнее :) Хотя и это возможно в некоторых случаях.

Есть, правда, еще один «минус» (кроме боязни нового) который часто останавливает от внедрения подобных решений — почему то многие думают, что эти тонкие клиенты надо покупать (а они не очень дешевые — от 200 долларов и выше). Куда же девать весь парк уже существующих компьютеров?

Именно для ответа на последний вопрос написана данная серия статей. В ней будет рассматриваться софт тонкого клиента Thinstation.

Этот небольшой, но обладающий множеством возможностей и, что немаловажно, OpenSource софт, позволяет превратить практически любые древние компьютеры в тонкие клиенты. Минимальные требования описанные на его родном сайте к используемому железу — это Pentium 100Mhz и 16Mb оперативной памяти. Ах да, жесткий/flash диск тоже не нужен — компьютеры при включении могут скачивать образ тонкого клиента (это около двадцати! мегабайт) по сети (хотя так же возможна установка Thinstation клиента на жесткий или usb диск). В наш век операционных систем, с радостью сжирающих гигабайты места на диске после установки, это впечатляет, не так ли?

Thinstation базируется на Linux, но для его использования знаний Linux, как таковых не нужно — достаточно в своей сети поднять dhcp и tftp сервера и соответствующим образом их настроить (оба этих сервера есть и в составе продуктов Windows Server). Таким образом, даже в сети, где кроме Windows-а ничего не знают, использование Thinstation клиента затруднений не вызовет.

Thinstation умеет работать со следующими серверами терминалов:

  • Сервера Microsoft Windows по протоколу RDP или через nxclient (Windows NT4TSE, W2k Server, W2k3 Server или же Windows XP в однопользовательском режиме);
  • Citrix servers по протоколу ICA (на серверах MS Windows, SUN Solaris и IBM AIX);
  • Сервера Tarantella
  • *nix-like сервера по протоколу X11;
  • подключение к VNC-серверам (tightVNC);
  • подключение к SSH и Telnet серверам;

Для того, что бы загрузить Thinstation по сети, от компьютера требуется лишь встроенная или внешняя сетевая карта, поддерживающая стандарт PXE (есть и другие варианты, но, к примеру все встроенные в системную плату сетевые карты работают именно по этому протоколу).

PXE расшифровывается как Pre-boot eXecution Environment — среда предзагрузочного выполнения. Этот стандарт был впервые реализован компанией Intel. Первый признак наличия PXE-биоса на борту встроенной сетевой карты, это пункт «Enable Boot ROM» рядом с пунктом активации сетевой карты в биосе. Если встроенная сетевая карта не поддерживает загрузку по сети (или отсутствует вовсе), можно использовать любую внешнюю сетевую плату с опцией «Boot ROM» (этот вопрос в подробностях будет рассмотрен далее).

А сейчас вкратце рассмотрим процесс загрузки клиента Thinstation по сети.

  • Сетевая карта по протоколу PXE запрашивает DHCP сервер следующую информацию: IP адрес, маску подсети, шлюз а так же IP-адрес сервера TFTP (на котором лежат образы, в данном случае, ThinStation) и имя образа, которое она попытается загрузить.
  • DHCP сервер возвращает запрашиваемую информацию (помечая у себя, что выданный клиенту IP адрес — занят таким-то клиентом)
  • Клиент подключается к TFTP серверу, IP-адрес которого ему только что сообщили и скачивает с него файл загрузчика PXE (имя которого ему опять таки сообщил DHCP-сервер)
  • Скаченный PXE загрузчик исполняется и, в свою очередь скачивает с TFTP сервера конфигурационный файл, в котором прописаны имена файлов ядра ОС Linux — vmlinuz и образа файловой системы — initrd. Эти файлы скачиваются и управления передается ядру Linux
  • После распаковки и загрузки ядра Linux с подмонтированным образом файловой системы, Thinstation снова обращается к TFTP серверу для скачивания необходимых ему конфигурационных файлов (там, среди прочего, записаны адреса терминальных серверов, к которым нужно подключаться), после чего запускает нужный терминальный клиент (в нашем случае это будет rdesktop) и ожидает от пользователя ввода его логина с паролем для подключения.

На первый взгляд, описанная схема выглядит сложно. Но по факту настройка оной занимает полчаса-час и в дальнейшем она работает полностью автономно. Загрузка тонкого клиента с момента первого запроса в сеть по PXE (этот момент совпадает с моментом начала загрузки ОС с жесткого диска) занимает секунд 20…30.

Как уже отмечалось выше, Thinstation умеет работать с разными терминальными серверами. Но мы в ближайших статьях, как самое простое в реализации (но еще раз напоминаю о покупке множества клиентских лицензий, необходимых для официальной работы), рассмотрим лишь связку Thinstation с Microsoft Terminal Server.

Для начала нам надо иметь настроенный сервер терминалов от Microsoft. Этот сервер может работать как в составе домена (в этом случае удобнее управлять аккаутами пользователей — они общие — особенно если терминальных серверов в сети несколько), так и в вне домена — в одноранговой сети. Второй случай отличается от первого тем, что необходимых пользователей придется заводить на каждом сервере локально и синхронизировать актуальные списки пользователей и их прав — вручную.

Вторым пунктом нашей программы будет настройка DHCP и TFTP серверов. Первый ведает динамической раздачей IP адресов для рабочих станций, а так же сообщает, с какого IP адреса (с какого сервера tftp) и какое имя файла компьютеру нужно скачать в качестве загрузочного образа тонкого клиента. А второй — tftp сервер — фактически и отдает образы тонкого клиента и конфигурационные файлы для них же. Эти настройки могут быть как глобальными (для всех бездисковых терминалов сети), так и локальные — для определенных групп машин или же одиночных тонких клиентов.

Оба эти сервиса можно поднять как в составе Windows сервера (запуском и настройкой соответствующих служб), так и отдельными демонами в составе *nix-сервера — мы это рассмотрим на примере сервера с установленным Gentoo Linux.

А третьим пунктом идет настройка клиентских машин — перевод их на загрузку по сети и рассмотрение стандартных подводных камней.

Но об этом — в следующих статьях нашего цикла.

Установить тонкий клиент для работы в 1С можно двумя способами:

1 Скачать тонкий клиент с сайта 1С, используя пользователя и пароль Интернет поддержки.

http://users.v8.1c.ru/

Выберите «Технологическую платформу 8.3»

Релиз технологической платформы. Номер релиза лучше уточнить в техподдержке «Смарт Офиса» по телефону 8-800-505-37-68.

Выберите разрядность тонкого клиента. Если у Вас возникнут вопросы, то их можно уточнить в техподдержке «Смарт Офиса» по телефону 8-800-505-37-68.

Скачайте тонкий клиент

Для установки клиента перейдите к пункту 3.


2 Второй вариант установки – ссылка в письме от «Смарт Офиса». Она высылается при первоначальной установке или при регулярном обновлении платформы 1С.

Письмо от «Смарт офиса» при первоначальной настройке

Но чаще приходят письма об обновлении тонкого клиента при смене платформы 1С.

Этот вариант рассмотрим подробнее.

Обратите внимание, что письмо должно быть прислано с почты support@smoff.ru

При получении письма об обновлении с другого адреса, не открывайте его и не скачивайте файлы по ссылке. Позвоните в службу нашей поддержки по телефону 8-800-505-37-68.

Подтвердите скачивание файла и сохраните файл на жесткий диск

Дальнейшая установка одинакова как для скачивания с сайта 1С, так и для ссылки присланной от «Смарт Офиса»


3 Перейдите в папку, куда Вы скачали файл и разархивируйте его

Запустите программу установки

Используйте рекомендуемые настройки
 

Если Windows попросит подтвердить установку программы, то нажмите «Да» в появившемся сообщении

Дождитесь окончания установки

После успешной установки тонкого клиента, переходим к настройке загрузчика 1С


4 Откройте письмо, пришедшее в Ваш адрес от «Смарт Офиса». Скопируйте ссылку.

Запустите загрузчик 1С и вставьте ссылку. Введите имя базы на Ваш выбор.

Завершите настройку

Запустите базу 1с в работу

Если у Вас возникли вопросы по установке программы и запуску базы, вы всегда можете обратиться в нашу техподдержку по телефону 8-800-505-37-68

Рассмотрим пример организации выделенной сети тонких клиентов, подключающихся по протоколу RDP к центральному серверу служб удалённых рабочих столов Microsoft Windows Server (Remote Desktop Services). В качестве ОС тонкого клиента будем использовать свободно распространяемую среду Thinstation из проекта Thinstation by Donald A. Cupp Jr., в составе которой присутствует RDP-клиент FreeRDP.

В качестве аппаратной платформы для тонкого клиента мы будем использовать устройства HP t610, хотя в рамках нашей задачи эти устройства имеют более чем избыточную конфигурацию. По сути минимальные системные требования для тонкого клиента с Thinstation – любой «аппаратный хлам» начиная с уровня Pentium-II с 128MB RAM и выше. Мы будем использовать бездисковую конфигурацию тонких клиентов, то есть загрузка системы будет выполняться по сети с использованием PXE (приоритетно) или с локальных загрузочных USB-накопителей (для клиентов без поддержки PXE и в отдалённых участках со слабым каналом передачи данных).

Когда я изучал доступные в открытых источниках статьи на тему подобного развёртывания, то среди множества материалов выделил для себя статью Пети Хинчли «Use Thinstation to build a network-bootable RDP-enabled thin client image», от наработок которой я и буду отталкиваться. Также в качестве полезного источника информации стоит отметить такие русскоязычные ресурсы, как Thinstation по русски и Thinstation Доработка тонкого клиента.

В рассматриваемом примере имеется несколько исходных условий, от которых нам придётся отталкиваться:

  • Все тонкие клиенты должны быть изолированы в рамках одной сети и должны маршрутизироваться только до своего RDS-сервера.
  • RDS-сервер, помимо предоставления сессий удалённых рабочих столов, по совместительству должен выполнять все функции управления тонкими клиентами (раздача IP адресов, раздача загрузочных образов ОС, раздача настроек каждого конечного клиента и т.д.).
  • Загрузка конечной рабочей среды тонкого клиента должна происходить автоматически без участия пользователя/оператора (авто-логон RDP-сессии и запуск необходимой оболочки – конечного бизнес-приложения)
  • Цикличная работа тонких клиентов должна быть автоматизирована, то есть клиенты должны автоматически включаться по расписанию утром каждого рабочего дня и выключаться в конце рабочего дня.    

Начнём процедуру настройки с выделенного сервера, который в нашем случае является виртуальной машиной Hyper-V с предварительно установленной гостевой ОС Windows Server 2012 R2 Standard. Развернём и настроим на этом сервере службы DHCP и WDS.

Настройка сервера DHCP

Для автоматического назначения IP-адресации нашим тонким клиентам установим и настроим службу DHCP на нашем сервере управления.

Устанавливаем роль DHCP Server через оснастку Server Manager или через PowerShell:

Install-WindowsFeature -Name DHCP -IncludeManagementTools

После установки роли откроем оснастку Server Manager и запустим мастер Post-Deployment Configuration, после завершения которого роль сервера DHCP может считаться развёрнутой.

В нашем примере сервер DHCP разворачивается на компьютере, не являющемся членом домена, поэтому с авторизацией (активацией) службы DHCP не возникнет проблем – сразу после развёртывания сервер будет готов к работе. Создадим для тонких клиентов область с пулом выдаваемых IP адресов и активируем её:

В случае если DHCP сервер разворачивается на доменной системе, то дополнительно может потребоваться его авторизация. Если прав Администратора домена нет, то провести авторизацию сервера можно путём небольшой правки реестра: Как авторизовать DHCP сервер не имея прав Администратора домена.

В оснастке управления правилами Windows Firewall проверяем правила относящиеся к серверу DHCP (как минимум нужно разрешить входящие подключения по протоколу UDP на порты 67/68)

Настройка сервера Windows Deployment Services

Роли Windows Deployment Services и Web Server понадобятся нам для возможности раздачи по сети (PXE) загружаемых образов Thinstation тонким клиентам по протоколам TFTP/HTTP. Устанавливаем роли:

Install-WindowsFeature -Name "Web-Server","WDS" -IncludeManagementTools

К настройке веб-сервера IIS мы обратимся позже, а сейчас рассмотрим то, как настроить WDS сервер на поддержку загрузчика SYSLINUX.

Откроем консоль WDS и первым делом вызовем мастер конфигурирования сервера Configure Server

На первом шаге мастер ознакомит нас с требованиями необходимыми для работы WDS.

  • Первым пунктом идёт информация о том, что сервер может быть сконфигурирован как с поддержкой доменной инфраструктуры, так и в изолированном варианте (как раз наш случай).
  • Службу сервера DHCP мы уже развернули. В процессе конфигурации WDS будет включена специальная опция DHCP сервера для поддержки PXE-клиентов.
  • Среди требований присутствует наличие DNS-сервера в сети, хотя в нашем конкретном случае в этом нет реальной необходимости. DNS это конечно хорошо и правильно, но мой практический опыт работы с Thinstation показал, что полностью избавится от применения IP-адресов вместо FQDN-имён не получится, и поэтому я решил вообще не заморачиваться с использованием службы DNS.
  • Отдельный NTFS-раздел для хранения загрузочных образов сделан на нашем WDS-сервере (далее в примерах будет фигурировать как диск D:)

На шаге выбора типа развёртывания WDS, согласно исходных условий нашего примера, выбираем режим изолированного сервере Standalone server

На шаге размещения каталога для файлов WDS и загрузочных образов по умолчанию предлагается каталог C:RemoteInstall. В нашем примере путь изменён на диск D:

На следующем шаге мастер конфигурации, определив наличие на нашем сервере службы DHCP-сервера, предложит настроить параметры взаимодействия с этой службой. А именно, нам потребуется включить запрет прослушивания портов DHCP службой WDS и разрешить конфигурирование опций DHCP-сервера для поддержки PXE-клиентов.

На шаге настроек PXE по условиям нашей задачи разрешаем WDS серверу отвечать на запросы всех PXE-клиентов

По завершению работы мастера служба WDS будет запущена. В консоли WDS откроем свойства сервера и на закладке Boot отключим включенное по умолчанию требование нажатия F12 на стороне PXE-клиента для возможности загрузки по сети, выбрав опцию Always continue the PXE boot.

Заглянем в оснастку управления сервером DHCP и проверим, что в DHCP-опциях на уровне сервера появилась опция PXE

***

Теперь сделаем ряд действий по добавлению нашему WDS серверу поддержи SYSLINUX.

Скачаем архив актуальной версии загрузчика syslinux-6.03 по ссылке:

https://www.kernel.org/pub/linux/utils/boot/syslinux/

Распакуем архив syslinux-6.03.zip и выполним следующие действия:

  • Скопируем в каталог D:RemoteInstallBootx64 на сервере WDS следующие файлы:
    syslinux-6.03bioscorepxelinux.0 (переименовать в pxelinux.com)
    syslinux-6.03bioscom32menuvesamenu.c32
    syslinux-6.03bioscom32elflinkldlinuxldlinux.c32

    syslinux-6.03bioscom32chainchain.c32
    syslinux-6.03biosmemdiskmemdisk
  • Скопируем файл D:RemoteInstallBootx64abortpxe.com в файл abortpxe.0.
  • Скопируем файл D:RemoteInstallBootx64pxeboot.n12 в файл pxeboot.0.

Повторим действия, проделанные для каталога D:RemoteInstallBootx64 применительно к каталогу D:RemoteInstallBootx86

***

Создадим каталог D:RemoteInstallBootpxelinux.cfg (не файл, а именно каталог). В этом каталоге будут хранится конфигурационный файлы PXE, которые будет отдавать WDS-сервер PXE-клиентам.

Создадим конфигурационный файл PXE «по умолчанию» с именем default в каталоге D:RemoteInstallBootpxelinux.cfg и добавим в него следующий контент:

DEFAULT RDP
PROMPT 0
NOESCAPE 1
ALLOWOPTIONS 0
LABEL RDP
MENU DEFAULT
KERNEL /Linux/vmlinuz
APPEND initrd=/Linux/initrd splash=silent,theme:default load_ramdisk=1 ramdisk_blocksize=4096 root=/dev/ram0 ramdisk_size=786432 loglevel=3 console=tty1 vt.global_cursor_default=0 LM=3

***

В командной строке с правами Администратора перейдём в каталог D:RemoteInstallBootx64 и создадим символическую ссылку (junction) на каталог D:RemoteInstallBootpxelinux.cfg:

cd /d D:RemoteInstallBootx64
mklink /J pxelinux.cfg D:RemoteInstallBootpxelinux.cfg

Повторим тоже самое для каталога D:RemoteInstallBootx86:

cd /d D:RemoteInstallBootx86
mklink /J pxelinux.cfg D:RemoteInstallBootpxelinux.cfg

 
***

Создадим каталог D:RemoteInstallImagesLinux. В этом каталоге мы будем размещать загружаемые образы ОС тонких клиентов.

В командной строке с правами Администратора перейдём в каталог D:RemoteInstallBootx64 и создадим символическую ссылку (junction) на каталог D:RemoteInstallImagesLinux:

cd /d D:RemoteInstallBootx64
mklink /J Linux D:RemoteInstallImagesLinux

Повторим тоже самое для каталога D:RemoteInstallBootx86:

cd /d D:RemoteInstallBootx86
mklink /J Linux D:RemoteInstallImagesLinux


***

Для того, чтобы настроить WDS на использование добавленных нами загрузочных программ SYSLINUX (замена стандартного для WDS загрузчика pxeboot на pxelinux), выполним ряд команд с правами Администратора на сервере WDS:

wdsutil /set-server /bootprogram:bootx86pxelinux.com /architecture:x86
wdsutil /set-server /N12bootprogram:bootx86pxelinux.com /architecture:x86
wdsutil /set-server /bootprogram:bootx64pxelinux.com /architecture:x64
wdsutil /set-server /N12bootprogram:bootx64pxelinux.com /architecture:x64

Примечание: Если в дальнейшем по какой-то причине потребуется восстановить загрузочные программы (pxeboot), используемые в WDS по умолчанию, сделать это можно командами:

wdsutil /set-server /bootprogram:bootx86pxeboot.com /architecture:x86
wdsutil /set-server /N12bootprogram:bootx86pxeboot.n12 /architecture:x86
wdsutil /set-server /bootprogram:bootx64pxeboot.com /architecture:x64
wdsutil /set-server /N12bootprogram:bootx64pxeboot.n12 /architecture:x64

***

В оснастке управления правилами Windows Firewall проверяем правила относящиеся к серверу WDS (как минимум нужно разрешить входящие подключения по протоколу UDP к исполняемому файлу службы).

А также включаем правило, разрешающее входящий трафик к веб-серверу IIS

Кстати, к настройке веб-сервера IIS мы ещё вернёмся позже.

Развёртывание сборочной среды DevStation

Для сборки собственных загрузочных образов проект Thinstation, в качестве одного из вариантов, предлагает использовать специальную загружаемую среду DevStation. Используя загрузочный дистрибутив DevStation, мы развернём выделенную Linux-систему, с помощью которой в дальнейшем будем собирать загрузочные образы Thinstation для конечных тонких клиентов. Прежде всего в DevStation будет сгенерирован специальный загрузочный образ Thinstation, с которого, в свою очередь, нужно будет загрузиться на всех используемых типах аппаратных конфигураций наших клиентов и сгенерировать профиль оборудования. На базе полученных профилей оборудования на нашем сервере DevStation будут скомпилированы конечные загрузочные сборки Thinstation под каждую аппаратную конфигурацию. Такой подход позволит свести к разумному минимуму размер загружаемого по сети образа Thinstation для каждой конкретной партии «железок».  

Под задачу развёртывания DevStation можно использовать виртуальную машину. В сети можно найти примеры использования для этих целей виртуальных машин на базе VMWare и VirtualBox. В моём случае используются среды виртуализации Microsoft Hyper-V и oVirt. Попытки развернуть DevStation 5.5 на виртуальную машину Hyper-V 2012 R2 результата не дали, так как происходило зависание процесса установки на стадии разметки диска, хотя с определением диска проблемы не возникало. В конечном итоге виртуальная машина была создана в среде виртуализации oVirt с настройками согласно документа DevStation setup.

Созданная виртуальная машина имеет 2vCPU , 3GB ОЗУ, vHD 25GB (при меньшем размере диска, чем 20GB, DevStation может не установиться). В качестве интерфейса диска вместо используемого по умолчанию в oVirt 4.0.6 значения VirtIO я выбрал IDE, так как развёртывание DevStation заработало корректно только на этом интерфейсе.

***

Загружаем последнюю версию DevStation по ссылке: Thinstation Latest Download

В нашем случае это файл TS-5.5.1-Installer-0627.iso размером 212MB

Загружаемся в подготовленную виртуальную машину с ISO-образа и выбираем пункт установки – Installer for DevStation

В память загрузится Live-система, будет выполнен авто-вход в графическую оболочку, где с рабочего стола запустим ярлык Install to HD. В открывшейся форме нам поведают о том, что на самом деле можно прожить и без выделенной инсталляции DevStation, залив git-клон проекта Thinstation на любой другой сборочной Linux-системе.   

Утвердительно «кивнём гривой», после чего будет запущена процедура проверки Интернет-соединения.

В случае, если наша виртуальная машина DevStation не имеет прямого подключения к Интернету, то нам любезно будет предложено настроить параметры прокси-сервера 

Однако практическое применение показало, что инсталлятор не смог пройти через Squid с включённой аутентификацией, даже не смотря на то, что были явным образом указаны параметры прокси и учётные данные для аутентификации на прокси. В конечном итоге виртуальная машина DevStation на время инсталляции была выпущена в Интернет напрямую.

После того, как Интернет-соединение будет успешно проверено, нам сообщат о том, на какой диск будет установлена система DevStation.

Затем укажем предпочитаемое разрешение экрана. У нас ВМ и выбор здесь небольшой.

Затем из представленных списков выберем свою временную зону и раскладку клавиатуры:

Перед началом процесса установки DevStation нас предупредят о том, что все данные на диски будут уничтожены (инсталлятор по своему усмотрению выполнит разметку диска)

Будет запущена программа развёртывания DevStation, в ходе которой будет выполнена разметка диска, загрузка и установка всех необходимых пакетов из онлайн-репозитория проекта Thinstation размером примерно около 2GB.

Процедура может занять от 20 минут и более, в зависимости от пропускной способности вашего Интернет-канала и проворности диска виртуальной машины. Когда процесс будет завершён, мы получим несколько уведомительных сообщений о том, как собрать собственный загрузочный образ тонкого клиента…

…о том, что наша система DevStation способна выступать в качестве PXE-сервера…

…и о том, что загрузочный образ ISO, с которого мы выполняли установку теперь нам больше не нужен, как, впрочем, и прямое подключение к Интернет, и после перезагрузки мы уже можем использовать установленную систему…

На это этапе можно извлечь загрузочный ISO образ из привода виртуальной машины и нажать OK

Отправляем виртуальную машину в перезагрузку.

Сборка служебного образа Thinstation

Подключаемся к консоли только что развёрнутой сборочной среды DevStation. Учётные данные при этом вводить не требуется, так как в системе настроен авто-вход. Пароль пользователя root на нашей виртуальной машине DevStation — pleasechangeme. По умолчанию в DevStation включен Telnet-сервер и с этими учётными данными без проблем можно удалённо подключиться к системе. И как я понял, простого и вменяемого способа изменить такое поведение нет. Лишь в ветке обсуждения Thinstation Installer Disc Server — ssh access я нашёл пример того, как вместо Telnet можно включить SSH и сменить root-пароль, который подразумевает пересборку самого образа DevStation. Что скорее всего, как следствие, вызовет необходимость его переустановки. Как бы там ни было, включённая система DevStation нам нужна только на этапе сборки конечных образов тонких клиентов, а всё остальное время можно держать её выключенной.

Итак, с рабочего стола графической среды DevStation запускаем ярлык Terminal Chroot

В открывшейся консоли автоматически откроется файл справки README. Нажмём Q чтобы закрыть справочный файл и перейти в консоль.

Сменим текущий каталог на /build. Здесь мы и будем выполнять практически всю работу – настройку конфигурации под наших клиентов и сборку образов для их загрузки. В первую очередь нас интересуют два основных файла build.conf и thinstation.conf.buildtime. Первый файл определяет порядок сборки образов Thinstation, то есть то, какие в образ будут включены драйверы для поддержки оборудования (например поддержка определённых видео-адаптеров), какие будут добавлены пакеты приложений сервисного уровня (например поддержка NFS, NTP и т.п.) и прикладного уровня (например наличие веб-браузера, RDP-клиента и т.д.) и ряд других параметров сборки. Второй файл добавляется в собираемый образ и в основном служит для передачи неких параметров/переменных, которые могут определять тот или иной порядок работы тонкого клиента и включённых в него приложений.

На данном этапе перед нами стоит задача сборки служебного загрузочного образа Thinstation, который будет содержать в себе все драйверы, поддерживаемые средой Thinstation и с минимальными изменениями в файле build.conf. Этот служебный образ потребуется нам для того, чтобы на следующем этапе, загрузившись с него уже на конечных устройствах – тонких клиентах, выполнить процедуру генерации файлов профиля оборудования, которые в свою очередь будут использоваться для сборки конечных результативных образов тонких клиентов.

Удалим имеющуюся символическую ссылку на конфигурационный файл build.conf и создадим новый файл на базе шаблона build.conf.example

# rm build.conf  
# cp build.conf.example build.conf

Обратите внимание на то, что все команды здесь мы будем выполнять в chroot-окружении, которое ссылается на каталог /thinstation/ относительно корневой системы DevStation.

С помощью текстового редактора внесём минимальные корректировки в файл build.conf.
В частности, нужно убрать комментарий (#) в строке содержащей запись package extensions-x (этот пакет содержит инструменты создания профилей оборудования, в том числе и скрипт hwlister.sh, который нам потребуется в дальнейшем)

В целом этого достаточно, однако на практике я столкнулся с багом squashfs and firmware.list generation #192, который, как я понимаю, на данный момент не исправлен. Баг приводит к тому, что в процессе генерации профиля оборудования, который мы будем делать на следующем этапе, не создаётся файл firmware.list, что может привести к отсутствию корректной поддержки необходимых аппаратных компонент тонкого клиента. В качестве обходного решения этой проблемы на данный момент является замена параметра initrdcmd (Compression Mode) в файле build.conf c «squashfs«…

… на «gzip -9«

Сохраним отредактированный файл build.conf и выполним команду сборки образа, включающего в себя все драйверы, которые поддерживает Thinstation

# ./build --allmodules

В процессе сборки будет задан вопрос о добавлении Firefox в собираемый образ. Если он Вам не нужен, вполне можно от него отказаться. То же самое касается включённых в конфигурации по умолчанию гостевых компонент VBox.

Процесс компиляции образа будет завершён созданием файла initrd размером около 175MB. Этот файл и содержит загружаемую ОС c ПО Thinstation для наших тонких клиентов. Напоминаю, что размер образа большой по той причине, что мы на этапе сборки включили в него все модули поддержки оборудования.

В конечном итоге на данный момент нас интересуют 2 файла, появившихся после компиляции — initrd (Initial RAM Disk) и vmlinuz (Linux Kernel). Файл vmlinuz служит для первичной загрузки и инициализации оборудования тонкого клиента, после чего начинается загрузка initrd. 

После завершения процесса компиляции оба эти файла можно найти в каталоге /thinstation/build/boot-images/pxe/boot/ (в консоли «Terminal Chroot» это каталог /build/boot-images/pxe/boot/). Нужно скопировать эти два файла на наш WDS-сервер в каталог D:RemoteInstallImagesLinux

Создадим временную сетевую папку на нашем Windows-сервере и предоставим доступ на запись к этой папке для своей учётной записи. На DevStation-машине создадим новый каталог и смонтируем в него сетевую папку с Windows-сервера WDS, после чего скопируем в смонтированную папку все нужные нам файлы:

# mkdir /mnt/WDSTempShare
# mount.cifs //KOM-APP20/TempShare /mnt/WDSTempShare -o user=volodya
# cp /build/boot-images/pxe/boot/initrd /mnt/WDSTempShare/
# cp /build/boot-images/pxe/boot/vmlinuz /mnt/WDSTempShare/
# umount /mnt/WDSTempShare

На WDS-сервере из папки /TempShare перенесём файлы initrd и vmlinuz в каталог, из которого PXE-сервер будет отдавать PXE-клиентам файлы для загрузки D:RemoteInstallImagesLinux

Получение файлов профиля оборудования для Thinstation

Задача получения профиля оборудования заключается в том, чтобы загрузить эталонный компьютер (тонкий клиент с типичным для партии набором аппаратных компонент) с образа Thinstation собранного с опцией —allmodules и выполнить в этой системе скрипт /bin/hwlister.sh. Данный скрипт сгенерирует файлы профиля оборудования и попытается передать их на PXE-сервер, встроенный в DevStation.

Обратите внимание на то, что на данном этапе PXE-загрузку эталонного клиента (для генерации файлов профиля оборудования) мы можем произвести как с нашего WDS-сервера (ведь мы уже скопировали на него загрузочные файлы образа initrd и vmlinuz), так и с встроенного в DevStation PXE-сервера. Однако стоит учитывать то, что скрипт hwlister.sh будет пытаться передать получившиеся файлы профиля оборудования именно на тот PXE-сервер, с которого он был загружен. Поэтому для генерации профиля оборудования будет проще всего загружаться именно с PXE-сервера встроенного в DevStation.

При этом на сервере DevStation для загрузки будут использоваться именно те файлы initrd и vmlinuz, которые расположены в каталоге /thinstation/build/boot-images/pxe/boot/, так как этот каталог является корневым для встроенного в DevStation PXE-сервера. Именно поэтому важно, чтобы при попытке загрузки эталонной машины c PXE-сервера DevStation, на этом сервере в каталоге /thinstation/build/boot-images/pxe/boot/ находились файлы образа собранного с опцией —allmodules, который мы собрали в на предыдущем этапе. Это предотвратит потенциальные проблемы с распознаванием оборудования и полноценной загрузкой Thinstation.

***

Теперь на нашем Windows-сервере потребуется на время внести некоторые изменения:

  • В оснастке управления сервером DHCP создадим резервирование IP для эталонной машины
  • В оснастке управления сервером WDS отключим опцию интеграции с DHCP

Чтобы заставить нашу эталонную машину тонкого клиента загружать образ по сети не с WDS сервера, а с машины DevStation, создадим на DHCP-сервере резервирование IP адреса для эталонной машины с опциями 66 и 67:

66 = <IP-адрес DevStation>

67 = boot/pxelinux/pxelinux.0

Кстати, в значении 67 опции по замечанию из статьи Thinstation OS можно указать путь к другому файлу, чтобы изменить загрузку с TFTP на HTTP (это может несколько ускорить процесс загрузки образа). Для этого значение boot/pxelinux/pxelinux.0 нужно заменить на на boot/lpxelinux/lpxelinux.0. Однако, как я понял, загрузка по HTTP поддерживается не всеми сетевыми картами и поэтому в большинстве случаев всё же будет использоваться TFTP.

Так, как мы планируем использовать PXE сервер с DevStation, то в нашей конфигурации потребуется на время отключить PXE сервер, встроенный в WDS, чтобы из опций DHCP-сервера исчезла опция 060 = PXEClient. Если этого не сделать, то WDS может передавать PXE-клиенту не тот адрес PXE-сервера, который нас интересует.

***

Переходим на DevStation и разрешаем запись всем пользователям в корневой каталог встроенного TFTP сервера. Для этого можно либо выполнить консольную команду:

# chmod 777 /thinstation/build/boot-images/pxe

Либо в графической оболочке вызвать через пункт меню Start > DevStation > Toggle PXE Read/Write:

После вызова этого пункта меню мы увидим сообщение о том, что запись для PXE-сервера включена:

***

Включаем эталонный компьютер. При старте клиент получит с DHCP зарезервированный нами IP-адрес с опциями указывающими на PXE-сервер DevStation и начнёт оттуда загружать образ.

На загруженном эталонном клиенте в графической оболочке открываем меню Applications > Utilities и выбираем Terminal Emulator

В окне терминала запускаем генерацию профиля оборудования с передачей на машину DevStation командой:

# /bin/hwlister.sh


Заглянем в каталог /thinstation/build/boot-images/pxe на DevStation машине. Здесь появятся файлы переданные с клиента (в зависимости от «железа» клиента): module.list, package.list, firmware.list

Итак, аппаратный профиль эталонного клиента получен и передан на DevStation. Теперь можем выключить эталонный компьютер. Он нам больше не нужен.

На DevStation создаём новый подкаталог для профиля клиента в каталоге /thinstation/build/machine/ (/build/machine/ в chroot-окружении) и переносим туда только что полученные с эталонного клиента list-файлы

# mkdir /build/machine/HPt610  
# cd /build/machine/HPt610  
# mv /build/boot-images/pxe/*.list . 

Далее созданный профиль под названием HPt610 мы будем использовать при сборке конечного рабочего образа (будем указывать имя этого каталог в build.conf).

Туже самую процедуру создания нового профиля из list-файлов, попавших в каталог /thinstation/build/boot-images/pxe, можно сделать и с помощью графической оболочки DevStation. Для этого будет достаточно вызвать пункт меню  Start > DevStation > Make Machine Profile и указать имя нового профиля

***

Отключаем право на запись в PXE-сервере DevStation через ранее упомянутый пункт меню Start > DevStation > Toggle PXE Read/Write или командой в терминале:

# chmod 755 /thinstation/build/boot-images/pxe

***

Возвращаемся на наш Windows-сервер и в консоли WDS не забываем обратно включить опцию поддержки интеграции PXE с DHCP (вторую галочку)

А в консоли управления DHCP-сервером удаляем созданное ранее резервирование, которое мы делали под эталонного клиента.

Сборка рабочего образа Thinstation

На данном этапе можно считать, что у нас всё готово для сборки конечного рабочего образа Thinstation, который будет использоваться для наших тонких клиентов определённой аппаратной конфигурации. Процедура сборки аналогична той, что мы рассмотрели ранее, когда делали служебный образ Thinstation с главным отличием в том, что сборка выполняется без ключа —allmodules. При этом в собираемый образ Thinstation будут добавлены только те модули поддержки оборудования, которые перечислены в незакомментированных строчках перечисляющих профили оборудования (machine …) в файле build.conf.

Базовую информацию о структуре конфигурационного файла build.conf можно получить из документа Thinstation Wiki — build.conf. Логика простая – включаем только те модули и пакеты, которые нужны для работы наших тонких клиентов, всё что не нужно – отключаем (комментируем), так как каждый лишний модуль/пакет увеличивает размер образа который получится в результате компиляции. При этом лучше не отключать те вещи, значение которых вам непонятно, если не хотите потерять время на отладке, которой можно было и не заниматься. 

Далее рассмотрим правки, которые нужно внести в build.conf исходя из условий нашей задачи.

В секции #!Hardware добавим запись о ранее созданном профиле machine HPt610

В секции #!!File System Support оставим модули usb-storage, isofs, udf, vfat. Остальные модули закомментируем. Эти модули нам потребуются на случай необходимости загрузки не по сети а с накопителей, типа USB-флэш диск.

В секции #!!Miscellaneous (я обнаружил в файле 2 таких секции) в списке пакетов закомментируем ранее включённый пакет extentions-x, так как на рабочем образе тонкого клиента в нём нет необходимости. Для возможности нормальной автоматической конфигурации сети в процессе загрузки тонкого клиента включим пакет ts-classic, выключим networkmanager и добавим autonet.

В секции #!!X закомментируем пакеты xorg7-vmware и, при необходимости, раскомментируем прочие (например в нашем случае нужен пакет xorg7-ati). В любом случае рекомендуется оставлять пакет xorg7-vesa, так как он будет использован, если родной пакет драйвера не обнаружен или по какой-то причине не заработал.

В секции #!!Locale закомментируем все языковые пакеты за исключением тех. которые могут нам быть полезны: locale-en_US и locale-ru_RU.

В секции #!Applications закомментируем пакеты все ненужные нам пакеты, например firefox, open-vm-tools и vboxguest. В нашем случае в этой секции остаться только пакет freerdp.

В секции #!!Window Managers комментируем все пакеты оконных менеджеров, так как в нашей ситуации в них нет необходимости.

В секции #!!Other services комментируем пакеты cups (печать в нашем случае не нужна) и samba-client (нам не требуется, чтобы тонкий клиент мог куда-то попасть по SMB).

В секции #!!Basic раскомментируем параметр fastboot, чтобы использовать механизм быстрой загрузки образа (HTTP вместо TFTP). Зададим значение пароля в параметре rootpasswd. Закомментируем параметры xorgvncpasswd, storagepasswd, dualupasswd, sambapasswd, так как в них нет нужды. Так, как мы собрались использовать быструю загрузку HTTP, зададим параметр baseurl, в котором укажем URL-адрес веб-сервера и параметр basepath, в котором укажем имя папки на веб-сервере, в которой нужно искать файлы для загрузки. Параметр initrdcmd вернём в исходное значение «squashfs».

В конечном счёте (без учёта закомментированных строк) конфигурационный файл build.conf в нашем случае примет следующий вид:

#!Hardware
machine HP-t610
#!!Filesystem Support
module usb-storage
module isofs
module udf
module vfat
#!!Miscellaneous
package overlayfs
package ts-classic
package autonet
package udisks
package ntp
package cpufreq
#!!X related
package xorg7-vesa
package xorg7-ati
#!!Locale
package locale-en_US
package locale-ru_RU
#!Applications
package freerdp
#!!Miscellaneous
package fonts-TTF-BH
package fonts-TTF-vera
package fonts-TTF-liberation
#!!Basic
param fastboot       true
param rootpasswd     Str0nGpWd
param bootlogo       true
param boottheme    default
param splash       silent
param fbmtrr         0
param fbnocrtc       true
param fbsm           ywrap
param bootresolution 1280x768-32
param desktop file:./backgrounds/Hive_Lite.jpg
param defaultconfig  thinstation.conf.buildtime
param basename       thinstation
param basepath       ThinClients
param baseurl        http://10.1.4.10
param haltonerror    false
param hardlinkfs     true
param sametimestmp   true
param initrdcmd    "squashfs"
param bootverbosity   3
#!!Advanced
param downloads       /downloads
param bootimages      "iso syslinux pxe"
param syslinuxtheme   "default"
package alltimezone
param allres    true
param allfirmware   true
param blacklist snd-pcsp.ko

***

Следующим правим конфигурационный файл thinstation.conf.buildtime, предварительно сделав копию оригинального файла на всякий случай:

# cp thinstation.conf.buildtime thinstation.conf.buildtime.original

Базовую информацию об этом файле можно получить в документе Thinstation Wiki — thinstation.conf, а узнать о возможных параметрах и их описании можно в файле thinstation.conf.sample.

Основную массу имеющихся в файле thinstation.conf.buildtime параметров можно оставить без изменений. Изменим и добавим лишь те параметры которые относятся к специфике нашей задачи:

NET_FILE_ENABLED=On
NET_FILE_METHOD=wget
...
SESSION_0_TYPE=freerdp
SESSION_0_TITLE="RDP"
SESSION_0_AUTOSTART=on
...
NET_USE=LAN
NET_USE_DHCP=ON
NET_DHCP_DELAY=30
NET_DHCP_TIMEOUT=30
NET_LINKWAIT=30
...

Добавленными параметрами NET_FILE_* мы укажем на необходимость загрузки конфигурационных файлов Thinstation по сети по протоколу HTTP. Это позволит нам разместить на веб-сервере конфигурационные файлы thinstation.conf-<MAC>, настраивающие конкретных тонких клиентов, не меняя при этом настройки внутри раздаваемого образа. Далее мы рассмотрим пример такого файла.

В параметрах SESSION_0_* вместо используемого по умолчанию графического оконного менеджера xfwm4 мы сразу будем вызывать RDP-клиента freerdp. А общие для всех наших  клиентов параметры подключения RDP-клиента к RDS-серверу (имя сервера, опции RDP-сессии) мы также вынесем в дальнейшем на веб-сервер в файл thinstation.conf.network. Его пример мы также рассмотрим далее.

В перечисленных параметрах NET_* мы зададим те опции тонкого клиента, которые могут повлиять на корректность инициализации сети в загружаемой системе и успешность загрузки по сети, как таковую. Например первая опция NET_USE=LAN задаёт приоритет использования проводных сетевых адаптеров перед беспроводными (может быть полезно, если тонкий клиент имеет и беспроводной и проводной адаптеры и один мешает загрузке другого). Опции задержки и таймаутов нужны для ожидания инициализации драйвера сетевого адаптера. На практике столкнулся с тем, что неуспевающий пройти инициализацию сетевой адаптер ломал загрузку по сети через HTTP.

***

Так как по условиям нашей задачи требуется авто-вход в RDP-сессию, удалим пару файлов, которые предотвращают авто-вход для freerdp

# rm /thinstation/build/packages/freerdp/etc/cmd/freerdp.getuser
# rm /thinstation/build/packages/freerdp/etc/cmd/freerdp.getpass

Это позволит нам передавать учётные данные для подключения к RDS-серверу клиенту freerdp в виде параметров. Эти параметры мы будем хранить в файлах thinstation.conf-<MAC>, которые тонкие клиенты будут получать с веб-сервера в процессе загрузки. В целом, с точки зрения безопасности, такое решение может быть неверным, однако учитывая условия нашей задачи (изоляцию сегмента сети тонких клиентов и одинаковый ограниченный набор возможностей конечных пользователей работающих на всех тонких клиентах) такая конфигурация вполне имеет право на жизнь.

***

Теперь на DevStation всё готово для сборки рабочего образа. Запускаем сборку из chroot-окружения:

# ./build

Так, как в конфигурационном файле build.conf мы включили поддержку fastboot, то при сборке вместо одного «тяжёлого» файла initrd мы получим «легковесный» initrd и дополнительный squash-файл, который и будет в себе содержать бОльшую долю загружаемых данных.  

Таким образом, подразумевается что первая часть (файл initrd) будет загружаться на PXE-клиенте по протоколу TFTP (с сервера WDS), а вторая часть (файл lib.squash) по протоколу HTTP (с веб-сервера IIS).

Получившиеся в процессе компиляции файлы initrd и vmlinuz мы скопируем на WDS сервер в ранее созданный нами каталог D:RemoteInstallImagesLinux (перезаписав возможно ранее размещённые там файлы от служебного образа Thinstation), а о файле lib.squash мы поговорим чуть позже, после настройки веб-сервера IIS.

Настройка веб-сервера IIS для поддержки Fast Boot

Так как на этапе сборки рабочего образа Thinstation мы включили опцию поддержки fastboot в build.conf, а в thinstation.conf.buildtime указали расположение веб-сервера Fast Boot, то теперь нам нужно разместить получившийся ранее Squash-файл на этом веб-сервере, чтобы в процессе загрузки основной «тяжёлой» части образа использовался не протокол TFTP а протокол HTTP. Это позволит ускорить время загрузки ОС тонкого клиента.

В нашем случае в качестве веб-сервера выступает IIS, который мы уже развернули ранее вместе с WDS, поэтому выполним его настройку, например через IIS Manager. Нам нужно сделать две вещи. Включить поддержку нового MIME-типа .squash и убедиться в том, что к сайту разрешён анонимный доступ.

В оснастке IIS Manager выберем сайт, в нашем случае это Default Web Site.

В настройках сайта выберем пункт MIME Types и используя в меню Actions ссылку Add добавим новый MIME-тип: filename extension = .squash , MIME type = application/octet-stream

Если не выполнить данную настройку, то наш веб-сервер IIS приходящим к нему PXE-клиентам попросту не будет отдавать squash-файл, а будет возвращать ошибку доступа.

Перейдём к разделу настроек сайта Authentication и убедимся в том, что включена анонимная аутентификация

Опять же, это нужно для того, чтобы приходящие PXE-клиенты без проблем могли скачать нужные им файлы.

***

Скопируем с DevStation появившийся после компиляции файл /thinstation/build/boot-images/pxe/boot/lib.squash в подкаталог ThinClients каталога, в котором размещена корневая папка сайта IIS (по умолчанию C:Inetpubwwwroot). Вспомним, что именно этот подкаталог веб-сервера мы указывали в параметре basepath в файле build.conf перед компиляцией рабочего образа Thinstation.

Использование разных сборок и конфигураций Thinstation

Есть разные походы к тому, каким образом можно настроить разный порядок загрузки «разношёрстных» тонких клиентов и выбор того или иного подхода зачастую зависит от исходных условий среды реализации. Исключительно оптимальных подходов, на мой взгляд здесь не существует, так как каждое решение имеет свои преимущества и недостатки. По имеющимся исходным условиям я выбрал вариант с выдачей PXE-клиентам загрузочных образов Thinstation (и конфигурационных файлов) в зависимости от их конкретных MAC-адресов. Поговорим о том, как реализовать подобную схему.

Мы помним, что для размещения файлов образа Thinstation initrd и vmlinuz на WDS мы использовали каталог D:RemoteInstallImagesLinux. В процессе загрузки PXE клиенты сначала скачивают файл D:RemoteInstallBootpxelinux.cfgdefault (на него ведут сим.линки из D:RemoteInstallBootx64pxelinux.cfg и D:RemoteInstallBootx86pxelinux.cfg), в котором указан путь к файлам initrd и vmlinuz. Этот файл мы создавали ранее на этапе настройки WDS.

Мы можем заставить отдельно-взятого тонкого клиента Thinstation вместо настроек, указанных в файле default использовать какие-то другие настройки порядка загрузки, например указав путь к другим файлам initrd и vmlinuz. Для этого в каталоге PXE-сервера D:RemoteInstallBootpxelinux.cfg можно создать файл, с содержанием аналогичным файлу default, но с именем в формате 01-<MAC>. Например, для клиента с MAC-адресом 00-15-5d-00-40-36 файл должен иметь имя 01-00-15-5d-00-40-36.

Содержимое файла может иметь следующие настройки:

DEFAULT RDP
PROMPT 0
NOESCAPE 1
ALLOWOPTIONS 0
LABEL RDP
MENU DEFAULT
KERNEL /Linux/HP-t610/vmlinuz
APPEND initrd=/Linux/HP-t610/initrd splash=silent,theme:default load_ramdisk=1 ramdisk_blocksize=4096 root=/dev/ram0 ramdisk_size=786432 loglevel=3 console=tty1 vt.global_cursor_default=0 LM=3 FASTBOOT_URL=http://10.1.4.10/ThinClients/HP-t610/

Как видно, в качестве пути к файлам initrd и vmlinuz, которые загружаются с нашего PXE-сервера по протоколу TFTP, здесь уже указаны пути отличные от тех, что могут быть указаны в файле D:RemoteInstallBootpxelinux.cfgdefault. То есть в каталоге, из которого PXE-сервер отдаёт клиентам загрузочные образы мы создали подкаталог /Linux/HP-t610/ (физический путь D:RemoteInstallImagesLinuxHP-t610) с файлами определённой сборки образа нашего клиента Thinstation.

Также можно обратить внимание на то, что строку инициализации initrd здесь мы дополняем параметром FASTBOOT_URL, который ссылается на веб-сервер, где у нас расположен squash-файл ассоциированный с initrd-файлом. Нетрудно догадаться, что на веб-сервере в каталоге /ThinClients/ у нас также создан подкаталог под конкретную сборку образа — /ThinClients/HP-t610/

Таким образом мы организовали возможность раздачи файлов загружаемого образа Thinstation в зависимости от MAC-адреса PXE-клиента.

***

Теперь вспомним, что по условиям нашей задачи требуется, чтобы каждый загруженный экземпляр Thinstation автоматически создавал RDP-сессию на RDS-сервере, где автоматически должно запускаться определённое бизнес-приложение. А подключение к RDS-серверу подразумевает передачу каких-то учётных данных, используемых на этом сервере. При этом, как мы понимаем, каждый тонкий клиент должен передавать уникальные учётные данные, чтобы иметь выделенную RDP-сессию на сервере. Получается, что у нас добавляется необходимость дополнительной уникальной для каждого клиента настройки ПО freerdp, запускаемого в среде Thinstation.

Реализовать это можно с помощью дополнительно загружаемых с веб-сервера файлов вида thinstation.conf.network и thinstation.conf-<MAC>. И не забываем про то, что в процессе сборки рабочего образа Thinstation мы настаивали файл thinstation.conf.buildtime, который попал в этот образ. Thinstation обрабатывает все эти thinstation.conf* файлы в следующем порядке (процитирую источник):

Первым применяется thinstation.conf.buildtime при начальной загрузке образа, затем происходит получение файла thinstation.conf.network, и далее индивидуальные файлы конфигурации.

Если значение переменной SESSION_0_TYPE=rdesktop в файле thinstation.conf.network, а в thinstation.conf-ИМЯ_КОМЬЮТЕРА уже SESSION_0_TYPE=freerdp, то в результате загрузится freerdp.

Получить общую информацию о том, какими вообще методами могут загружаться конфигурационные файлы Thinstation можно из документа Thinstation Wiki – Configuration. Как я уже сказал, мы будем использовать загрузку дополнительных конфигурационных файлов тонких Thinstation по протоколу HTP с веб-сервера IIS. Поэтому сначала создадим на нашем веб-сервере файл групповых настроек, затем файл персональных настроек тонкого клиента.

***

На веб-сервере (вспомним параметр baseurl из build.conf) в каталоге, где уже размещаются squash-файлы (вспомним параметр basepath из build.conf) создадим общий для всех клиентов конфигурационный файл thinstation.conf.network:

SESSION_0_AUTOSTART=ON
SESSION_0_TYPE=freerdp
SESSION_0_TITLE="RDP"
SESSION_0_FREERDP_SERVER="10.1.4.10"
RECONNECT_PROMPT=FORCE
NET_TIME_SERVER="10.1.4.10"
TIME_ZONE="Europe/Moscow"
CRON_JOB1="30 18 * * * /sbin/poweroff"

Этот файл будет содержать общие для всех клиентов параметры работы ОС Thinstation (запуск оболочки в опциях SESSION_0_*) и адрес RDS-сервера (SESSION_0_FREERDP_SERVER). Опция RECONNECT_PROMPT=FORCE, позволит автоматически выполнять переподключение к RDS-серверу в случае попыток завершения сессии и/или проблем с временной недоступностью сервера. Присутствующие здесь опции, связанные со временем и планировщиков задач рассмотрим далее. 

***

Теперь в этом же каталоге веб-сервера создадим файл индивидуальных настроек тонкого клиента с именем формата thinstation.conf-<MAC>. В нашем примере файл получится с именем thinstation.conf-00155D004036. В этом файле будут указаны опции подключения freerdp, касающиеся только этого конкретного тонкого клиента:

SESSION_0_FREERDP_OPTIONS="/u:'thinusr-00155d004036' /p:'rdpClPwd00155d004036' /bpp:32 /cert-ignore /sec:nla +fonts +aero"

Разумеется на RDS-сервере мы параллельно должны создать соответствующую учётную запись пользователя с указанным именем и паролем. Эта учётная запись будет ассоциироваться с данным тонким клиентом.

Кстати, информацию о допустимых опциях freerdp можно найти в документе: FreeRDP Wiki – CommandLineInterface.

В конечном итоге на веб-сервере мы получим примерно следующую картину:

***

Ещё раз напомню о том, чего не стоит упускать для успешной загрузки конфигурационных файлов Thinstation с веб-сервера.

Образ Thinstation должен быть собран со следующими параметрами:

  • В файле thinstation.conf.buildtime должны присутствовать директивы NET_FILE_ENABLED=On
    и NET_FILE_METHOD=wget
  • В файле build.conf должен быть указан пусть каталоге на веб-сервере, где искать файлы конфигурации в параметрах baseurl и basepath

Кроме этого, не стоит забывать про ограничения MIME-типов которые накладывает IIS. То есть нужно решить вопрос возможности загрузки файлов с именами формата thinstation.conf*

Для этого ранее описанным способом на веб-сервере IIS добавим MIME-типы .network и .conf-<MAC-клиента> (для всех допустимых MAC-адресов) с типом text/plain:

После этого убедимся в том, что через браузер мы можем без проблем скачать соответствующие файлы с веб-сервера по ссылкам типа:

  • http://10.1.4.10/ThinClients/thinstation.conf.network
  • http://10.1.4.10/ThinClients/thinstation.conf-00155D004036

Если заниматься настройкой MIME-типов в IIS под каждый MAC-адрес не очень хочется, то можно разрешить загрузку файлов с любым расширением для определённого каталога веб-сервера. Для того, чтобы это сделать воспользуемся рекомендацией из статьи KB326965 — IIS 6.0 does not serve unknown MIME types и добавим для соответствующего каталога IIS универсальную запись: * = application/octet-stream 

***

Теперь можно считать, что наш веб-сервер готов к раздаче PXE-клиентам разных сборок и конфигураций Thinstation.

Тестируем запуск тонкого клиента

Перед тем, как выполнять проверочный запуск тонкого клиента, ещё раз вспомним о том, какие файлы мы имеем для его автоматической загрузки и настройки, и где эти файлы расположены на нашем Windows-сервере управления:

  • После компиляции рабочего образа Thinstation мы имеем три файла, которые распределены на сервере следующим образом:
    • D:RemoteInstallImagesLinuxHP-t610vmlinuz
    • D:RemoteInstallImagesLinuxHP-t610initrd
    • C:inetpubwwwrootThinClientsHP-t610lib.squash
  • Файл настроек загрузки PXE-клиента:
    • D:RemoteInstallBootpxelinux.cfg1-00-15-5d-00-40-36
  • Конфигурационные файлы Thinstation:
    • C:inetpubwwwrootThinClientsthinstation.conf.network
    • C:inetpubwwwrootThinClientsthinstation.conf-00155D004036

При запуске клиент с PXE-сервера получит по TFTP файлы vmlinuz и initrd, указанные в pxelinux.cfg1-00-15-5d-00-40-36 и загрузит их в память тонкого клиента… 

…на следующем этапе (опять же согласно настроек pxelinux.cfg1-00-15-5d-00-40-36) с веб-сервера будет загружен файл lib.squash и произведено применение конфигурационных файлов thinstation.conf.network и thinstation.conf-00155D004036

На последней стадии загрузки, согласно условий нашей задачи, будет запущен RDP-клиент freerdp с автоматическим подключением к серверу RDS.

Если что-то «пошло не так», перепроверим все конфигурационные файлы и заглянем в раздел Поиск решений проблем (далее).

Загрузка с USB накопителя

В некоторых случаях может получиться так, что загрузка образа тонкого клиента по сети не самый лучший вариант, например, из-за слабеньких и неустойчивых каналов передачи данных между конечным тонким клиентом и PXE-сервером. В таком случае, в качестве исключения, можно воспользоваться загрузкой Thinstation с локального USB-накопителя, подключённого в порт тонкого клиента.

При каждой процедуре компиляции рабочего образа Thinstation, которую мы рассматривали ранее, помимо уже знакомых нам файлов initrd/vmlinuz/lib.squash, генерируется файл загрузочного ISO-образа:

/build/boot-images/iso/thinstation.iso

Однако, как я понял, если образ Thinstation был скомпилирован с параметром fastboot в build.conf, то он для локальной загрузки не подойдёт. Поэтому, для того, чтобы получить отдельно загружаемый (без проблем) с локального накопителя образ, нам потребуется скомпилировать его с выключенной опцией fastboot.

В некоторых источниках можно встретить рекомендации по специальной настройке thinstation.conf.buildtime в процессе подготовки к компиляции локально загружаемого образа. Однако я таких настроек не выполнял, и у меня загрузка тонкого клиента с локального USB-накопителя успешно прошла из образа по сути аналогичного, тому что я собирал для сетевой загрузки с единственным упомянутым исключением — выключенным fastboot.

Структура расположения файлов внутри получающегося при компиляции ISO-образа такова:

g:>tree /f

Структура папок тома THINSTATION
Серийный номер тома: 65F3-6981
G:.
│   syslinux.cfg
│
└───boot
    │   image.md5
    │   initrd
    │   vmlinuz
    │
    └───syslinux
            boot.cat
            isolinux.bin
            isolinux.cfg
            ldlinux.c32
            product.txt<pre>

То есть, мы видим, что нужные для загрузки системы файлы vmlinuz и initrd имеются в каталоге boot (lib.squash при этом не используется, так как образ собирался с выключенным fastboot). При этом конфигурационные файлы thinstation.conf.network и thinstation.conf-00155D004036, как и при сетевой загрузке с веб-сервера, что по прежнему нам даёт преимущества управления некоторыми параметрами конфигурации клиентов в централизованном месте.

Для записи загрузочного ISO-образа на USB-накопитель можно использовать, например, свободно распространяемую утилиту Rufus:

Работа тонких клиентов по расписанию

Как мы помним, согласно исходных условий, нам нужно решить вопрос автоматизации цикличной работы тонких клиентов. То есть утром каждого рабочего дня клиентов нужно автоматически включать, а вечером — автоматически выключать. Фактически эту задачу можно разложить на три составляющих момента:

  • Синхронизация времени на тонких клиентах
  • Включение клиентов по расписанию
  • Выключение клиентов по расписанию

***

Синхронизация времени нам нужна для того, чтобы исключить возможные курьёзы, связанные с работой тонких клиентов по расписанию. Согласитесь, будет неприятно, если клиент со сбившимся по какой-то причине временем, будет выключаться в середине рабочего дня, считая, что рабочий день кончился.

Учитывая изолированность наших тонких клиентов, единственным источником, с которым они могут синхронизировать время, является наш выделенный Windows-сервер. Давайте настроим службу времени на этом сервере.

Так как наш Windows-сервер является виртуальной машиной Hyper-V, то в первую очередь в свойствах этой виртуальной машины отключим функцию синхронизацию времени с хостом:

Для настройки службы времени «Windows Time» (w32time) будем использовать входящую в состав Windows Server утилиту w32tm, которая будет управлять значениями ключа реестра HKLMSystemCurrentControlSetServicesW32Time

Конфигурируем службу времени на синхронизацию с внешним NTP-сервером командой:

net stop w32time
w32tm /config /manualpeerlist:"10.10.0.2 10.11.0.3" /syncfromflags:MANUAL
net start w32time

Проверяем статус синхронизации командой:

w32tm /query /status

Для того, чтобы служба времени работала, не только как NTP-клиент, но и как NTP-сервер, нужна дополнительная правка реестра:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer]
"Enabled"=dword:00000001

После правки реестра отправляем службе NTP информацию об обновлении конфигурации (последняя команда покажет текущий статус конфигурации):

w32tm /config /update
w32tm /query /configuration

Учитывая то обстоятельство, что в в нашем случае Windows-сервер не является членом домена, у нас может возникнуть проблема с автоматическим запуском службы времени в процессе загрузки системы. Проблема эта известна давно и описана в статье KB2385818 — Windows Time service doesn’t start automatically on a workgroup computer that’s running Windows 7 or Windows Server 2008 R2. Суть проблемы в том, что служба времени имеет триггер, который выполняет запуск службы только в том случае если система является членом домена. Проверить это можно командой:

sc qtriggerinfo w32time

Для решения проблемы воспользуемся рекомендациями из вышеуказанной статьи и выберем один из предложенных методов – подмена триггера. Заменим для службы времени триггер проверки членства в домене на триггер проверки наличия сетевого подключения:

sc triggerinfo w32time start/networkon stop/networkoff

После перезапустим сервер и убедимся в том, что служба запускается автоматически без проблем.

Убедимся в том, что в системе висит UDP-прослушиватель на 123 порту:

C:>netstat -na | findstr 123

  UDP    0.0.0.0:123            *:*
  UDP    [::]:123               *:*

Создадим правило в Windows Firewall, разрешающее входящие подключения на порт NTP-сервера:

New-NetFirewallRule -DisplayName "NTP Server (UDP-In)" -Direction "Inbound" -Protocol "UDP" -Action "Allow" -LocalPort "123"

***

Теперь посмотрим на протокол NTP с точки зрения нашего тонкого клиента. Первое, о чём стоит заметить, это то, что для поддержки возможности синхронизации времени, образ Thinstation должен быть собран с включённым пакетом package ntp в build.conf (в приведённом ранее примере build.conf этот пакет включен).

Информацию о NTP-сервере, как источнике синхронизации времени можно указать в любом из thinstation.conf* файлов. Мне показалось более удобным указать эти опции в файле thinstation.conf.network, который лежит на веб-сервере и централизовано раздаётся всем тонким клиентам. Как минимум можно указать параметры (в приведённом ранее примере thinstation.conf.network эти параметры имеются):

NET_TIME_SERVER="10.1.4.10"
TIME_ZONE="Europe/Moscow"

Если эти условия соблюдены, то можно попробовать с загруженного тонкого клиента (а мы помним про то, что у нас есть возможность подключения к консоли клиента через Telnet) выполнить команду получения времени с нашего сервера времени:

ts_00155D004036:~# ntpdate 10.1.4.10
 9 Feb 16:52:23 ntpdate[4762]: step time server 10.1.4.10 offset 1.681994 sec

Как видим, ответ от NTP-сервера получен. В конфигурации по умолчанию NTP-клиент, встроенный в Thinstation, будет выполнять синхронизацию времени в начале каждого очередного часа.

***

Теперь поговорим об автоматизации выключения тонких клиентов по расписанию. Thinstation, как Linux-система, имеет на борту работающий планировщик cron. Конфигурационные файлы thinstation.conf* позволяют нам добавлять до 9 заданий в этот планировщик с помощью параметров CRON_JOB[1-9]. Пример добавления задачи на отключение тонкого клиента по расписанию — каждый день в 19:30:

CRON_JOB1 = "30 19 * * * /sbin/poweroff"

Опять же отмечу, что в приведённом ранее примере thinstation.conf.network эта задача cron была упомянута. В случае необходимости мы можем разным тонким клиентам аналогичным образом задавать уникальные параметры отключения, например, через файлы thinstation.conf-<MAC>.

Добавленное через конфигурационные файлы Thinstation задание cron в загруженном клиенте попадёт в файл /tmp/crontab

Кстати, здесь же можем увидеть и задания синхронизации времени (первое и второе задание). 

***

Задача автоматизации включения тонких клиентов по расписанию, как и прочие задачи, может иметь разные варианты реализации. Учитывая то, что в нашем случае все клиенты находятся в рамках одного физического сегмента сети, мы можем использовать функционал пробуждения клиентов по сети (Wake On Lan) по MAC-адресам.

Для этой цели я воспользовался ещё одной бесплатной утилитой командной строки для Windows: Wake On Lan Command Line

Синтаксис использования утилиты прост:

wolcmd [MAC-адрес] 255.255.255.255 255.255.255.255 7

То есть с помощью этой утилиты мы посылаем в сеть широковещательный запрос с указанием MAC-адреса интересующего нас клиента.

При этом замечено, что клиент будет реагировать на WoL-запрос, только в том случае, если в прошлый раз система была выключена штатно. Если же выключение произведено жёстко (например нажата кнопка питания с удержанием), то для последующего успешного запуска потребуется обесточить клиента (извлечь/вставить шнур питания).

В общем всё, что здесь остаётся сделать, это создать на нашем Windows-сервере управления командный файл с вызовом wolcmd и добавить его в планировщик заданий Windows на выполнение в нужное время, например, в 07:50 утра каждого рабочего дня недели. 

Поиск решений проблем

Если в процессе загрузки по сети возникают проблемы, например, когда останавливается и «замерзает» индикатор загрузки на сплэш-заставке, то может потребоваться получить доступ к расширенной информации о ходе загрузки. Для этого нужно изменить параметры вызова initrd в конфигурационном файле PXE-сервера. Например так выглядит ранее приведённый пример вызова initrd в штатной ситуации:

...
APPEND initrd=/Linux/HP-t610/initrd splash=silent,theme:default load_ramdisk=1 ramdisk_blocksize=4096 root=/dev/ram0 ramdisk_size=786432 loglevel=3 console=tty1 vt.global_cursor_default=0 LM=3 FASTBOOT_URL=http://10.1.4.10/ThinClients/HP-t610/

Чтобы отключить отображение сплэш-заставки, уберём параметр splash=silent,theme:default. Чтобы перенаправить вывод процесса загрузки на основную консоль, заменим console=tty1 на tty0. Дополнительно можно увеличить уровень логирования, например loglevel=32. В тоге получится примерно так: 

...
APPEND initrd=/Linux/HP-t610/initrd load_ramdisk=1 ramdisk_blocksize=4096 root=/dev/ram0 ramdisk_size=786432 loglevel=32 console=tty0 vt.global_cursor_default=0 LM=3 FASTBOOT_URL=http://10.1.4.10/ThinClients/HP-t610/

<

p align=»center»>***

Я на практике столкнулся с тем, что в загружаемой системе Thinstation сеть не успевает пройти полную инициализацию до того момента, как система пытается получить по HTTP squash-файл или файлы конфигурации. В итоге возникают ошибки типа «No lease, forking to background«, «Network is unreachable»  и т.п.

В таких случаях на этапе сборки образа можно покрутить параметры в thinstation.conf.buildtime, связанные с сетью (NET_*). А получить по ним информацию можно из файла thinstation.conf.sample. Например можно для начала задать увеличенные значения интервалов ожидания и таймаутов, как было показано на выше.

NET_DHCP_DELAY=60
NET_DHCP_TIMEOUT=60
NET_LINKWAIT=60

Можно попробовать использовать эти параметры как по отдельности так и комбинировать их вместе.

***

Если сразу строить описанный стенд от начала и до конца, то допустив где-нибудь по пути ошибку, можно потратить немало времени на излишний «разбор полётов». Поэтому лучше действовать поступательно, то есть, например, сначала добиться загрузки по сети без использования fastboot, а потом уже, если всё работает как следует, переходить к усложнению конфигурации. Дополнительно в поиске решений проблем может оказаться полезной статья Thinstation Wiki — Debugging 

Дополнительные источники информации:

  • Thinstation / maintained by Donald A. Cupp Jr.
  • Thinstation Wiki
  • Peter Hinchley — Use Thinstation to Build a Network-Bootable RDP-Enabled Thin Client Image
  • Блог QUADED — Сборка Thinstation образа
  • ITSave — Thinstation 5.x
  • Thinstation по русски
  • Thinstation Доработка тонкого клиента
  • PXE загрузка Thinstation в зависимости от железа тонкого клиента
  • Загрузка PXE для разных платформ тонких клиентов

Понравилась статья? Поделить с друзьями:
  • Подключение ограничено или отсутствует что делать windows xp
  • Подключение телефона к ноутбуку через wifi windows 10
  • Подключение ограничено или отсутствует windows xp как исправить локальная сеть
  • Подключение телефона к компьютеру для интернета windows 7
  • Подключение ограничено или отсутствует windows xp как исправить вай фай