[Старое железо] Настройка сети на Minix 2

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
21-Янв-2021 21:30

Эта статья будет если не последней в нашем импровизированном цикле, то во всяком случае у меня не скоро накопится материал на следующую. Речь пойдёт сначала об IP-сети на 286 под Minix, её настройке и тех возможностях, которые у нас с ней откроются. А потом я порассуждаю немного о перспективах использования систем, подобных той, которую мы построили, в современном мире.ПодготовкаЧтобы что-то настраивать, необходимо сначала выбрать текстовый редактор. Из более-менее известных редакторов в Minix есть elvis − клон того самого, который пищит и всё портит. Если же вы, как и я, не любите выходить из программы кнопкой “Reset”, то вам подойдёт mined. Только придётся держать под рукой его мануал.Компиляция ядраСначала отредактируем параметры ядра:
$ mined /usr/include/minix/config.h
Чтобы заработала сеть, нужно собрать её драйвер. Заменим строчку
#define ENABLE_DP8390     0  /* enable DP8390 ethernet driver */
на
#define ENABLE_DP8390    1  /* enable DP8390 ethernet driver */
Также рекомендуется добавить псевдотерминалов. Заменим строчку
#define NR_PTYS        0    /* # pseudo terminals (0 to 64) */
на
#define  NR_PTYS        8    /* # pseudo terminals (0 to 64) */
Сохраним файл и приступим к компиляции.
# cd /usr/src/tools
# make hdboot
На моей машине процесс занимает примерно 15 минут.В результате новое ядро будет собрано и скопировано в каталог /minix. Если файл прежнего ядра назывался 2.0.4, то наше, только что собранное, будет установлено как /minix/2.0.4r0.Монитор загрузки (Minix boot monitor) по умолчанию настроен на использование самого нового ядра. Чтобы протестировать его, введём halt, а затем boot. На этом этапе никаких видимых изменений в загрузке системы быть не должно.Если всё-таки что-то пошло не так, можно переключится обратно на старое ядро. Для этого достаточно нажать “Esc” перед загрузкой ОС, чтобы вызвать приглашение монитора загрузки, и ввести в нём команды:
c0d0p0> image=/minix/2.0.4
c0d0p0> boot
Чтобы снова начать использовать последнее собранное ядро:
c0d0p0> unset image
c0d0p0> boot
В любом случае, собрать ядро с драйвером сети − это ещё не всё. Убедившись, что загрузка происходит нормально, мы можем перейти к следующим шагам.Создание файла конфигурации сетиФайл /etc/inet.conf изначально содержит что-то вроде
psip0;
Это − конфигурация loopback-сети внутри нашего хоста, которая доступна без всяких сетевых адаптеров и кабелей. Заменим это на настройку реальной сети:
eth0 DP8390 0 { default; };
psip1;
Сохраним изменения.Настройка запуска демонов и параметров сетевого адаптераСнова войдём в монитор загрузки с помощью команды halt.
c0d0p0> servers=inet
c0d0p0> DPETH0=300:10
c0d0p0> save
c0d0p0> boot
Строчка DPETH0=300:10 задаёт параметры ethernet-адаптера: базовый адрес ввода/вывода и прерывание. Помните нашего старого друга?
NE2000-совместимые адаптеры обычно позволяют выбирать порты и прерывание в довольно широком диапазоне. На более старых адаптерах выбор делался с помощью перемычек. Мне «повезло»: на моём адаптере этот выбор делается при помощи специальной утилиты и сохраняется в NVRAM. На языке маркетинга это называлось “Plug and Play”.Если у нас нет ни утилиты, ни компьютера, чтобы эту утилиту запустить, остаётся только определять последние установленные параметры путём перебора, рассчитывая на то, что все остальные настройки верны.РезультатНо вот тернии преодолены, и наш ретрокомпьютер получает настройки сети по DHCP. Теперь мы можем передавать на него файлы по FTP и запускать команды через Telnet. Перед этим нужно установить пароль командой passwd, так как вход по сети без пароля невозможен.
При работе dhcpd на экране периодически появляется сообщение dhcpd: /dev/udp0: Invalid argument. Видимо, DHCP-сервер посылает нашему хосту такой запрос, которого он не понимает в силу своей ветхости. Но на работу сети в целом это не влияет.Обзор Minix 2 с позиции современного пользователяКогда вау-эффект от знакомства с экзотической системой и гордость от участия в сохранении исторического объекта проходят, начинаешь поневоле представлять примерные сценарии использования ретрокомпьютера в современной жизни. Пожалуй, на нём можно готовить документы в TeX или Markdown (если визуализировать результаты на принтере), или работать с почтой (без HTML, но это даже к лучшему), или чатиться в сети (по-олдскульному, через talk), или превратить в ПЛК для морганияуправления лампочками, или…Чего же не хватает построенной нами системе до того, чтобы быть юзабельной сегодня? Софта? Тогда что мешает нам собрать этот софт?Прежде всего, стандартным компилятором в Minix 2 является Amsterdam Compiler Kit − исторически первый набор компиляторов, ориентированный на использование с несколькими языками программирования и на нескольких целевых платформах (что сейчас называется “retargetable”). В Minix 3 он был заменён на Clang (LLVM). ACK поддерживается до сих пор, но выглядит он сегодня, наверное, довольно архаично. И я не уверен, что все его доработки за последние годы возможно портировать в Minix 2.Программы для Minix используют модель памяти с близкими ссылками, аналогичную той, которую DOS-разработчики называют малой (Small). Не всякий современный софт можно втиснуть в рамки 64K+64K. А чтобы использовать другие модели памяти, нужно доработать не только ядро и стандартную библиотеку (например, предусмотреть разные варианты alloc() и free()), но и тулчейн, то есть ACK. Возможно, проще будет перейти на другой компилятор, но тут нужно учитывать, что ни Clang, ни GCC не умеют генерировать код для защищённого режима 286.Ещё одно серьёзное ограничение Minix − отсутствие разделяемых библиотек − было устранено в версии 3. Как сообщили разработчики, размер каталогов /bin и /usr/bin при этом уменьшился в 10 раз. Правда, одновременно с этим поменялся и формат исполняемого файла: на смену a.out пришёл ELF. Но в других системах разделяемые библиотеки в формате a.out вполне себе существовали, так что и это ограничение принципиально преодолимо.Логгинг в Minix практически отсутствует. Вызовы логгера обычно очень загромождают код и снижают читаемость, так что я понимаю причину такого положения дел. Но на практике с этим нельзя так просто смириться.Что касается сети, то главное, что бросается в глаза современному пользователю − отсутствие протоколов, использующих шифрование, например, SSH или HTTPS. OpenSSL был в своё время перенесён на 32-битный Minix 2, но даже самые быстрые 286 явно не обладают достаточной вычислительной мощностью для таких алгоритмов. Тут дело исправит разве что аппаратный криптографический акселератор.Продолжение следует?Когда у меня выдастся свободное время, я попробую пособирать в Minix какой-нибудь сторонний софт, а также почитать исходники и прицениться к обозначенным проблемам. Если будет что написать, то появлюсь с очередной статьёй. Ну, а если пропаду, то не взыщите. А пока у меня всё. Спасибо за внимание!Полезные ссылки
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_staroe_zhelezo (Старое железо), #_retrocomputers, #_retrokompjuting (ретрокомпьютинг), #_286, #_minix, #_posix, #_igor_tonet (игорь тонет), #_staroe_zhelezo (
Старое железо
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 23-Ноя 01:41
Часовой пояс: UTC + 5