Продолжаем наше увлекательное погружение в операционную систему 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)


  1. Yuriy_krd
    14.08.2023 14:12
    -4

    открываем файл X86Community-20240401.txt через Visual Studio Code или любой другой текстовый редактор.

    Эм, шта? VS Code — уже стал текстовым редактором ?) Ребята, у вас интересный юмор )


  1. outlingo
    14.08.2023 14:12
    +2

    Не знаю почему, но это очень напоминает незабвенный пост Бармина про установку SCO Unix


  1. ereinion
    14.08.2023 14:12
    +5

    А мы тут Чпуксами балуемся)


    1. sparhawk
      14.08.2023 14:12

      Но это же UNIX, наверное? И это прод?


      1. ereinion
        14.08.2023 14:12
        +1

        Это HP-UX (чпукс), один из классических юниксов, и это, конечно, уже давно не прод. Просто чудом оживленная машинка с наличествующим на ней софтом. Важно другое - связь истории HP-UX, Tru64 Unix и OpenVMS с судьбой DEC, Compaq и HP...


        1. strvv
          14.08.2023 14:12
          +1

          И они быстро, последовательно в 00-10е года чпокнулись.
          Тру64 это тоже дек. Имхо.


          1. ereinion
            14.08.2023 14:12

            Да, именно так. Tru64 у меня на Альфе сохранился, приятный, но беда как и со всеми - минимум софта. Но туда хотя бы опенсорса много затащили.


        1. FlashHaos
          14.08.2023 14:12
          +2

          В Сбербанке несколько лет назад лично запрашивал вывод из промышленной эксплуатации одного из последних продуктивных HPUX, на котором работал управляющий сервер системы резервного копирования Data Protector (система родом тоже из предыдущих эпох, но, в отличие от чпуникса, еще кое-как пытается развиваться; хотя HP от нее давно избавилась вместе с остальным своим софтом и судьба у этого прекрасного инструмента незавидная). Было немного грустно, у этой операционки была заслуженная репутация неубиваемой и работающей без фокусов, в отличие от солярки и аикса (молчу про линукс). Возможно, это ошибка восприятия, ведь ничего реально нагруженного и часто обновляемого на итаниумах давно не работало, в отличие от остальных систем.

          Там еще админы были суровые и слабины не давали. Шелл только базовый без всяких вам этих башей, никакого vim и только vi - все серьезно и с высоким порогом вхождения для юзера. Зато надежно и приучало к написанию максимально дубовых скриптов, готовых к работе на любом шелле.

          Это я к тому, что не так давно это было совсем рядом. Патчи, кстати, регулярно выходят. В мае последний был.


  1. FlashHaos
    14.08.2023 14:12
    +2

    Автор! Очень прошу, если возможно, написать статью обзорно-исторического вида для чайников из следующего поколения. Ведь так и не до конца ясно, зачем этот мастодонт существует и какое применение находит. Википедия говорит «оборона и высоконагруженные системы», но что именно? И какие альтернативы?


    1. strvv
      14.08.2023 14:12
      +1

      была такая компания, Digital Equipment Corporation, одна из основателей этого вашего IT (сарказм). были, конечно тараканы, но в целом, она была как первопроходец и создатель академически правильных архитектур, в частности можно посмотреть cisc 16 битную pdp-11, предок 32 битного vax-11 и вторая как-бы предок одной из первых высокопроизводительных 64 битных RISC архитектур Alpha AXP. каждая из этих архитектур существовала десятилетиями.
      с такой же основательностью был подход и к разработке софта, поэтому явных ошибок в их софте не находилось, поэтому их и использовали в оборонно-промышленном комплексе, вояки, космос и банки.
      такие дела.



  1. BjLomax
    14.08.2023 14:12
    +1

    а где ссылка на торрент? :)


  1. magiavr
    14.08.2023 14:12

    Это точно ОС не для Российских АЭС. Росатом юзает Астру.