Есть в мире вещи, про которые говорят, что они сделаны на века. Проходят десятилетия, а они просто продолжают работать как ни в чём не бывало. Сегодня мы погрузимся в историю и расскажем про операционную систему 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 Manager — Secure Boot Configuration. Убираем крестик с пункта Attempt Secure Boot. Дважды нажимаем ESC, выбираем пункт Reset и подтверждаем с помощью Enter. Это действие отключит Secure Boot.
Теперь из главного меню выбираем Boot Manager — EFI 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:
- Убираем параметр Local echo 
- Carriage return — выбираем Carriage return only 
Если проигнорировать первый пункт, то все данные, введённые вами в консоли, будут задваиваться. Второй пункт более важен, поскольку на этапе ввода пароля системного пользователя после нажатия Enter (Return) будет автоматически посылаться непечатный символ протяжки (line feed). Система не может его распознать и выдаст ошибку, что вы использовали некорректный символ.
В очень старых компьютерах устройством ввода служила электрическая печатная машинка. В неё вставляли не отдельный лист бумаги, а целый рулон. Всё, что вы вводили, одновременно отпечатывалось на бумаге и отправлялось в ЭВМ. Нажатие Return возвращало каретку ввода к началу той же самой строки. Для начала следующей строки требовалось протянуть рулон бумаги. Именно это и пытается эмулировать TelnetPM.
Подключаемся и запускаем установку:

Также можно подключиться, используя PuTTY. Там предварительно надо проверить настройки в разделе Terminal:
- Отключить Implicit CR in every LF 
- Отключить Implicit LF in every CR 
- Переключатель Local echo выставить Force off 
- Переключатель Local line editing выставить Force off 
Установка
Как только загрузилось меню:
- Выбираем пункт 1 (Upgrade, install or reconfigure OpenVMS X86-64 Version E9.2-1). 
- Система спросит, является наша установка новой или существующей (INITIALIZE или PRESERVE). Поскольку это новая установка, вводим INITIALIZE. Регистр не имеет значения. 
- Теперь пора выбрать, на какой диск производить установку. Чтобы ничего не перепутать, вначале запросим список доступных дисков, введя знак вопроса ?. В полученной таблице находим диск, обозначенный VBOX, и вводим его имя — в нашем случае DKA0. 
- Метку диска можно оставить по умолчанию, то есть X86SYS. Просто нажимаем Enter. 
- Девятая версия OpenVMS требует, чтобы в качестве файловой системы использовалась ODS-5. Это пятая версия ФС семейства Files-11. Поскольку у ODS-5 опционально поддерживались жёсткие ссылки, то установщик спросит, включить ли эту самую поддержку. Ответим положительно — Yes. 
- В терминале появится небольшое summary по предыдущим ответам. Если всё правильно, то подтверждаем наше желание отформатировать жёсткий диск и продолжить установку. Ещё раз ответим Yes. 
- Теперь важный момент: пришла пора задать пароль суперпользователя. В Windows такой пользователь называется Administrator, в Linux — root, а в OpenVMS — SYSTEM. Пароль — минимум 8 символов. Вводимое не будет отображаться на экране по соображениям безопасности. Подтверждаем нажатием Enter. 
- Система попросит ввести пароль повторно. Вводим — и ещё раз Enter. 
- В 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. 
- Вторым важным параметром работы в сети DECnet является уникальный идентификатор (SCSSYSTEMID). Система задаст вопрос: планируется ли использование DECnet? Отвечаем положительно — Yes. 
- Инсталлятор предложит использовать адрес 1.1 в сети DECnet. Соглашаемся с ним, подтверждая нажатием Enter. Система сама сгенерирует и задаст SCSSYSTEMID. 
- Правильное исчисление времени жизненно важно для любой операционной системы. Задаём наше местоположение EUROPE, введя цифру 20. 
- Выбираем город, например ATHENS, введя 4. Значение для Москвы — 34. 
- Проверяем выбранную таймзону EUROPE / ATHENS и подтверждаем, введя Yes. 
- Законодательство о переводе на летнее/зимнее время в разных странах по-разному регламентирует этот вопрос. Если в вашей стране перевод на летнее/зимнее время есть, то ответьте положительно — Yes. 
- Инсталлятор попросит ввести Time Differential Factor, например 3:00, и переспросит, верно ли, что NEW SYSTEM TIME DIFFERENTIAL FACTOR = 3:00. Подтверждаем — Yes. 
- Теперь будет вопрос про наличие у вас так называемых PAKs (Product Authorization Keys). Конечно, у нас есть лицензионный PAKs комьюнити-редакции, но рекомендуем выбрать No. В случае положительного ответа вам надо будет вводить кучу параметров для каждого из устанавливаемых продуктов. Проще это сделать потом, скопировав файл по сети и запустив в качестве COM-скрипта. Мы расскажем об этом в следующей статье, посвящённой OpenVMS. 
- Следующий вопрос будет про устанавливаемые пакеты. Первым система спросит про DECwindows Motif for OpenVMS X86-64 V1.8. Это графическая оболочка, собственная клиент-серверная реализация X Window System. Говорим Yes. Сразу оговоримся, что работать без лицензии она всё равно пока не будет. Поскольку мы пропустили введение PAKs, доступна только установка. 
- Теперь предстоит выбрать, будем ли мы устанавливать DECnet Plus. Поскольку мы хотим работать с TCP/IP, то также отвечаем положительно — Yes. 
- В процессе установки можно получать либо детальную, либо общую информацию. Согласимся на получение детальной информации — Yes. 
- Инсталлятор начнёт проверять установочные пакеты и, если всё хорошо, задаст три вопроса относительно настроек устанавливаемого софта. Дважды вводим 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)
 - PilotPirx31.07.2023 13:15+1- О, да - НИИФ СПбГУ, DECStation в качестве X-терминалов(хотя Solaris уже активно вытесняла VMS), DECnet, связывающий компы во всём здании 
 - ereinion31.07.2023 13:15- А у меня вот даже аутентичное железо для нее есть, а мозгов (времени) не хватило пока с ней разобраться. Круто! 
 - Gumanoid31.07.2023 13:15+1- А вам доводилось использовать OpenVMS? Ждём вас в комментариях. - Участвовал в разработке компилятора для OpenVMS под Itanium. Но при этом саму OpenVMS ни разу не видел.  - alex-open-plc31.07.2023 13:15- Для титаника? Это ужас!... (Что за компилятор, если не секрет? MACRO64?)  - Gumanoid31.07.2023 13:15+1- Даже не знаю как он назывался. Мы тогда в Intel делали оптимизаторную часть и передавали сорцы в HP, а они уже встраивали их в финальный компилятор для OpenVMS. Причём интересно что в то же время у HP был собственный компилятор для Itanium HP-UX, не хуже чем наш Intel Compiler, но так исторически сложилось что компилятор для OpenVMS был основан на ICC. 
 
 
 - dmitry7831.07.2023 13:15- gentoo напоминает, "на некоторую параноидальность инсталлятора, эта система спроектирована так, чтобы не допустить ни одной ошибки. Она не пытается сказать вам, что лучше знает, как ей работать, а отдаёт управление в руки системного администратора. Вдумчивое чтение мануалов и встроенной справки по командам понемногу открывает всё изящество операционной системы 
 - klopp_spb31.07.2023 13:15- А вам доводилось использовать OpenVMS? - Пару лет назад принимал участие в "родном" для VMS проекте по созданию glibc и портированию GNU binutils. Недолго, но опыт был один из самых значимых за много лет. - Что касается самой ОС с точки зрения юзера... Ну, например, размышлизмы на тему "Как удалить каталог" :-) https://raymii.org/s/blog/Delete_a_directory_in_OpenVMS.html  - interm31.07.2023 13:15- Ну, например, размышлизмы на тему "Как удалить каталог" :-) - SET FILE/NODIR SSH.DIR;1 
 DEL SSH.DIR;1- ;) 
 
 - interm31.07.2023 13:15- 19. Теперь предстоит выбрать, будем ли мы устанавливать DECnet Plus. Поскольку мы хотим работать с TCP/IP, то также отвечаем положительно — Yes. - И давно так? 
 
           
 

Tzimie
Это моя вторая любовь, после RSX11M.
Только тогда она была не open, и было это даже до процессора alpha
SIISII
Угу, то была VAX/VMS.
Vlad10190
и редактор LSE, функционал почти как у современной jidea