Продолжаем наше увлекательное погружение в операционную систему OpenVMS. В первой части мы установили её внутри виртуальной машины VirtualBox и освоили процесс подключения через Telnet-клиент. Теперь пришла пора активировать первую лицензию на сеть, установить OpenSSH и затем активировать все остальные лицензии. Без долгих вступлений — приступим.
Особенности лицензирования
OpenVMS, несмотря на приставку Open, имеет все черты строго коммерческого продукта. На каждый отдельный функционал операционной системы необходимо получать отдельную лицензию.
Open означает не операционную систему с открытым исходным кодом, а соответствие определению открытых систем. Такое определение было сформулировано Институтом инженеров по электронике и радиотехнике (IEEE). Открытая система должна обладать:
переносимостью — приложение можно перенести с одной платформы на другую
средствами взаимодействия — системы разных вендоров могут работать совместно, приложения можно интегрировать
обеспечивать мобильность пользователей — переход с одной платформы на другую должен быть безболезненным для пользователей
В предыдущей статье мы упоминали файл X86COMMUNITYPAK. Это архив с текстовым файлом, содержащим хоббийную лицензию, выдаваемую сроком на год. В нашем случае лицензия будет действительна до 1 апреля 2024 года. Фактически это скрипт, содержащий последовательно выполняемые команды. Если поменять его расширение на .COM или просто поставить знак @ перед именем, то он выполнится в виде скрипта. Проблема лишь в том, что этот файл надо доставить на целевую систему. А без сети это сделать трудно.
Активация лицензии на сеть
План действий: заставить заработать стек TCP/IP, затем для удобства запустить демона OpenSSH и через SFTP запихнуть файл с лицензией на целевую систему. Так что распаковываем архив X86COMMUNITYPAK и открываем файл X86Community-20240401.txt через Visual Studio Code или любой другой текстовый редактор. Нас интересует следующая строка:
$ SHOW LICENSE OPENVMS-X86-BOE/PRODUCER=VSI/SINCE/NOOUTPUT/TERMINATION_DATE=1-APR-2024
Начинаем вводить команды в терминале по одной, начиная с:
LICENSE REGISTER OPENVMS-X86-BOE -
Для регистрации одной лицензии надо указать следующие данные в виде /КЛЮЧ=ЗНАЧЕНИЕ - :
/ISSUER=
/AUTHORIZATION=
/PRODUCER=
/UNITS=
/TERMINATION_DATE=
/OPTIONS=
/CHECKSUM=
Исходя из этого можно предположить, что:
механизм активации лицензий пригоден не только для самой VSI, но и для сторонних производителей ПО
поля /PRODUCER и /ISSUER в нашем случае заполняются одинаково — VSI. Вероятно, что в качестве /PRODUCER выступает производитель приложения, а /ISSUER может быть как производитель, так и дистрибьютор. Поэтому предусмотрено два поля, а не одно
если покопаться на просторах файлообменных сетей, то можно обнаружить условно «бессрочные» пиратские лицензии с /TERMINATION_DATE=18-DEC-2099. Было бы интересно узнать, предельное ли это значение
ключ /OPTIONS может содержать всякую всячину — от указания на архитектуру до специфических значений вроде MOD_UNITS. Это означает, что количество лицензий, указанных в /UNITS, можно увеличить
Это были мысли вслух, а теперь продолжаем процедуру. После ввода всех значений лицензия не активируется автоматически. Так что потребуется ещё одна команда:
LICENSE LOAD OPENVMS-X86-BOE
Вывод выглядит следующим образом:
%LICENSE-I-LOADED, VSI OPENVMS-X86-BOE was successfully loaded with 6 units
OpenVMS в своём командном языке (DCL) поддерживает удобное сокращение команд до четырёх и менее символов. Так, SHOW LICENSE легко превращается в SH LIC. А для отрицания параметра или квалификатора нужно использовать ключевое слово NO. Например, PRINT/NOCONFIRM.
Можно сделать предположение, что DCL сильно повлиял на развитие CLI в Cisco IOS. Вспомним о командах sh run, conf t и no shut для show running-config, configure terminal и no shutdown соответственно. Да и сообщения об ошибках выглядят так же.
Давайте воспользуемся вышеуказанной командой и посмотрим, что лицензия успешно работает в системе:
$ SH LIC
Active licenses on node VMS1:
------- Product ID -------- ---- Rating ----- -- Version --
Product Producer Units PCL Activ Version Release Termination
OPENVMS-X86-BOE VSI 6 1 0 0.0 (none) 1-APR-2024
Как видим, всё успешно. Пора заняться сетью.
Настройка сети
В руководстве по установке сказано, что надо использовать тип сетевого адаптера Виртуальный адаптер хоста и эмуляцию адаптера Intel PRO/1000 MT Server. Но на практике отлично заработало и с обычным сетевым мостом на физическую сетевую карту. В нашем случае параметры сети в VirtualBox выглядят так:
Пора сконфигурировать сеть. Вызовем соответствующую утилиту:
@TCPIP$CONFIG
Откроется интерактивное текстовое меню:
TCP/IP Network Configuration Procedure
This procedure helps you define the parameters required
to run VSI TCP/IP Services for OpenVMS on this system.
Checking TCP/IP Services for OpenVMS configuration database files.
VSI TCP/IP Services for OpenVMS Configuration Menu
Configuration options:
1 - Core environment
2 - Client components
3 - Server components
4 - Optional components
5 - Shutdown VSI TCP/IP Services for OpenVMS
6 - Startup VSI TCP/IP Services for OpenVMS
7 - Run tests
A - Configure options 1 - 4
[E] - Exit configuration procedure
Процедура настройки разбита на 4 шага, каждый из которых можно выполнить отдельно. Поскольку у нас первоначальная настройка, то нажимаем клавишу А. Это последовательно проведёт нас по всем шагам. Домен указываем любой, и это вернёт нас в меню Core environment.
Нажимаем цифру 2 и попадаем в раздел Interfaces:
VSI TCP/IP Services for OpenVMS Interface & Address Configuration Menu
Hostname Details: Configured=Not Configured, Active=VMS1
Configuration options:
0 - Set The Target Node (Current Node: VMS1)
1 - IE0 Menu (EIA0: TwistedPair 1000mbps)
Здесь в пункте 1 должен отобразиться доступный сетевой интерфейс и его скорость. Нажимаем соответствующую клавишу и, следуя подсказкам системы, задаём primary address:
VSI TCP/IP Services for OpenVMS Interface IE0 Configuration Menu (Node: VMS1)
Configuration options:
1 - Add a primary address on IE0
2 - Add an alias address on IE0
3 - Enable DHCP client to manage address on IE0
В нашем случае интерфейс подключён к роутеру Mikrotik, выступающему в роли DHCP-сервера. Нажимаем клавишу 3.
No interface is configured as the DHCP PRIMARY.
Either configure a DHCP PRIMARY or manually configure
the system-wide parameters.
DHCP Client configures system-wide parameters and
interface-specific parameters. Only one interface, the
DHCP "primary" interface, can receive system-wide
parameters.
Configure IE0 as the DHCP PRIMARY? (Y,N,HELP) [Y]:
Соглашаемся, нажав Y. Это активирует DHCP-клиент на интерфейсе. Теперь надо прописать основной шлюз. Нажимаем E для выхода в меню Interfaces и далее 3 для входа в меню Routing. Нас встретит традиционный для этих систем вопрос: курица или рыба:
* Do you want to configure dynamic ROUTED or GATED routing [NO]:
В квадратных скобках есть более интересный вариант — пропустить этот выбор. Так и сделаем, нажав Enter. А вот на следующий вопрос стоит дать положительный ответ:
* Do you want to configure a default route [YES]:
Просто нажимаем Enter, вводим адрес шлюза по умолчанию. У нас это 192.168.88.1. Система ругнётся на то, что этого адреса нет в её локальной базе данных, и попросит обозвать как-нибудь роутер. Вводим любое имя, например mikrotik.
И вновь мы провалились в меню Core environment. Осталось задать резолвер доменных имён, так что нажимаем цифру 4:
BIND RESOLVER Configuration
A BIND resolver has not been configured.
VSI TCP/IP Services for OpenVMS supports the Berkeley Internet Name
Domain (BIND) resolver. BIND is a network service that enables clients
to name resources or objects and share information with other objects
on the network.
Before configuring your system as a BIND resolver, you should
first be sure that there is at least one system on the network
configured as either a BIND primary or secondary server for
this domain.
You can specify a BIND server by its address or name;
however, if specified by name, an entry for it must
exist in the TCPIP$HOST database.
You will be asked one question for each server.
Press Return at the prompt to terminate the list.
Enter your BIND server name:
Вводим IP-адрес резолвера. У нас он совпадает с основным шлюзом, то есть 192.168.88.1. Система спросит, какой сервер опрашивать следующим. Просто пропускаем этот вопрос, нажав Enter.
Возвращаемся в главное меню утилиты конфигурирования с помощью клавиши E и запускаем сеть, нажав 6. Вывод будет примерно таким:
%TCPIP-I-FSIPADDRUP, IE0 192.168.88.29 primary active on node VMS1, interface IE0
Это говорит о том, что сеть поднялась и роутер с лёгкой руки отсыпал адрес 192.168.88.29. Нажимаем Enter и выходим из утилиты конфигурирования. Может показаться, что на этом всё, но не тут-то было. Если виртуальную машину перезагрузить, то сеть пропадёт. Чтобы добавить сеть в автозапуск, надо отредактировать файл SYS$COMMON:[SYSMGR]SYSTARTUP_VMS.COM, найти и раскомментировать следующую строку:
$!$ @SYS$STARTUP:TCPIP$STARTUP.COM
В состав OpenVMS входит редактор EDIT. Давайте откроем наш конфигурационный файл автозагрузки:
EDIT /EDT SYS$COMMON:[SYSMGR]SYSTARTUP_VMS.COM
Он может работать в двух режимах: построчное редактирование и привычный нам визуальный режим. По умолчанию включён первый режим, и надо выполнить переключение. Вводим команду CHANGE после символа * и подтверждаем клавишей Enter. Откроется содержимое файла, перемещаться по которому можно с помощью стрелок на клавиатуре. Пролистываем вниз, находим искомую строку и приводим её к виду:
$ @SYS$STARTUP:TCPIP$STARTUP.COM
Выходим из визуального режима сочетанием клавиш Ctrl + Z и вводим команду выхода EXIT после символа *. Файл при этом сохранится.
Файлы в OpenVMS ведут себя слегка необычно. У них по умолчанию включено версионирование. Так что когда мы отредактировали SYSTARTUP_VMS.COM, то на деле мы считали файл SYSTARTUP_VMS.COM;1. Цифра после точки с запятой как раз обозначает версию. После внесения изменений мы закрыли редактор, но это не заменило содержимое файла, а создало новую его версию SYSTARTUP_VMS.COM:2.
Это кажется странным ровно до того момента, пока мы не вспомним про устройства хранения данных в те годы, когда создавалась OpenVMS. Данные хранились на магнитных лентах. Было гораздо проще и быстрее записать новую версию файла, чем отматывать ленту, позиционироваться, стирать данные и заново их записывать.
Итак, раз уж сеть настроена, то перезагрузимся командой REBOOT и пропингуем какой-нибудь внешний ресурс, например DNS Cloudflare. Вначале выполняем команду TCPIP и пишем привычную команду PING 1.1.1.1:
TCPIP> PING 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: icmp_seq=0 ttl=59 time=10 ms
64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=10 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=59 time=10 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=59 time=10 ms
----1.1.1.1 PING Statistics----
4 packets transmitted, 4 packets received, 0% packet loss
round-trip (ms) min/avg/max = 10/10/10 ms
Снаружи наш сервер теперь тоже пингуется:
PS C:\Users\User> ping 192.168.88.29
Обмен пакетами с 192.168.88.29 по с 32 байтами данных:
Ответ от 192.168.88.29: число байт=32 время<1мс TTL=64
Ответ от 192.168.88.29: число байт=32 время<1мс TTL=64
Ответ от 192.168.88.29: число байт=32 время<1мс TTL=64
Ответ от 192.168.88.29: число байт=32 время<1мс TTL=64
Статистика Ping для 192.168.88.29:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приёма-передачи в мс:
Минимальное = 0 мс, Максимальное = 0 мс, Среднее = 0 мс
Итак, сеть успешно настроена. Переходим к настройке SSH.
Настройка OpenSSH
OpenVMS 9.2.1 по умолчанию устанавливает OpenSSH в процессе инсталляции. Но без дополнительной настройки демон работать не будет. Она начнётся с создания двух служебных пользователей и присвоения им дефолтной группы:
@SYS$COMMON:[OPENSSH.BIN]SSH$CREATE_ACCOUNT.COM
Система спросит номер группы и автоматически предложит значение 3656. Соглашаемся, нажав Enter. Теперь надо сгенерировать файл, который будет отвечать за автозапуск демона:
@SYS$COMMON:[OPENSSH.BIN]SSH$CREATE_STARTUP_FILE.COM
Система сделает все необходимые действия автоматически. Теперь генерируем ключики:
@SYS$COMMON:[OPENSSH.BIN]SSH$GENERATE_KEYS.COM
Очищаем всё лишнее:
@SYS$COMMON:[OPENSSH.BIN]SSH$INSTALL_INFO.COM
Получаем сообщение об успешном завершении очистки и готовности к работе:
Purging installed files...
Successfully finished
To automatically start OpenVMS OpenSSH during system startup
add the following line to the file SYS$MANAGER:SYSTARTUP_VMS.COM
after the TCPIP startup command procedure:
$ @SYS$STARTUP:SSH$STARTUP.COM
Define symbols for all OpenSSH utilities:
$ @SSH$ROOT:[BIN]SSH$DEFINE_COMMANDS.COM
Точно так же, как и с сетью, надо добавить демона в автозагрузку:
EDIT /EDT SYS$COMMON:[SYSMGR]SYSTARTUP_VMS.COM
Переходим в визуальный режим (CHANGE) и ищем введённую ранее строку $ @SYS$STARTUP:TCPIP$STARTUP.COM. Вводим после неё следующие две строки:
$ @SYS$STARTUP:SSH$STARTUP.COM
$ @SSH$ROOT:[BIN]SSH$DEFINE_COMMANDS.COM ALL
Первая отвечает за автозапуск демона OpenSSH, а вторая позволит нам использовать удобные алиасы в оболочке. Выходим из визуального режима Ctrl + Z и закрываем редактор EXIT. Система подтвердит, что записала уже третью версию файла.
SYS$COMMON:[SYSMGR]SYSTARTUP_VMS.COM;3 418 lines
Перезагружаемся и коннектимся к системе через любимый SSH-клиент, например PuTTY:
Last interactive login on Sunday, 13-AUG-2023 20:48:49.91
Last non-interactive login on Monday, 31-JUL-2023 19:54:34.95
$ sh sys
OpenVMS E9.2-1 on node VMS1 13-AUG-2023 21:16:35.22 Uptime 0 00:35:00
Pid Process Name State Pri I/O CPU Page flts Pages
00000401 SWAPPER HIB 16 0 0 00:00:00.03 0 17
00000404 LANACP HIB 14 61 0 00:00:00.03 217 269
Выглядит замечательно. Пришла пора нажать на газ и активировать все доступные нам лицензии.
Активация оставшихся лицензий
Теперь, когда у нас есть доступ по сети и OpenSSH, мы можем воспользоваться SCP для копирования файлов с локальной машины. Правда, это применимо исключительно для машин с Linux. Ну а любителям Windows ничего не остаётся, кроме как применить какой-нибудь SFTP-клиент. Берём FileZilla и вводим следующие данные:
Host — 192.168.88.29 (у вас адрес может быть другим)
Username — SYSTEM
Password — <ВАШ_ПАРОЛЬ>
Port — 22
Нажимаем Quickconnect — и вуаля: содержимое виртуальной машины с OpenVMS отобразится в правой панели. Простым перетаскиванием закидываем файл с лицензией X86Community-20240401.txt на сервер:
OpenVMS умеет любой текстовый файл выполнять в качестве скрипта. Задаём команду в консоли:
@X86Community-20240401.txt
Магия сработала — и все лицензии успешно активировались:
$ SH LIC
Active licenses on node VMS1:
------- Product ID -------- ---- Rating ----- -- Version --
Product Producer Units PCL Activ Version Release Termination
ABS-CLIENT-X86 VSI 6 1 0 0.0 (none) 1-APR-2024
ABS-SERVER-X86 VSI 6 1 0 0.0 (none) 1-APR-2024
ACMS VSI 6 1 0 0.0 (none) 1-APR-2024
ACMS-REM VSI 6 1 0 0.0 (none) 1-APR-2024
ACMS-RT VSI 6 1 0 0.0 (none) 1-APR-2024
AVAIL-MAN VSI 6 1 0 0.0 (none) 1-APR-2024
BASIC VSI 6 0 1 0.0 (none) 1-APR-2024
C VSI 6 0 1 0.0 (none) 1-APR-2024
CARTRIDGE-SERVER-V VSI 6 1 0 0.0 (none) 1-APR-2024
CMS VSI 6 1 0 0.0 (none) 1-APR-2024
COBOL VSI 6 0 1 0.0 (none) 1-APR-2024
CXX-V VSI 6 0 1 0.0 (none) 1-APR-2024
DFG VSI 6 1 0 0.0 (none) 1-APR-2024
DFS VSI 6 1 0 0.0 (none) 1-APR-2024
DQS VSI 6 1 0 0.0 (none) 1-APR-2024
DTM VSI 6 1 0 0.0 (none) 1-APR-2024
DTR VSI 6 1 0 0.0 (none) 1-APR-2024
DVNETEXT VSI 6 1 0 0.0 (none) 1-APR-2024
FMS VSI 6 1 0 0.0 (none) 1-APR-2024
FMS-RT VSI 6 1 0 0.0 (none) 1-APR-2024
FORMS VSI 6 1 0 0.0 (none) 1-APR-2024
FORMS-RT VSI 6 1 0 0.0 (none) 1-APR-2024
FORTRAN VSI 6 0 1 0.0 (none) 1-APR-2024
GKS VSI 6 1 0 0.0 (none) 1-APR-2024
GKS-RT VSI 6 1 0 0.0 (none) 1-APR-2024
LSE VSI 6 1 0 0.0 (none) 1-APR-2024
MMS VSI 6 1 0 0.0 (none) 1-APR-2024
OMNI VSI 6 1 0 0.0 (none) 1-APR-2024
OPENVMS-X86-BOE VSI 6 1 0 0.0 (none) 1-APR-2024
OPENVMS-X86-HAOE VSI 6 1 0 0.0 (none) 1-APR-2024
OSAP VSI 6 1 0 0.0 (none) 1-APR-2024
PASCAL VSI 6 0 1 0.0 (none) 1-APR-2024
PCA VSI 6 1 0 0.0 (none) 1-APR-2024
RMSJNL VSI 6 1 0 0.0 (none) 1-APR-2024
RTR-CL VSI 6 1 0 0.0 (none) 1-APR-2024
RTR-SVR VSI 6 1 0 0.0 (none) 1-APR-2024
SAVE-SET-MANAGER VSI 6 1 0 0.0 (none) 1-APR-2024
SW-RAID5 VSI 6 1 0 0.0 (none) 1-APR-2024
TDMS VSI 6 1 0 0.0 (none) 1-APR-2024
TDMS-RT VSI 6 1 0 0.0 (none) 1-APR-2024
VAXSET VSI 6 1 0 0.0 (none) 1-APR-2024
VMSCLUSTER VSI 6 1 0 0.0 (none) 1-APR-2024
VMSCLUSTER-CLIENT VSI 6 1 0 0.0 (none) 1-APR-2024
VOLSHAD VSI 6 1 0 0.0 (none) 1-APR-2024
X25 VSI 6 1 0 0.0 (none) 1-APR-2024
Заключение
Поздравляем! Теперь наша система полностью активирована и готова к работе. Для удобного управления у нас есть OpenSSH, а обмениваться файлами можно через FileZilla. Но это лишь начало пути. В следующей статье мы настроим веб-морду и попробуем запустить какое-нибудь кастомное приложение.
Ну а если вы ещё не видели первую часть этой статьи, то она доступна по ссылке: OpenVMS: операционная система для атомных станций (часть 1). Установка и первые опыты.
Комментарии (13)
outlingo
14.08.2023 14:12+2Не знаю почему, но это очень напоминает незабвенный пост Бармина про установку SCO Unix
ereinion
14.08.2023 14:12+5А мы тут Чпуксами балуемся)
sparhawk
14.08.2023 14:12Но это же UNIX, наверное? И это прод?
ereinion
14.08.2023 14:12+1Это HP-UX (чпукс), один из классических юниксов, и это, конечно, уже давно не прод. Просто чудом оживленная машинка с наличествующим на ней софтом. Важно другое - связь истории HP-UX, Tru64 Unix и OpenVMS с судьбой DEC, Compaq и HP...
FlashHaos
14.08.2023 14:12+2В Сбербанке несколько лет назад лично запрашивал вывод из промышленной эксплуатации одного из последних продуктивных HPUX, на котором работал управляющий сервер системы резервного копирования Data Protector (система родом тоже из предыдущих эпох, но, в отличие от чпуникса, еще кое-как пытается развиваться; хотя HP от нее давно избавилась вместе с остальным своим софтом и судьба у этого прекрасного инструмента незавидная). Было немного грустно, у этой операционки была заслуженная репутация неубиваемой и работающей без фокусов, в отличие от солярки и аикса (молчу про линукс). Возможно, это ошибка восприятия, ведь ничего реально нагруженного и часто обновляемого на итаниумах давно не работало, в отличие от остальных систем.
Там еще админы были суровые и слабины не давали. Шелл только базовый без всяких вам этих башей, никакого vim и только vi - все серьезно и с высоким порогом вхождения для юзера. Зато надежно и приучало к написанию максимально дубовых скриптов, готовых к работе на любом шелле.
Это я к тому, что не так давно это было совсем рядом. Патчи, кстати, регулярно выходят. В мае последний был.
FlashHaos
14.08.2023 14:12+2Автор! Очень прошу, если возможно, написать статью обзорно-исторического вида для чайников из следующего поколения. Ведь так и не до конца ясно, зачем этот мастодонт существует и какое применение находит. Википедия говорит «оборона и высоконагруженные системы», но что именно? И какие альтернативы?
strvv
14.08.2023 14:12+1была такая компания, Digital Equipment Corporation, одна из основателей этого вашего IT (сарказм). были, конечно тараканы, но в целом, она была как первопроходец и создатель академически правильных архитектур, в частности можно посмотреть cisc 16 битную pdp-11, предок 32 битного vax-11 и вторая как-бы предок одной из первых высокопроизводительных 64 битных RISC архитектур Alpha AXP. каждая из этих архитектур существовала десятилетиями.
с такой же основательностью был подход и к разработке софта, поэтому явных ошибок в их софте не находилось, поэтому их и использовали в оборонно-промышленном комплексе, вояки, космос и банки.
такие дела.
alex-open-plc
14.08.2023 14:12+1
Yuriy_krd
Эм, шта? VS Code — уже стал текстовым редактором ?) Ребята, у вас интересный юмор )