Приветствую читателей! В мои руки попал интересный экземпляр – сервер 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 проделываем следующее:
# minicom -s
Выбираем пункт «Настройка последовательного порта» и проводим настройку согласно изображению ниже;
Выбираем пункт «Сохранить настройки как df1» и выходим.
Запускаем утилиту minicom (естественно через sudo), нажимаем Enter и попадаем в командную строку «lom».
Прописываем команду для включения сервера:
lom> poweron
После включения начинается инициализация и загрузка OpenBoot (проще говоря BIOS в мире Sun Microsystems). Далее появляется командная строка «ok». Если же осталась командная строка «lom», требуется ввести эту команду:
lom> break
Сервер поддерживает установку с оптического диска и установку по сети. Будет рассмотрен вариант установки по сети, который включает в себя 2 этапа:
получение IP адреса,
получение файлов установщика.
Я предлагаю рассмотреть следующие варианты получения IP адреса:
с использованием RARP,
с использованием DHCP.
Получение IP адреса при помощи RARP
Address Resolution Protocol (ARP) – протокол предназначенный для преобразования IP адреса в MAC адрес.
Reverse ARP (RARP) – протокол, который из имеющегося MAC адреса узнать IP адрес. В сеть посылается широковещательный запрос с поиском RARP сервера, который сопоставит MAC адрес и отправит найденный IP адрес клиенту.
На хост устанавливаем пакет 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 адреса проделываем следующие манипуляции:
-
при использовании RARP метода, необходимо полученный файл образ сетевой загрузки переименовать, к виду:
IP адрес представленный в 16-ричной форме, например: 192.168.1.105 – C0A80169
# cd /srv/tftp
# mv boot.img C0A80169
при использовании 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 давно потерял поддержку и ключи подписи уже недействительны, поэтому установка не может продолжиться.
Необходимо проделать следующее:
-
Из главного меню установщика запускаем командную строку
-
Прописываем:
# chroot /target bash
для того чтобы оказаться внутри почти установленной системы.
-
Отключаем проверку подписи
# nano /etc/apt/apt.d/99myown
APT::Get::AllowUnauthenticated "true";
Сохраняем и выходим (CTRL+X -> «y»)
-
Выходим из окружения и возвращаемся к установщику
# exit
# exit
Далее выбираем снова пункт установки базовой системы и продолжаем установку.
Особенностей в установке нет, ну разве что не нужно выбирать пункт установки графического интерфейса очевидно почему.
Когда установка закончится, возвращаемся в меню и запускаем командную строку (чуть ниже опишу что там делать).
Дело в том, что в системе Linux для вывода информации в консоль используются устройства в каталоге /dev/tty1, /dev/tty2 и так далее. Но в случае с сервером устройством вывода будет не tty1, к примеру, а ttyS0, который означает Serial. Поэтому требуется указать этот параметр в файле, который отвечает за инициализацию ОС во время запуска.
-
Заходим в окружение установленной ОС
# chroot /target bash
-
Редактируем файл
# nano /etc/inittab
Сохраняем и выходим (CTRL+X, «y»)
Необходимо закомментировать все строки содержащие tty1, tty2... и убрать комментарии в строке ttyS0.
-
Выходим из окружения и завершаем установку
# 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 и 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
Перед тем как проверять подключение, нужно в файле /etc/inittab, убрать комментарии, которые отвечают за инициализацию /dev/tty1, /dev/tty2 … Перезагружаем сервер
Проверяем подключение по telnet.
# telnet localhost
Чтобы начать регистрацию требуется залогиниться под пользователем «bbs», пароля нет.
Документация по эксплуатации BBS расположена в репозитории github.
На этом и закончился мой опыт. Свои задачи я выполнил. Но перед тем как написать эту статью было потрачено много времени и попыток установки других BBS-ок. Кстати этот факт и побудил написать статью.
UPD 1 Дополню статью фотками "пыльного железа"
Комментарии (16)
vadimr
15.10.2023 09:12+1Но позвольте, узел 2:280/2802 отсутствует в нодлисте!
NutsUnderline
15.10.2023 09:12я так понимаю это не автора статьи а автора софта а он уж с 2013 года забил на это дело
NutsUnderline
15.10.2023 09:12+1очень не хватает фоточек пыльного железа
но видеть команды poweron и break в консоли это прямо таки доставляет
не совсем понял почему бы не неастроить dhcp прямо на роутере... и это ведь может дойти до того чтобы поднять всю BBS прямо на роутере
kaneki_li Автор
15.10.2023 09:12+1Я не понимаю как в роутере указать тогда tftp файл на конкретный хост. Буду рад услышать ваш вариант
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 на роутере то можно и с роутера сервер загрузить
tchkEn
15.10.2023 09:12Хоть и не имел опыта работы с подобным железом статью прочитал с удовольствием. Надеюсь будет продолжение.
Andy_U
Э, а где демонстрация соединения по коммутируемой телефонной линии?
kaneki_li Автор
В мои задачи не входило настройка Фидонет и телефонной линии, но думаю об этой идее. Свои задачи я выполнил
Andy_U
Я про FIDO ничего не говорил - ждал вашего ответа. Но без телефона и BBS смысла не имеет.
kaneki_li Автор
Дело в том что я вообще не рассчитывал на телефон, я подразумевал подключение по telnet внутри сети