Приветствую читателей! В мои руки попал интересный экземпляр – сервер Netra X1 компании Sun Microsystems. Привлёк данный аппарат архитектурой Sparc, которой я раньше мало где встречал. Аппарат конечно старый, но работает безупречно. Тут родилась идея установки BBS и операционной системы Debian. Так сказать «Готовый музейный экспонат».

Предисловие

Задача: установить операционную систему Debian и BBS софт.

Расскажу немного про сам сервер и софт. Единственное, что хочется выделить в сервере это архитектуру sparc и отсутствие графического вывода. Сервер управляется исключительно через консольные интерфейсы A/LOM и B.

Lights-Out Management (LOM) – позволяет управлять состоянием сервера без подключения питания, что дословно и переводится как «без света».

Bulletin Board System (BBS) – электронная доска объявлений. Использовавшийся в эпоху WEB 1.0 способ общения пользователей компьютеров через коммутируемые телефонные сети. По своей сути BBS является зерном, после которого вырос весь интернет.

Не буду вдаваться в историю создания, а расскажу об главных фичах, которые нес в себе BBS:

  • файловый обмен,

  • электронная почта,

  • эхо-конференции,

  • игры,

  • чат с пользователями.

Все эти функции мы встречаем каждый день, но уже в интернете.

Расскажу немного об рабочем месте, которое включает в себя:

  • хост, на котором будут производится все манипуляции с сервером (ОС Ubuntu 18.04),

  • коммутатор, в который заходит интернет,

  • сам сервер Sun Netra x1.

Подготовка к установке ОС

Архитектура сервера является специфичной и разумнее бы было использовать Solaris, но задача установить Debian.

В Sun Netra x1 используется два интерфейса ttyA и ttyB. Что бы управлять сервером из консоли используется утилита minicom. Подключаю кабель «RJ-45 to DB-9 RS232» к порту A/LOM и на хосте запускаю minicom. Параметры для подключения, следующие: 9600 8N1

Для того чтобы настроить minicom проделываем следующее:

  1. # minicom -s

  2. Выбираем пункт «Настройка последовательного порта» и проводим настройку согласно изображению ниже;

  3. Выбираем пункт «Сохранить настройки как df1» и выходим.

Настройка minicom
Настройка minicom

Запускаем утилиту minicom (естественно через sudo), нажимаем Enter и попадаем в командную строку «lom».

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

lom> poweron

Запуск утилиты minicom и включение сервера
Запуск утилиты minicom и включение сервера

После включения начинается инициализация и загрузка OpenBoot (проще говоря BIOS в мире Sun Microsystems). Далее появляется командная строка «ok». Если же осталась командная строка «lom», требуется ввести эту команду:

lom> break

Сервер поддерживает установку с оптического диска и установку по сети. Будет рассмотрен вариант установки по сети, который включает в себя 2 этапа:

  1. получение IP адреса,

  2. получение файлов установщика.

Я предлагаю рассмотреть следующие варианты получения IP адреса:

  1. с использованием RARP,

  2. с использованием DHCP.

Получение IP адреса при помощи RARP

Address Resolution Protocol (ARP) – протокол предназначенный для преобразования IP адреса в MAC адрес.

Reverse ARP (RARP) – протокол, который из имеющегося MAC адреса узнать IP адрес. В сеть посылается широковещательный запрос с поиском RARP сервера, который сопоставит MAC адрес и отправит найденный IP адрес клиенту.

Отправка ARP/RARP запроса
Отправка ARP/RARP запроса

На хост устанавливаем пакет rarpd, который выполняет функции RARP. Для составления MAC адресов и IP адресов используется файл:

/etc/ethers

Вносим запись вида: <mac address> <ip address>. Сохраняем и перезапускаем демон rarpd.

Примечание: MAC адрес можно узнать при запуске сервера. Требуется привести его к виду:

Было - 0:3:BA:5:20:28, стало - 00:03:BA:05:20:28

Получение IP адреса при помощи DHCP

Примечание: требуется локальная сеть, поэтому лучше отключить интернет. Настроенный на маршрутизаторе DHCP будет мешать.

Для реализации требуется пакет isc-dhcp-server.

Конфигурация не очень трудная и содержит следующие пункты:

  • подсеть, в которой будут выдаваться ip адреса,

  • определенный IP адрес на определенный MAC адрес,

  • имя файла, который необходимо подгрузить.

Файл конфигурации расположен здесь:

/etc/dhcp/dhcpd.conf

subnet 192.168.1.0 netmask 255.255.255.0 {

            range 192.168.1.200 192.168.1.210;

            option routers 192.168.1.1;

            option broadcast-address 192.168.1.255;

}

group {

            host-cli {

                        filename “boot.img”;

                        hardware ethernet 00:03:BA:05:20:28;

                        fixed-address 192.168.1.105;

            }

}

В файле прописаны следующие параметры:«»

  • «subnet» – ветка, отвечающая за подсеть,

  • «range» – диапазон выдаваемых адресов,

  • «option routers» – шлюз по умолчанию (можно написать любой),

  • «option broadcast-address» – широковещательный адрес,

  • «group { host-cli» – ветка, отвечающая за то, чтобы конкретному ethernet адресу выдать конкретный IP адрес,

  • «filename» – имя файла, который будет загружаться, но об этом чуть позже,

  • «hardware ethernet» – MAC адрес,

  • «fixed-address» – IP адрес.

Возникает вопрос, зачем создавать пул выдаваемых адресов если требуется лишь назначить конкретному устройству конкретный IP? Ветка subnet указывает клиенту, получающему IP адрес, в какой сети он находится, а также содержит параметры шлюза и широковещательного адреса. Если убрать эту ветку, то банально не будет работать демон isc-dhcp-server.service

Примечание: необходимо установить на хосте статический IP адрес из пула выдаваемых адресов

Настройка передачи файлов по сети

Для того что бы файл был доставлен по сети к серверу, буду использовать протокол TFTP.

TFTP (Trivial File Transfer Protocol) - простой протокол передачи файлов. Используется главным образом для первоначальной загрузки бездисковых рабочих станций. TFTP, в отличие от FTP, не содержит возможностей аутентификации (хотя возможна фильтрация по IP-адресу) и основан на транспортном протоколе UDP.

Пакет называется tftpd-hpa. Конфигурационный файл расположен здесь:

/etc/default/tftpd-hpa

Вносим изменения:

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/srv/tftp"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="--secure --create"

Выделю некоторые параметры в конфигурационном файле:

  • TFTP_DIRECTORY – каталог, в котором хранятся файлы загрузки (я создал новый каталог и указал его в файле),

  • TFTP_ADDRESS – обращение с каких адресов разрешать и порт,

  • TFTP_OPTIONS – дополнительные параметры,

  • «--secure» – параметр по умолчанию,

  • «--create» – разрешает создавать новые файлы

Получение файлов установщика

Debian прекратил поддержку стабильных релизов под архитектуру Sparc, единственной последней версией является Debian 7 Wheezy. Идём на архивный ftp сервер в каталог с установщиками Debian 7 Wheezy и скачиваем образ для сетевой загрузки в каталог, указанный при настройке TFTP:

# cd /srv/tftp

# wget https://archive.debian.org/debian/dists/wheezy/main/installer-sparc/current/images/netboot/boot.img

Объясню отличия образа для сетевой загрузки от образа CD. Стандартный CD образ Debian слишком велик, а образ для сетевой установки содержит в себе временную файловую систему initramfs и установщик Debian. Выходит, около 8МБ.

В зависимости от выбора метода получения IP адреса проделываем следующие манипуляции:

  1. при использовании RARP метода, необходимо полученный файл образ сетевой загрузки переименовать, к виду:

    IP адрес представленный в 16-ричной форме, например: 192.168.1.105 – C0A80169

    # cd /srv/tftp

    # mv boot.img C0A80169

  2. при использовании DHCP метода, необходимо в файле конфигурации
    /etc/dhcp/dhcpd.conf в параметре «filename» указать имя файла, расположенного в
    каталоге TFTP.

Установка ОС

Напомню что если используется метод получения IP адреса по DHCP, требуется отключить интернет и хосту выдать IP адрес из пула DHCP.

Перезапускаем на хосте демоны:

  • rarpd.service / isc-dhcp-server.service

  • tftpd-hpa.service

Запускаем сервер, ждем инициализации и командной строки «ok». Прописываем следующую команду, при использовании RARP:

ok boot net

или, если используется DHCP:

ok boot net:dhcp

И ждём начала установки.

Примечание: как только появится экран установщика требуется проверить что есть интернет в сети.

Я думаю, что не стоит рассказывать о каждом шаге установки, поэтому расскажу только о ключевых моментах.

На этапе выбора зеркала из сети нужно вручную указать:

  • archive.debian.org

  • /debian/

Выбор зеркала архива
Выбор зеркала архива

Установка будет происходит нормально до момента установки базовой системы, а конкретно в самом конце, когда проходит установка busybox и ядра. Дело в том, что Debian 7 давно потерял поддержку и ключи подписи уже недействительны, поэтому установка не может продолжиться.

Экран ошибки
Экран ошибки

Необходимо проделать следующее:

  1. Из главного меню установщика запускаем командную строку

    Пункт выбора командной строки в меню установщика
    Пункт выбора командной строки в меню установщика
  2. Прописываем:

    # chroot /target bash

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

  3. Отключаем проверку подписи

    # nano /etc/apt/apt.d/99myown

    APT::Get::AllowUnauthenticated "true";

  4. Сохраняем и выходим (CTRL+X -> «y»)

  5. Выходим из окружения и возвращаемся к установщику

    # exit

    # exit

Далее выбираем снова пункт установки базовой системы и продолжаем установку.

Особенностей в установке нет, ну разве что не нужно выбирать пункт установки графического интерфейса очевидно почему.

Когда установка закончится, возвращаемся в меню и запускаем командную строку (чуть ниже опишу что там делать).

Дело в том, что в системе Linux для вывода информации в консоль используются устройства в каталоге /dev/tty1, /dev/tty2 и так далее. Но в случае с сервером устройством вывода будет не tty1, к примеру, а ttyS0, который означает Serial. Поэтому требуется указать этот параметр в файле, который отвечает за инициализацию ОС во время запуска.

  1. Заходим в окружение установленной ОС

    # chroot /target bash

  2. Редактируем файл

    # nano /etc/inittab

    Сохраняем и выходим (CTRL+X, «y»)

  3. Необходимо закомментировать все строки содержащие tty1, tty2... и убрать комментарии в строке ttyS0.

  4. Выходим из окружения и завершаем установку

    # exit

    # exit

    Пункт «Abort installation»

Если бы эти действия не были совершены наблюдалась бы картина того, что прошла инициализация ОС, но нет приглашения к вводу пользователя.

При перезапуске сервера он будет грузиться с последнего выбранного устройства, а конкретно по сети поэтому лучше выключить и включить сервер вручную. Доходит до командной строки «ok», прописываем boot disk2(может быть другая цифра) и запускается операционная система.

Рекомендую установить SSH сервер и настроить вход из-под root пользователя. Все дальнейшие действия осуществлять по SSH.

Выбор BBS

В поисках различных вариантов реализации BBS, я выделил данные системы:

  • Synchronet BBS,

  • Maximus BBS,

  • Mystic BBS,

  • Enigma BBS,

  • WIVV BBS,

  • MBSE BBS.

Выбор основывался исходя из следующих критериев:

  1. прост в использовании и настройке,

  2. имеет исходный код для сборки,

  3. имеется документация.

Если с 1 и 3 критерием всё понятно, то зачем же иметь исходный код? Исходный код позволяет собрать программу под почти любую архитектуру.

Но в ходе установки этих BBS-ок постоянно были проблемы. Либо исходный код не заточен под Sparc, либо Debian 7 слишком старый, ну или же документация по установке была неработоспособна.

В конце концов осталась лишь одна реализация – это MBSE BBS.

Данная реализация BBS поддерживает все те фичи, что я описывал выше. Кстати говоря, это одна из первых BBS на Unix-like системах, которая стала использовать демон для запуска и контролем за состоянием.

Установка BBS

Проект распространяется как на sourceforge, так и на github. Я буду описывать установку из github.

Но перед установкой BBS, необходимо установить некоторые пакеты и библиотеки для сборки, компиляции и использования BBS. Но перед этим отредактируем файл менеджера пакетов, чтобы установить некоторые пакеты не из стабильной ветки.

# nano /etc/apt/sources.list

deb http://archive.debian.org/debian/ wheezy non-free

# apt-get update

И устанавливаем пакеты

# apt-get install xinetd libc6-dev libz-dev libbz2-dev automake telnetd arj rar lha arc zoo lrzsz joe gcc gpp build-essential git

Теперь скачаем файлы из github в временный каталог:

# cd /tmp

# git clone https://github.com/bbs-io/mbse.git

Далее я буду расписывать команды и давать небольшие пояснения.

# cd mbse/

# ./SETUP.sh

Команда выше создаёт нового пользователя «mbse». Требуется залогиниться под него.

# su - mbse

После того, как залогинимся необходимо из временного каталога скопировать папку mbse в домашний каталог нового пользователя

# cp -r /tmp/mbse/ ~

Продолжаем установку

# cd mbse/

# ./configure

# make

Переключаемся на рута

# su

# make install

# exit

Запускаем скрипт, который позволит при запуске ОС запускать BBS

# ./CRON.sh

Установка окончена. Управление осуществляется исключительно через пользователя «mbse». Запустим BBS:

# cd bin/

# ./mbtask

Запуск BBS
Запуск BBS

Перед тем как проверять подключение, нужно в файле /etc/inittab, убрать комментарии, которые отвечают за инициализацию /dev/tty1, /dev/tty2 … Перезагружаем сервер

Проверяем подключение по telnet.

# telnet localhost

Чтобы начать регистрацию требуется залогиниться под пользователем «bbs», пароля нет.

Подключение к localhost и логин под bbs
Подключение к localhost и логин под bbs
Регистрация в BBS
Регистрация в BBS

Документация по эксплуатации BBS расположена в репозитории github.

На этом и закончился мой опыт. Свои задачи я выполнил. Но перед тем как написать эту статью было потрачено много времени и попыток установки других BBS-ок. Кстати этот факт и побудил написать статью.

UPD 1 Дополню статью фотками "пыльного железа"

Под крышкой сервера
Под крышкой сервера
Внешние интерфейсы
Внешние интерфейсы

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


  1. Andy_U
    15.10.2023 09:12
    +1

    Э, а где демонстрация соединения по коммутируемой телефонной линии?


    1. kaneki_li Автор
      15.10.2023 09:12

      В мои задачи не входило настройка Фидонет и телефонной линии, но думаю об этой идее. Свои задачи я выполнил


      1. Andy_U
        15.10.2023 09:12

        Я про FIDO ничего не говорил - ждал вашего ответа. Но без телефона и BBS смысла не имеет.


        1. kaneki_li Автор
          15.10.2023 09:12

          Дело в том что я вообще не рассчитывал на телефон, я подразумевал подключение по telnet внутри сети


  1. vadimr
    15.10.2023 09:12
    +1

    Но позвольте, узел 2:280/2802 отсутствует в нодлисте!


    1. NutsUnderline
      15.10.2023 09:12

      я так понимаю это не автора статьи а автора софта а он уж с 2013 года забил на это дело


      1. vadimr
        15.10.2023 09:12

        Картинка для привлечения внимания привлекла слишком пристальное внимание :)


  1. NutsUnderline
    15.10.2023 09:12
    +1

    очень не хватает фоточек пыльного железа

    но видеть команды poweron и break в консоли это прямо таки доставляет

    не совсем понял почему бы не неастроить dhcp прямо на роутере... и это ведь может дойти до того чтобы поднять всю BBS прямо на роутере


    1. kaneki_li Автор
      15.10.2023 09:12
      +1

      Я не понимаю как в роутере указать тогда tftp файл на конкретный хост. Буду рад услышать ваш вариант


      1. NutsUnderline
        15.10.2023 09:12

        в роутере есть так называемые DHCP options, я как то по инерции считаю что на роутере OpenWRT должен быть, но похожий пункт меню имеется в разделе dhcp и довольно примитивных роутеров.

        это строчки вида

        66,<TFTP Server Name>
        67,<Filename>

        Примерно как описано здесь https://forum.openwrt.org/t/pxe-boot-option-66-not-passed-to-client/81175

        Для полной аналогии - установить привязку IP к MAC сервера

        Но поскольку встроенный TFTP сервер на OpenWrt включается одной галочкой то если разместить boot.img на роутере то можно и с роутера сервер загрузить


        1. kaneki_li Автор
          15.10.2023 09:12

          Спасибо за мысль, отличная идея)


  1. idle0
    15.10.2023 09:12

    Вместо того что бы на шаге #3 разрешать установку неподписанных пакетов наверное можно было просто скачать нормальный сертификат?


    1. kaneki_li Автор
      15.10.2023 09:12

      Мне показалось это наиболее простым вариантом. Если вы предложите иной вариант я буду только рад


  1. maximvasilievmaxim
    15.10.2023 09:12

    Раскачегарил старушку!!! Ох... Возможно вы техно-некрамант.


  1. kaneki_li Автор
    15.10.2023 09:12

    .


  1. tchkEn
    15.10.2023 09:12

    Хоть и не имел опыта работы с подобным железом статью прочитал с удовольствием. Надеюсь будет продолжение.