LINUX.ORG.RU

Сообщения OlegSL

 

Blackdown Java 1.0b - возможно самая ранняя версия Java под Linux

Не знаю, как вы, но мне нравится ранняя история ядра Linux и программ, которые его окружают. Я лично мечтаю когда-нибудь найти потерянные версии ядра linux-0.02 и linux-0.03. И одно из мест, на котором оно может случайно оказаться – это archive.org. Среди каких-нибудь архивов/бэкапов, которые люди записали и выложили на сайте.

И вот, когда я рассматривал один из образов компакт-диска, мне попадается на глаза папка JAVA, а в ней… ну собственно, заголовок вы уже прочитали. На диске было 2 архива и HowTo в различных форматах из которого следует, что в архивах сама Java и браузер ее апплетов HotJava. Документ датирован 10.12.1995 и имеет версию 1.0.

Этот порт Java под Linux делала не сама Sun Microsystems (они это сделают только в релизе 1.2), а по большей части, волонтер Randy Chapman, подписавший с Sun соглашение, по которому ему были предоставлены исходные коды. Позже к нему присоединятся другие волонтеры, которые будут портировать все последующие новые версии Java.

Начиная с версии 1.2 Sun сама сделает поддержку Linux (x86), но команда blackdown.org продолжит выпускать версии JDK даже под те платформы, которые сама Sun, на тот момент, не поддерживала (PowerPC, SPARC). И по некоторым источникам эти порты работали быстрее, чем аналогичные от Sun. Последнии версии, которые успела выпустить Blackdown Linux, это 1.4.2 для i386/AMD64 и 1.3.1 для PowerPC. Работа над Java 5 (1.5.x) были анонсирована, но так и не были завершена…

Но вернемся к нашему скриншоту. Запустить Java я решил в Caldera Network Desktop (CND). Во-первых, раз Java имеет проприетарную лицензию, то пусть и дистрибутив тоже будет проприетарный. А во-вторых, Caldera у меня осталась со предыдущего скриншота. Разумеется данный порт Java может работать не только CND, но также и в RedHat/Slackware, хотя Caldera тоже поддерживается (что неудивительно, ввиду её родства с RedHat).

Во времена первых версий Java, компания Sun делала ставку на развитие и распространение технологии Java Applet и всячески продвигала эту технологию. В комплекте с JDK, помимо компилятора, был ещё и браузер апплетов HotJava и множество примеров показывающие их многогранную функциональность. Анимация, поддержка различных шрифтов и цветов, есть даже поддержка подобие 3D (скорее 2.5D), но, как мы знаем технология апплетов не получила широкого распространения, возможно из-за того, что сама Sun с версии 1.2 ударилась в enterprise-сегмент, где до сих пор занимает внушительную часть рынка, а возможно не выдержала конкуренцию с другими технологиями, такими как Flash. Кстати, в CND, в комплекте с дистрибутивом идёт проприетарный редактор CRISP. И в нем есть поддержка подсветки синтаксиса, но конкретно java он не поддерживает.

Кроме поддержки в инструментах от самой Sun, поддержку апплетов добавили в веб-браузер Netscape 2.0b3, о чём сообщается на титульной странице при старте браузера (нижний левый угол). Апплеты в Netscape работают примерно также, как в HotJava, но периодически падают, то ли из-за багов в самом браузере, то ли из того, что работают в виртуальной машине…

И завершить мне хочется скриншотом другой проприетарной программы – Adobe Reader 3.0, в которой открыта одна из полезных (на тот момент разумеется) книг – книга Laura Lemay от издательства Sams.net “Teach Yourself. JAVA in 21 Days”, в которой предлагалось выделять по одному дню на каждую из 21 главу книги. Оставим за скобками оптимистические сроки авторов (ведь всё же видели мем по 21 день С++…), тем не менее книга полезная и на момент написания HowTo была лишь пара-тройка книг, в которых в лучшем случае описывался API языка. Adobe Reader 3.0, тоже одна из первых версий под Linux, но появился он немного позже, чем сегодняшний герой, осенью 1996 года.

P.S. Ссылка на blackdown java 1.0beta

>>> Просмотр (2048x1536, 337 Kb)

 blackdown java-linux, , ,

OlegSL
()

Caldera Internet Office Suite

Однажды разбирая старые компакт-диски, на глаза попались, мои самые первые диски, купленные в конце 90-х годов. Зачем я их тогда покупал уже не знаю, ведь сам компьютер у меня появится только в 2001 (спасибо родителям!), что ними хотел… Наверно затем, чтобы через почти 30 лет я написал этот пост :). На одном из этих дисков с офисными программами обнаружил папку LINUX/CAL_OFFS.LIN, а нем файлик readme c любопытным описанием:

Caldera Internet Office Suite (IOS)
15-April-1996
Caldera, Inc.

This suite includes the following applications:
+ Corel's WordPerfect 6.0 Word Processor
+ GLOBEtrotter's FLEXlm License Management
+ Metro Link's Motif 1.2.4 Executive Libraries
+ NCD Software's ZMail Electronic Mail
+ XESS' NExS Spreadsheet

Да проприетарное ПО. Да, та самая Caldera, но мне стало любопытно и мне захотелось на это посмотреть.

А чтобы было максимально аутентично («как тогда») решил поставить их на Caldera Network Desktop 1.0. Сама ОС поставилась без всяких приключений, разве, что в эмуляторе 86Box этот процесс занял около 40 минут, однако и в те года, она примерно столько же и занимала. Понравился установщик LISA. С коробки заработала сеть (NE2000), видеокарта (gd5426), мышь (Microsoft Serial). Единственное на что пришлось потратить время, это на настройку X11, но благо, у меня уже был заготовлен конфиг.

После установки ОС уже поставил пакет с героями нашего скриншота. Текстовый процессор Corel WordPerfect, редактор таблиц NExS, почтовый клиент Z-Mail, а также с диском ОС шел Netscape 2.0. Браузер работает и по сей день (разумеется только для протокола http).

Caldera Network Desktop (CND) так и не получила продолжения и прекратила своё существование в 1997 году. За CND последовал Caldera OpenLinux, который уже продержался около 5 лет, последний релиз который был 3.1.1. А что до офисного пакета Caldera IOS, он похоже, как и CND не получил распространения. Моё ИМХО из-за цены в 299$ (хотя были различные скидки), но возможно были и другие причины.

>>> Просмотр (2048x1536, 255 Kb)

 , , nexs, , z-mail

OlegSL
()

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

Перечитывая, в очередной раз, книгу Линуса Торвальдства «Ради удовольствия: Рассказ нечаянного революционера» (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)

 , ,

OlegSL
()

MouseLess Commander v0.4 - ранняя версия Midnight Commander

После того, как мне удалось откомпилировать и запустить ядро Linux 0.01 и пока меня не отпускал «упорин», решил посмотреть на другие ранние программы, которыми мы пользуемся и по сей день. После недолгих поисков подходящего кандидата, выбор пал на MC.

Первая публичная версия mc, о которой достоверно известно - это была версия 0.3 выпущенная весной (апрель) 1994 года. Ранее старые версии можно было скачать с FTP http://woland.afti.nsu.ru/pub/source/mc/old/, но сейчас по этой ссылке 404. Если тут есть коллеги с НГУ и у вас есть архивные копии того FTP, пожалуйста пишите мне я собираю подобный артефакт… :)

MC первоначально разрабатывался студентами Национального университета Мексики Мигелем де Икаса (Miguel de Icaza) и Маурисио Пласа (Mauricio Plaza). Вначале парни просто упражнялись в изучении языка C. Но проект набрал обороты (возможно, благодаря популярности GPL в это время) и впоследствии даже пережил уход первых разработчиков, и как показала история, и других maintainer’ов.

Как вспоминает сам Мигель де Икаса, он разрабатывал mc под Sun, просто потому что он был быстрее, чем убогий PC. Но предназначался он для Linux! В те времена MC, переводился как MouseLess Commander (так написано в документации), но с названием, я думаю не всё так однозначно. Выскажу свою теорию, как исвестно, парни изначально разрабатывали клон Norton Commander Джон Соха они даже не скрывали это и об этом прямо писали в README:

The MouseLess Commander is a directory browsing tool with a very close look and feel to John Socha’s Norton Commander for DOS. The MouseLess Commander doesn’t have all the bells and whistles of his DOS counterpart, but was written in only 24 days on a Linux box.

и во всех исходных кодах присутствует префикс nc, а если утилиту откомпилировать, то mc вы не найдете, а найдете nc. Но когда авторы решили опубликовать код, то тогда и придумали это название, взяв вместо n следующую букву латинского алфавита.

Начальные версии 0.3 были крайне примитивными (вообще не было функциональности Ctrl-U, F2, F3, F4). Функции F5, F6 были реализованы через системные команды. Пользовательское меню (F2) было добавлено в версии 0.4 (он на скрине), но минимальный базис был уже тогда.

Со временем, авторы переписали внутренний вьювер (в версии 0.5), добавили возможность указать стартовые директории nc /usr/local/bin /tmp (в версии 0.6), а в версии 0.9 добавили поддержку мыши :) после которого, первоначальное название стало не актуальным и mc стал Midnight Commander’ом.

P.S. В качестве хостой OS использовался стоковый slackware 2.0.1 на ядре Linux 1.0.9 и всё это работает в эмуляторе 86box.

>>> Просмотр (1440x800, 70 Kb)

 ,

OlegSL
()

linux-0.01 скомпилированный в minix-386 и запущенный в эмуляторе 86box

Я люблю старые программы, мне нравится их изучать и смотреть как они развивались, и во что они сейчас превратились или умерли так и не дожив до современных дней. И по той же самой причине, мне нравится смотреть различных авторов Youtube каналов посвященные ретро тематике в котором авторы рассказывают о корнях программ, игр, приставок или старых компьютерах. И на волне этого, мне захотелось попробовать собрать и запустить, что-то относительно старое, но которое живет и развивается до сих пор. Мой выбор пал на первую версию Linux, версии 0.01.

Те кто знаком с историй создания Linux и её ранних дней, знают, что она писалась Линусом Торвальдсом на 386 машине на которой работала пропатченнная версия Minix 1.5. И не смотря на, то, что есть проект (и не один) позволяющий скомпилировать linux-0.01 на современных версия компиляторов мне же хотелось побыть немного в шкуре самого Линуса и самому собрать ядро в ее родной среде, а именно в Minix и древними версиями GCC.

Те, что интересуется подобной историей (да или просто пользуются гуглом), знают, что такое уже проделывали многократно (посмотрите хотя бы сайт oldlinux.org), но я хотел сделать это всё сам. И вот вооружись энтузиазмом, эмулятором 86Box, старыми версия ПО (многие их которых взяты с вышеупомянутого сайта), а главное ядра Linux, я пошел по стопам Линуса, ну или почти по стопам… :)

Первым делом необходимо было установить классический 16-битный Minix 1.5.10 (верхний левый скрин). При наличии дистрибутива (17 дискет), а также Reference Manual делается это не сложно. Просто необходимо внимательно читать manual Танненбаумана. Единственное замечание по установке в эмуляторе 86Box, так это то, что необходимо в настройках эмулятора (и BIOS) выставить тип 360к для 5 1/4 дисковода, иначе Minix сможет грузится с загрузочной дискеты, но root’овую уже не увидет.

Далее необходимо очень внимательно следовать прекраснейшему руководству от Джона Наллома по превращению в minix-386. На этом этапе каких-либо подводных камней нет (опять же внимательно читаем), единственное необходимо установить тип 1.2M для 5 1/4 дисковода. Также необходимо будет перекомпилировать все бинарные файлы в /bin и /usr/bin. В самом руководстве Джон компилирует только часть их них (сам Брюс Эванс в README на bcc писал, что достаточно только sh :) ). Я же перекомпилировал почти всё.

Затем качаем и ставим готовый компилятор GCC 1.37.1 от Alan W Black’а. Нужно как минимум 3 архива с самим gcc, библиотеками и заголовочными файлами. Главное, ОБЯЗАТЕЛЬНО, необходимо пропатчить ядро Minix (kernel) иначе при компиляции ядра Linux, получите сообщение, что-то типа fp stack overflow.

Ну и под финал всего это необходимо скомпилировать сам Linux-0.01. Линус писал, что он использовал пропатченный им же gcc-1.40 c поддержкой -mstring-insns, но он также писал, что возможно подойдет 1.37.1 и да, им можно скомпилировать ядро Linux. Нужно только убрать вышеупомянутую опцию из нескольких Makefile (об этом писал Линус), а также отредактировать под себя boot.s (под нужный тип дискеты) и include/linux/config.h (параметры жесткого диска). Плюс в Makefile надо добавить путь до gnulib (об этом тоже писал). О чем Торвальдс не писал, так это то, необходимо в Makefile добавить команду конвертации бинарного файла в формат, который мог бы исполняется на Minix-386 (на нижнем левом скрине эти команды можно увидеть). Линус не делал подобной конвертации и могу предположить, что у него был патч который позволял запускать бинарные файлы gcc нативно (aka gnutoo).

Осталось только подготовить свободный раздел жесткого диска, создать несколько устройств в /dev и /bin скопировать bash (+ сделать ссылку на sh) и update. Запись ядро на дискету и как писал Линус «Use the three-finger-salute to reboot you machine».

>>> Просмотр (1440x800, 58 Kb)

 , linux-0.01, ,

OlegSL
()

RSS подписка на новые темы