DELL UNIX Часть 1: Выводим в сеть мертвеца
Продолжаю знакомить читателей с давно отжившими технологиями. В этот раз расскажу о системе, про которую в СНГ врядли вобще слышали, поскольку она была редкостью даже для тех золотых лет и той среды.
Живая история
Самое лучшее описание этой штуки:
“Dell UNIX? I didn’t know there was such a thing.”
Вообщем это редкая, очень редкая операционная система, не особо известная даже специалистам, которая еще и использовалась 40 лет назад (практически мой ровестник) очень короткий промежуток времени.
Вот тут находится оригинал статьи на Хабре, с рассказом про эту ОС и всю ее историю, для расширения горизонта.
Вообщем ниже мы будем эту ископаемую штуку оживлять, поднимать сеть и выходить в интернет — все по секретным документам, разумеется.
Статьи будет две, поскольку хотелось бы отдельно раскрыть интересный опыт с поднятием сети на столь устаревшей ОС и отдельно вопросы UI/UX — там тоже много всего интересного.
За основу я взял вот эту статью от 2019го года и вот этот уже готовый образ диска. К сожалению инструкции в ней немного некорректны, поэтому я их изменил.
В качестве хоста выступал Mageia Linux 9, поскольку из моей любимой FreeBSD недавно удалили поддержку SLIP протокола, а быстро прикрутить ее обратно у меня не получилось.
Эмулятор в этот раз — QEMU, который присутствует во всех дистрибьютивах линукса, во всех вариациях BSD и наверное вообще везде.
Запуск
Скачиваем образ диска, распаковываем:
mkdir ~/dell-unix & cd dell-unix wget http://tenox.pdp-11.ru/os/dellunix/dellunix-bochs-qemu.rar unrar e dellunix-bochs-qemu.rar
Файл allsoft.img — тот самый готовый образ диска.
qemu-system-i386 -boot c -m 8 -serial pty -drive format=raw,file=allsoft.img -no-acpi -chardev msmouse,id=msmouse -device isa-serial,chardev=msmouse
Пройдемся по параметрам запуска.
-boot c — указание на загрузку с диска С: (та самая буква диска да).
-m 8 — по-умолчанию Qemu использует 128 Мегабайт памяти, что очевидно перебор для системы из 92го года. Поэтому у меня указан параметр -m 8, как указание использовать 8 Мегабайт памяти, что уже ближе к тем реалиям.
-serial pty — указание использовать псевдотерминал TTY
-drive format=raw, file=allsoft.img — указание на использование нашего образа диска с установленным Dell Unix. RAW означает «сырой» образ данных, не контейнер вроде OVA.
-no-acpi — указание на запрет эмуляции поддержки ACPI.
-chardev msmouse, id=msmouse -device isa-serial, chardev=msmouse — некая магия с пробросом мыши из хоста в гостевую систему, которая у меня так и не заработала в Х-сессии.
Если все прошло успешно, появится экран загрузки:
Дальше загрузка должна дойти до приглашения авторизации:
Для входа можно использовать учетную запись: root с пустым паролем. Теперь возвращаемся к вопросу настройки сети.
Сеть
Часть действий по настройке необходимо выполнить на хосте а часть непосредственно в запущенном Dell Unix.
поднять Ethernet соединение через последовательный порт, между хостом и виртуальной машиной.
При запуске эмулятора обратите внимание на строку:
char device redirected to /dev/pts/3 (label serial0)
В моем случае это /dev/pts/3 — виртуальное устройство, которое мы будем дальше использовать для настройки сети.
На хосте из-под root выполняем:
slattach -s 19200 -d -p slip /dev/pts/3
Утилиты slattach может не быть в системе по-умолчанию (как у меня в Mageia 9), в этом случае ее необходимо устанавливать отдельно.
После запуска будет примерно такой вывод:
Следующий шаг настройки это назначение статического IP-адреса для виртуального ethernet устройства, созданного утилитой slattach:
ifconfig sl0 192.168.7.1 dstaddr 192.168.7.2 netmask 255.255.255.0 mtu 576 up
Поддержки DHCP в те годы не было, собственно судя по статье одного из оригинальных разработчиков Dell Unix его не поддерживает совсем:
Last I heard from Ken, he was still working at Dell, still running Dell UNIX, and wishing it had DHCP support.
Дальше необходимо настроить мост:
tunctl -t tap0 -u вашлогин ifconfig tap0 up brctl addbr br0 brctl setfd br0 0 ifconfig br0 10.0.2.2 netmask 255.255.255.0 broadcast 10.0.2.255 up brctl addif br0 tap0 ifconfig tap0 0.0.0.0
Судя по всему это надо для некоей изоляции, чтобы не пускать все пакеты внутрь виртуальной ОС, не очень осмысленно но без этого у меня подключение не заработало.
вашлогин — вставьте сюда имя вашего локального пользователя, под которым запускается Qemu.
sysctl net.ipv4.ip_forward=1
Это нужно для того чтобы линукс мог пересылать пакеты между разными интерфейсами, самая частая и известная настройка для «домашних роутеров» на линуксе.
iptables --table nat -A POSTROUTING --out-interface wlan0 -j MASQUERADE
Это вторая любимая сетевая настройка линуксоидов, означает использование того самого NAT (Network Address Translation).
Также обратите внимание на wlan0 — это физический сетевой интерфейс, используемый сетевым адаптером.
Может называться по-другому, в моей системе например это wlp4s0.
Наконец настраиваем передачу пакетов с учетом моста и виртуального интерфейса SLIP:
iptables -A FORWARD -i sl0 -o bridge0 -j ACCEPT iptables -A FORWARD -i bridge0 -o sl0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables кстати тоже может и не быть по-умолчанию в системе, в современных линуксах его считают устаревшим.
Гостевая сеть
Вторую часть настройки необходимо проделать внутри гостевой системы, запускаем виртуалку, входим как root и вводим:
slipattach /dev/tty00s 192.168.7.2 192.168.7.1 19200
slipattach это старое название slattach, который мы использовали с хоста выше.
Прописываем маршрут по-умолчанию:
route add default 192.168.7.1 0
Указываем DNS-сервер (сразу гугловый, чего мелочиться-то):
echo nameserver 8.8.8.8 > /etc/resolv.conf
Если все прошло успешно, будет работать ping:
Никаких curl и wget разумеется в системе нет, но есть старый добрый ftp:
Одной из ключевых особенностей Dell Unix был большой набор открытого ПО:
Besides all of the features enumerated in the press release, we were pioneering in bundling all sorts of “geeky” free software. Some time before, I’d bought a couple of binders of man(1) pages, etc., of free software. I’d wanted to include much of that software in AIX, but couldn’t. “Open source” had not yet been coined, but these were prototypical examples of what would be called “open source”, programs like elm, Emacs, gcc, mh, NNTP readers and servers, PERL 4, TeX, … that “everyone” wanted but had to fetch/build/install/test on other versions of UNIX. Today, it is expected that this kind of software is part of a complete Linux|UNIX system, but I think we were the first to adopt this attitude in a packaged release
Еще в системе 1992го года есть Emacs(!):
Но это конечно фигня по сравнению с 4м Perl:
Да, мало кто из живущих видел 4й Перл, поздравляю. Теперь можно помирать спокойно.
Разумеется я не мог пройти мимо без создания своей собственной учетки:
И даже правильная дата и время на системе из 1992 года (!):
Да, в Dell Unix было полноценное графическое окружение, но поскольку это объемная тема — подробно расскажу в следующей статье.