Есть в мире вещи, про которые говорят, что они сделаны на века. Проходят десятилетия, а они просто продолжают работать как ни в чём не бывало. Сегодня мы погрузимся в историю и расскажем про операционную систему OpenVMS, разработанную почти полвека назад в недрах Digital Equipment Corporation (DEC) для семейства компьютеров VAX.

Предыстория

Весной 2023 года на OpenNET вышла интересная новость — энтузиастам предоставлен доступ к редакции ОС OpenVMS 9.2 для архитектуры x86-64. Казалось бы, ничего особенного, но на самом деле эта ОС весьма интересна. Начну с того, что впервые она была представлена в 1977 году и до сих пор применяется в отказоустойчивых системах. Любопытство вызывает и то, что выпущенный образ должен спокойно заработать в качестве виртуальной машины для гипервизоров VirtualBox, KVM и VMware. 

Разумеется, такую штуку захотелось самостоятельно протестировать на тестовом ноутбуке. Доступ к образам выдаётся только после одобрения заявки. Форма была должным образом заполнена и отправлена. Увы, но спустя несколько дней пришёл отказ:

На этом история имела все шансы завершиться, не успев начаться. Ситуацию спасло то, что автор живёт в одной из стран Евросоюза. При общении с любыми госорганами и банками принято в качестве подтверждения адреса присылать счета за оплату коммунальных услуг. Так что в VMS Software полетело письмо с несколькими счетами за электроэнергию, интернет и услуги мобильной связи.

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

Установка в VirtualBox

Дистрибутив операционной системы, файл лицензии и дополнительный софт размещается на портале VSI Service Platform. Переходим в раздел Packages и находим следующие файлы:

X860921OE — ZIP-архив с дистрибутивом в формате ISO

X86COMMUNITYPAK — ZIP-архив с лицензией в формате TXT

Предполагается, что на вашем компьютере есть установленный гипервизор Oracle VirtualBox с плагином Oracle VM VirtualBox Extension Pack. Все действия далее выполнялись на VirtualBox версии 7.0.10.

Создаём виртуальную машину со следующими параметрами:

  • тип — Other (Unknown 64-bit)

  • основная память — 8 192 Мб (или более)

  • процессоры — 2 (или более)

  • включить EFI

  • жёсткий диск — 15 Гб (или более)

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

  • [Система] Чипсет — ICH9

  • [Система] Включить I/O APIC

  • [Носители] Удалить Контроллер IDE

  • [Носители] Добавить Контроллер AHCI Тип AHCI

  • [Носители] Добавить виртуальный жёсткий диск, созданный ранее

  • [Носители] Создать и добавить ещё один виртуальный жёсткий диск под sysdump.dmp

  • [Аудио] Убрать галочку «Включить аудио»

  • [Cеть] Тип подключения — Виртуальный адаптер хоста

  • [Cеть] Дополнительно — Intel PRO/1000 MT Desktop

  • [COM-порты] Порт 1 — Включить последовательный порт

  • [COM-порты] Порт 1 — Убрать галочку «Подключаться к существующему сокету/порту»

  • [COM-порты] Порт 1 — Режим порта TCP

  • [COM-порты] Порт 1 — Путь/адрес 1111

Запуск установки

Перед тем как приступать к установке, надо отключить механизм безопасной загрузки Secure Boot. Это делается в прошивке EFI, для чего сразу после запуска выбираем раздел Device ManagerSecure Boot Configuration. Убираем крестик с пункта Attempt Secure Boot. Дважды нажимаем ESC, выбираем пункт Reset и подтверждаем с помощью Enter. Это действие отключит Secure Boot.

Теперь из главного меню выбираем Boot ManagerEFI Internal Shell. В загруженной оболочке вводим FS0:\efi\vms\vms_bootmgr:

Полученный загрузочный экран достаточно информативен. OpenVMS использует собственную нумерацию дисковых устройств, отличную от той, которую мы привыкли видеть. Система подсказывает нам, что смонтированный ISO-образ определился как DKA100. Теперь нужно загрузиться с него, введя BOOT и подтвердив нажатием Enter. Это будет равносильно команде BOOT DKA100 0 00000000.

Начнётся процесс загрузки OpenVMS Installation Kit. После того как показатель загрузки достигнет 100%, графический вывод будет отключён в целях безопасности. Дальнейшую установку нужно выполнять в текстовой консоли, подключившись к COM-порту через Telnet.

Подключение к консоли

Старые технологии хороши тем, что для них придумали и создали множество реализаций клиентов. Протоколу Telnet уже 40 лет, и клиентов для него хоть отбавляй. Мы решили отправиться в прошлое и выполнить аутентичное подключение из OS/2 Warp 4. В состав этой операционной системы входил отличный клиент TelnetPM. Перед подключением проверяем параметры в меню Options:

  1. Убираем параметр Local echo

  2. Carriage return — выбираем Carriage return only

Если проигнорировать первый пункт, то все данные, введённые вами в консоли, будут задваиваться. Второй пункт более важен, поскольку на этапе ввода пароля системного пользователя после нажатия Enter (Return) будет автоматически посылаться непечатный символ протяжки (line feed). Система не может его распознать и выдаст ошибку, что вы использовали некорректный символ.

В очень старых компьютерах устройством ввода служила электрическая печатная машинка. В неё вставляли не отдельный лист бумаги, а целый рулон. Всё, что вы вводили, одновременно отпечатывалось на бумаге и отправлялось в ЭВМ. Нажатие Return возвращало каретку ввода к началу той же самой строки. Для начала следующей строки требовалось протянуть рулон бумаги. Именно это и пытается эмулировать TelnetPM.

Подключаемся и запускаем установку:

Также можно подключиться, используя PuTTY. Там предварительно надо проверить настройки в разделе Terminal:

  1. Отключить Implicit CR in every LF

  2. Отключить Implicit LF in every CR

  3. Переключатель Local echo выставить Force off

  4. Переключатель Local line editing выставить Force off

Установка

Как только загрузилось меню:

  1. Выбираем пункт 1 (Upgrade, install or reconfigure OpenVMS X86-64 Version E9.2-1).

  2. Система спросит, является наша установка новой или существующей (INITIALIZE или PRESERVE). Поскольку это новая установка, вводим INITIALIZE. Регистр не имеет значения.

  3. Теперь пора выбрать, на какой диск производить установку. Чтобы ничего не перепутать, вначале запросим список доступных дисков, введя знак вопроса ?. В полученной таблице находим диск, обозначенный VBOX, и вводим его имя — в нашем случае DKA0.

  4. Метку диска можно оставить по умолчанию, то есть X86SYS. Просто нажимаем Enter.

  5. Девятая версия OpenVMS требует, чтобы в качестве файловой системы использовалась ODS-5. Это пятая версия ФС семейства Files-11. Поскольку у ODS-5 опционально поддерживались жёсткие ссылки, то установщик спросит, включить ли эту самую поддержку. Ответим положительно — Yes.

  6. В терминале появится небольшое summary по предыдущим ответам. Если всё правильно, то подтверждаем наше желание отформатировать жёсткий диск и продолжить установку. Ещё раз ответим Yes.

  7. Теперь важный момент: пришла пора задать пароль суперпользователя. В Windows такой пользователь называется Administrator, в Linux — root, а в OpenVMS — SYSTEM. Пароль — минимум 8 символов. Вводимое не будет отображаться на экране по соображениям безопасности. Подтверждаем нажатием Enter.

  8. Система попросит ввести пароль повторно. Вводим — и ещё раз Enter.

  9. В 1975 году DEC разработала собственный стек протоколов DECnet для одноранговой сети между компьютерами PDP-11. DECnet активно развивался и встраивался во все операционные системы Digital. Каждое поколение получало название, состоящее из слова Phase и римской цифры. Например, DECnet Phase IV. К 1987 году cтeк получил поддержку сетей неограниченного размера и даже TCP/IP. Эта пятая фаза (Phase V) получила название DECnet/OSI, а впоследствии была переименована в DECnet-Plus. Чтобы корректно настроить сетевую подсистему для работы в сетях DECnet, надо задать уникальное символьное имя ноды (SCSNODE). Мы решили назвать ноду OPNVMS.

  10. Вторым важным параметром работы в сети DECnet является уникальный идентификатор (SCSSYSTEMID). Система задаст вопрос: планируется ли использование DECnet? Отвечаем положительно — Yes.

  11. Инсталлятор предложит использовать адрес 1.1 в сети DECnet. Соглашаемся с ним, подтверждая нажатием Enter. Система сама сгенерирует и задаст SCSSYSTEMID.

  12. Правильное исчисление времени жизненно важно для любой операционной системы. Задаём наше местоположение EUROPE, введя цифру 20.

  13. Выбираем город, например ATHENS, введя 4. Значение для Москвы — 34.

  14. Проверяем выбранную таймзону EUROPE / ATHENS и подтверждаем, введя Yes.

  15. Законодательство о переводе на летнее/зимнее время в разных странах по-разному регламентирует этот вопрос. Если в вашей стране перевод на летнее/зимнее время есть, то ответьте положительно — Yes.

  16. Инсталлятор попросит ввести Time Differential Factor, например 3:00, и переспросит, верно ли, что NEW SYSTEM TIME DIFFERENTIAL FACTOR = 3:00. Подтверждаем — Yes.

  17. Теперь будет вопрос про наличие у вас так называемых PAKs (Product Authorization Keys). Конечно, у нас есть лицензионный PAKs комьюнити-редакции, но рекомендуем выбрать No. В случае положительного ответа вам надо будет вводить кучу параметров для каждого из устанавливаемых продуктов. Проще это сделать потом, скопировав файл по сети и запустив в качестве COM-скрипта. Мы расскажем об этом в следующей статье, посвящённой OpenVMS.

  18. Следующий вопрос будет про устанавливаемые пакеты. Первым система спросит про DECwindows Motif for OpenVMS X86-64 V1.8. Это графическая оболочка, собственная клиент-серверная реализация X Window System. Говорим Yes. Сразу оговоримся, что работать без лицензии она всё равно пока не будет. Поскольку мы пропустили введение PAKs, доступна только установка.

  19. Теперь предстоит выбрать, будем ли мы устанавливать DECnet Plus. Поскольку мы хотим работать с TCP/IP, то также отвечаем положительно — Yes.

  20. В процессе установки можно получать либо детальную, либо общую информацию. Согласимся на получение детальной информации — Yes.

  21. Инсталлятор начнёт проверять установочные пакеты и, если всё хорошо, задаст три вопроса относительно настроек устанавливаемого софта. Дважды вводим Yes, отвечая, что готовы на дефолтные настройки, и разрешая перезагрузить сервер автоматически после первой успешной загрузки. Это нужно для применения автоматически сгенерированных конфигов. А на вопрос о ревью настроек можно сказать No, что финально запустит процесс инсталляции.

Наливаем кофе и ждём, пока процесс завершится. Даже на мощной машине это займёт не менее 10 минут. После соответствующего запроса (Press Return to continue…) нажимаем Enter и возвращаемся в главное меню установки. Мы выбрали пункт 9 (Shut down this system) и нажали Enter. Система выполнит отключение и попросит нажать любую клавишу для перезагрузки. Нажимаем пробел и закрываем виртуальную машину.

Останется только отмонтировать установочный диск и заново запустить VM. В консоли BOOTMGR> введите BOOT DKA0. Это первый запуск системы, в процессе которого она создаст все дефолтные конфиги и автоматически перезагрузится. Только после этого мы получим скромное приглашение ввести имя пользователя и пароль. В качестве имени пользователя вводим SYSTEM, а в качестве пароля тот, который задали при установке. Поздравляем, вы установили OpenVMS.

Заключение

Когда мы только начинали работу над статьёй, то не могли подумать о том, что установка ОС — лишь первый этап подготовки системы к работе. Оказалось, что даже банальная процедура активации комьюнити-лицензий весьма нетривиальна. Так что вас ждёт часть 2, в которой мы вначале активируем сеть TCP/IP, подключим OpenVMS к интернету и только потом выполним активацию остальной части PAKs.

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

А вам доводилось использовать OpenVMS? Ждём вас в комментариях.

Комментарии (15)


  1. Tzimie
    31.07.2023 13:15
    +3

    Это моя вторая любовь, после RSX11M.

    Только тогда она была не open, и было это даже до процессора alpha


    1. SIISII
      31.07.2023 13:15
      +4

      Угу, то была VAX/VMS.


      1. Vlad10190
        31.07.2023 13:15

        и редактор LSE, функционал почти как у современной jidea


  1. PilotPirx
    31.07.2023 13:15
    +1

    О, да - НИИФ СПбГУ, DECStation в качестве X-терминалов(хотя Solaris уже активно вытесняла VMS), DECnet, связывающий компы во всём здании


  1. chernish2
    31.07.2023 13:15

    За полуось отдельное спасибо!


  1. ereinion
    31.07.2023 13:15

    А у меня вот даже аутентичное железо для нее есть, а мозгов (времени) не хватило пока с ней разобраться. Круто!


  1. Gumanoid
    31.07.2023 13:15
    +1

    А вам доводилось использовать OpenVMS? Ждём вас в комментариях.

    Участвовал в разработке компилятора для OpenVMS под Itanium. Но при этом саму OpenVMS ни разу не видел.


    1. alex-open-plc
      31.07.2023 13:15

      Для титаника? Это ужас!... (Что за компилятор, если не секрет? MACRO64?)


      1. Gumanoid
        31.07.2023 13:15
        +1

        Даже не знаю как он назывался. Мы тогда в Intel делали оптимизаторную часть и передавали сорцы в HP, а они уже встраивали их в финальный компилятор для OpenVMS. Причём интересно что в то же время у HP был собственный компилятор для Itanium HP-UX, не хуже чем наш Intel Compiler, но так исторически сложилось что компилятор для OpenVMS был основан на ICC.


  1. dmitry78
    31.07.2023 13:15

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


  1. klopp_spb
    31.07.2023 13:15

    А вам доводилось использовать OpenVMS?

    Пару лет назад принимал участие в "родном" для VMS проекте по созданию glibc и портированию GNU binutils. Недолго, но опыт был один из самых значимых за много лет.

    Что касается самой ОС с точки зрения юзера... Ну, например, размышлизмы на тему "Как удалить каталог" :-) https://raymii.org/s/blog/Delete_a_directory_in_OpenVMS.html


    1. interm
      31.07.2023 13:15

      Ну, например, размышлизмы на тему "Как удалить каталог" :-)

      SET FILE/NODIR SSH.DIR;1
      DEL SSH.DIR;1

      ;)


    1. pred8or
      31.07.2023 13:15

      $ DEL [.SSH]*.*;*

      Прямо ностальгия нахлынула


      1. interm
        31.07.2023 13:15

        В "размышлизмах" было:

        It was time to remove the folder.

        :)


  1. interm
    31.07.2023 13:15

    19. Теперь предстоит выбрать, будем ли мы устанавливать DECnet Plus. Поскольку мы хотим работать с TCP/IP, то также отвечаем положительно — Yes.

    И давно так?