LINUX.ORG.RU

Выходим в интернет с minix-386 1.5.10

 , ,


5

4

Перечитывая, в очередной раз, книгу Линуса Торвальдства «Ради удовольствия: Рассказ нечаянного революционера» (Just for Fun: The Story of an Accidental Revolutionary) и всё больше погружаясь в историю раннего развития ядра Linux, начинаешь находить какие-то факты, на которые ранее совершенно не обращал внимание.

Вот, например, читая эти строки:

Мой эмулятор терминала обрастал наворотами. Я регулярно использовал его, чтобы подключиться к университетскому компьютеру и получить почту или поучаствовать в конференции по Minix.

Я мысленно спросил себя, а как это делалось тогда? Ведь в minix не было никакого сетевого стека (amoeba не в счет). Да, были попытки внедрения сети, и наверно, самый известный проект, это TNET, на основе которого уже был проект по поддержке сетевых карт, таких как WD8003, NE1000/NE2000, 3C503/3C509. Но, во-первых, Линус ничего не упоминал об этом (даже в Linux сеть появилась далеко не сразу), а во-вторых у него на домашнем компьютере просто не было сетевой карты, был только модем.

Хорошо, модем так модем. Но как с помощью него он подключался к университетскому компьютеру? Все достаточно просто (с точки зрения современных технологий) модем Линуса звонил на университетский модем и если он был свободен, происходил пшшш-шшш-дын-дын-пшш.. или modem handshake и если модемы устанавливали связь, оба модема переходили в режим передачи данных, со стороны «университетского сервера» запускался /bin/login, и пользователь авторизовывался там, вводя свой логин/пароль, тем самым попадая на сервер, прям как мы сейчас подключаясь по ssh. И уже на сервере, можно было и почту прочитать и в конференциях поучаствовать…

Но вернемся в наше время. С тех пор, как мне удалось в 86Box собрать minix-386 и в нём скомпилировать и запустить Linux версии 0.01 мне всегда хотелось выйти с него в интернет. Но 86box нет поддержки модема, только сетевые карты, но использовать сетевые карты, с вышеупомянутым TNET, мне не хотелось потому, по-первых, это был бы не канон, а во-вторых TNET у меня не заработал :) (возможно, просто из-за моей криворукости).

И вот, недавно, разработчики 86Box’а зарелизили фичу проброса серийного порта (serial port passthrough) на хостовую ОС и мои руки зачесались…

Первым делом, в настройках 86Box включил passthrough, я задействовал 2-ой com-порт (в minix это устройство /dev/tty2) с режимом Pseudo Terminal/Virtual Console и скоростью 2400 8n1. При запуске 86Box автоматически создать PTY-устройство /dev/pts/XX (у меня это было /dev/pts/19) и уже с этим файлом можно взаимодейстовать как с minix, так и с хоста. Ну, ОК, скажите вы, а что дальше-то, где модем? А модем будем эмулировать через modemulator программа на Go которая реализует небольшой сабсет АТ-комманд модема. Сам modemulator представляет из себя сервер, который при старте открывает tcp порты для работы на различных модемных скоростях, а после установление CONNECT’а, производит подключение по telnet на указанный хост.

Т.к. modemulator открывает сетевой порт, а со стороны 86box есть только pty, то пришлось задействовать socat для форварда данных между pty и tcp портом. Причем у меня не получилось напрямую пробросить /dev/pts/19 на tcp порт (localhost:10024), пришлось вначале socat’ом создать ещё одно устройство pty с пробросом на tcp, и уже потом cat’ами гонять данные туда сюда (см схему внизу скриншота). И в самом конце цепочки CentOS 7 c телнет сервером. Спросите зачем целая виртуалка с CentOS? По простой причине, она у меня уже была настроена.

Собственно, осталось только скомпилировать minicom v1.3.2 вот minix-386 уже попытаться дозвонится (верхний левый скрин). По факту, конечно, с компиляции minicom’а я и начал. В самом процессе компиляции нет никаких проблем, достаточно в Makefile убрать комментарии с флагов предназначенные для Bruce Evans’ bcc и закомментировать, соотвественно, PC Minix ACK compiler. Если всё происходит удачно, то можно попробовать запустить minicom в режиме конфигурации (-s), указать, что модем у нас находится на /dev/tty2 и сохранить как дефолтный конфиг. И потом запустить minicom! minicom отправит команду инициализации модема, но нашему эмулятору модема на неё всё равно, он просто отвечает ОК. И далее «звоним», набираем ATD4242. Когда эта команда прилетит на modemulator, то он откроет телнет соединение с сервером указанный в программе (в моем случаи на telnet://localhost:2323), где надо будет авторизоваться, и уже там можно и «получить почту или поучаствовать в конференции по…».

Но это всё текстовые протоколы, а как на счёт файлов? Линус же как то заливал свое ядро на ftp сервер ftp.funet.fi? А для этого в давние времена придумали протоколы xmodem/ymodem/zmodem + были альтернативные протоколы, такие как kermit и др. Чтобы залить куда-то файл, например по zmodem, необходимо было с одной стороны запустить программу по приему (rz, Receive ZMODEM), а с другой отправить файл через sz, Send ZMODEM. На втором скриншоте справа вы как раз и видите процесс передачи оригинального ядра linux-0.01.tar.Z на «университетский» сервер.

>>> Просмотр (1450x714, 94 Kb)



Проверено: hobbit ()
Ответ на: комментарий от gavrilovegor519

Учись, как должна выгладеть подобная статья. А перед этим научись читать внимательно. Человек этим занимался задолго до твоих скринов. Вдохновитель…

densss ★★★★★
()

как раз то, что я говорил про бедного энштейна и бесконечность

monkdt
()
Ответ на: комментарий от densss

имхо было бы интересно почитать как это делал сам Торвальдс и только

monkdt
()
Ответ на: комментарий от densss

Человек этим занимался задолго до твоих скринов.

Я, если что, видел тот скрин давно. Но это не отменяет того, что если бы не я, то он бы даже и не вспоминал про MINIX.

gavrilovegor519
()
Ответ на: комментарий от Extraterrestrial

Мне тоже такие посты нравятся. Я просто не умею правильно их готовить.

gavrilovegor519
()
Ответ на: комментарий от gavrilovegor519

Но это не отменяет того, что если бы не я, то он бы даже и не вспоминал про MINIX.

Боюсь спросить: динозавры не благодаря-ли тебе вымерли?

densss ★★★★★
()
Ответ на: комментарий от gavrilovegor519

В ОП-посте абсолютно по другому написано, самодовольный чудак

friedrich
()

Ладно уж, извиняюсь. Я не обратил внимание насчёт упоминания Just For Fun. Возможно, что просто совпало.

gavrilovegor519
()

Я не понял, астрологи что, объявили недели некромантии?

XOXO
()
Ответ на: комментарий от gavrilovegor519

Не удивлюсь, если я на это вдохновил. Спасибо за скриншот!

Какая хорошая новость! Приятно что хорошие вещи случаются.

ex-kiev
()
Ответ на: комментарий от ex-kiev

Извиняюсь конечно, но это НЕ я вдохновил. В самом начале текста идёт упоминание о книжке Торвальдса (Just For Fun), которого его и вдохновила. Просто совпало, что темы схожие.

gavrilovegor519
()
Последнее исправление: gavrilovegor519 (всего исправлений: 1)

Вот я думаю, стоит ли опять (уже надолго) самозабаниться, или нет? На разбан теперь не рассчитываю. Я понял, что ЛОР явно не для меня.

gavrilovegor519
()
Ответ на: комментарий от gavrilovegor519

Вот я думаю, стоит ли опять (уже надолго) самозабаниться, или нет? На разбан теперь не рассчитываю. Я понял, что ЛОР явно не для меня.

Да как так то???!!!

Господа ЛОР-овчане, мы теряем лучших из нас… Опять…

densss ★★★★★
()
Последнее исправление: densss (всего исправлений: 1)
Ответ на: комментарий от Clayman

Working state Abandoned Latest release 3.3.0[1] / 16 September 2014; 8 years ago

Abandoned. Не интереснее ли Embox ковырять например? Хотя, главное чтобы ТС получил радость

I-Love-Microsoft ★★★★★
()
26 июля 2023 г.

Отвечу себе из будущего…

Можно не городить огород с socat,modemulator,virtualbox и т.п. Есть решение проще. Нужно, со стороны хостовой ОС, запустить agetty, примерно так, где /dev/pts/9 - это псевдотерминал который создает 86box при запуске serial port passthrough:

DEV='9'
sudo agetty -o '-p -- \\u' --keep-baud 2400 pts/${DEV} vt100

И далее в minix запускаем minicom или вместо minicom можно и kermit, с примерным конфигом

cat .kermrc

set line /dev/tty2
set speed 2400
connect
OlegSL
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.