LINUX.ORG.RU

MINIX-NE

 , , ,


8

4

Привет, ЛОР.

В посте полугодичной давности я рассказал о том, как я возился с монохромным монитором от МежДелМаша, подключая его к IBM PS/2. Теперь же я хочу поделиться с вами совсем-таки недавним моим успехом уже софтверного характера, впрочем всё так же занимающим своё заслуженное место в одном из разделов Специальной олимпиады, а именно, — я модифицировал древний MINIX 1.7.5 под нужды своего компьютера, дабы использовать все основные возможности железа. Но начну я своё изложение всё-таки с описания характеристик, ибо именно оно является основным лимитирующим фактором.

Итак, на фото один IBM 8530 (PS/2 Model 30 286) со следующими параметрами

  • Процессор от SIEMENS, клон Intel 80286, 16-bit
  • Память 1 Мб (разбита на 640k+384k)
  • VGA на материнке
  • PS/2 клавиатура и мышь
  • Три ISA слота (мне повезло не возиться с MCA)
  • Compact Flash XT Lite adapter rev 4.1
  • Ethernet от SMC (WD8390 совместимая карта с RJ-45 и BMC)
  • EGA видеокарта от ATI с поддержкой MDA и CGA режимов

Делловский монитор подключён к VGA из материнки, а вот с монохромным монитором пришлось повозиться, сделав переходник с MDA DB-9 на DB-15, плюс выцыганить питание с разъёма для флоппи, ибо IBM решили убрать молексы из дизайна, и запитывать диски с материнки.

Ситуация с подключением двух мониторов довольна нестандартна для конца 80х, однако именно для этой цели адресное пространство у монохромного адаптера и у цветного графического (от которого наследуется текстовый режим VGA) разные, а значит в теории можно использовать VGA+MDA. Однако обычно программы для MS-DOS на это не затачивались, и профита от такой схемы для меня не должно было быть, если бы не…

Если бы не старый MINIX. Версии вплоть до 2.0.4 позволяли в теории запустить полноценный UNIX даже на IBM PC XT с 640k RAM. Однако же найти подходящую именно для меня конфигурацию MINIX оказалось задачей трудной. Я перебрал сначала версию MINIX для MS-DOS, но 1 MB памяти для неё было явно мало (что и не удивительно, ведь MINIX для DOS создаёт виртуальный диск в RAM). В итоге я смог установить в QEMU MINIX 1.7.5 на один из разделов Compact Flash, и потом даже запустить уже на самом PS/2.

Правда, путь к первой введённой в терминале команде был тернист. Во-первых, MINIX подвешивал клавиатуру при загрузке. Причину удалось установить, загрузившись в режиме совместимости с i8086, откуда подозрения сразу пали на злосчастную линию A20, которая управляется контроллером клавиатуры в AT-клонах для совместимости с i8086. В исходном коде kernel/klib88.s A20-линия выставлялась в соответствии с мануалами, вот только оказалось, что для IBM PS/2 появился специальный контроллер для управления A20, а посему код для ядра пришлось сразу же патчить. По итогам доступная память с 640k в режиме совместимости увеличилась до установленной памяти в 1 MB, плюс защищённый режим с его плюсами (ну и минусами тоже, об этом чуть позже).

Следующим шагом было реализации возможности работать одновременно в двух виртуальных tty, используя два монитора. В коде kernel/console.c такой абстракции как монитор или экран не было, поэтому пришлось долго провозиться с возникающими гонками за внутренние переменные, однако усилия были вознаграждены, и теперь я мог например вывести на один экран какой-нибудь man, и параллельно редактировать файл на другом, переключаять по Alt-<- Alt–>.

Ещё одна из проблем оригинального MINIX — он отказывался работать с CF-XT адаптером. Одно время я был удовлетворён работой драйвера, который вызывает функции BIOS int 13h через аппаратный сброс, пока я не захотел наконец-то разобраться с сетевым драйвером (благо он как раз для WD8390 совместимых карт уже был в исходниках). При включении Ethernet в параметрах ядра загрузка зависала на моменте инициализации драйвера диска (забавно, не правда ли?) Вместо того, чтобы пофиксить баг, я решили подойти к вопросу радикально и переписать стандартный драйвер IDE контроллера, чтобы он стал поддерживать CF-XT-lite. И это было увлекательно. Главной подсказской для меня стала принципиальная схема адаптера, потому что сходу отображение адресов CF на шину не гуглилось, и оказалось, что не на все вопросы необходимо искать ответ в Интернете, тем более когда достаточно просто взглянуть глазами на схему платы. Конечно, документация к CF и исходники XTIDE BIOS мне тоже помогли. В процессе переписывания драйвера в момент, когда я наконец-то разобрался с адресами, и драйвер стал идентифицировать устройство, я умудрился несколько раз испортить корневой раздел, но спасали бэкапы и Linux, который до сих пор поддерживает старую добрую MINIX FS.

Как итог: старый MINIX прекрасно себя чувствует на старой же машине с 16-bit разрядностью и 1 MB памяти, при этом позволяет выходить во внешний мир с помощью telnet и ftp и поддерживает мультизадачность. Сейчас я ковыряюсь с httpd сервером, который уже скомпилировался и запускается, но пока возвращает только 403 и 404 (причём делает это он секунд за пять, если не медленнее). Остались ещё мелкие недочёты по типу не работающего SIGTERM по Ctrl-C и мигающего сразу в двух экранах курсора (это сбивает с толку, потому что не знаешь, на какой экран сейчас перенаправлен ввод). Из глобального хочется сделать frame buffer хотя бы для VGA, а то и для обоих мониторов (попробовать видеокарту ATI в режиме Hercules). Другая возможная ветка развития — создание дистрибутива для старых компов и эмуляторов типа даже pcjs.org, чтобы у энтузиастов была возможность попробовать настоящий UNIX на своём ретро железе.

P.S. Да, чуть не забыл. На фото на левом мониторе telnet на какую-то из BBSок, на правом — стандартные UNIX команды и вывод кусочка ядра на экран.

>>> Просмотр (4000x3000, 4288 Kb)

★★★★★

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

Ответ на: комментарий от kirill_rrr

О боже, если бы эти люди занимались не некрофилией, а разработкой видеодров под проблемное современное железо…

Разрабатывай, я разрешаю.

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

Мсье редкий извращенец, фап-контент на монохромном зелёненьком мониторе крутить!

Ещё и в ASCII, я думаю наш паскалевед бы одобрил.

А картинки на втором MINIX чем-нибудь показывать умеет?

Ну во-первых у меня первая версия. А во-вторых увы, не умеет. Но я работаю над этим!

luke ★★★★★
() автор топика
Ответ на: комментарий от Harald

На ютубе есть один буржуй, у которого я подсмотрел идею двух экранов для старых персоналок, так вот он там по-честному соединял три машины из трёх эпох разной раритетности.

luke ★★★★★
() автор топика

А комп и монитор исправные были всю свою жизнь или таки электролиты перепаивать пришлось?

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

Сила уберегла от этого. Монитор пришлось настраивать, там регуляторы параметров находятся внутри рядом с катодом, было страшновато.

luke ★★★★★
() автор топика
Ответ на: комментарий от Harald

Печалька. У меня на работе есть второпень, он даже запускался. Самое крутое там это слот под процессор.

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

крутое
слот под процессор

Взаимоисключающие параграфы. Нет, когда я покупал себе свой первый собственный комп в 1998, я облизывался на эти слоты, но они мне были не по карману. Но, если посмотреть на них с высоты 21го века, то это же просто временный паллиатив, из-за того, что слишком большая отбраковка кристаллов кэша была на этот конкретный момент времени.

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

то это же просто временный паллиатив, из-за того, что слишком большая отбраковка кристаллов кэша была на этот конкретный момент времени.

и как слот эту проблему решал?

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

Я предлагал только gopher-ссылки. Чтобы по ним можно было ходить из lynx'а без копипаста из браузера.

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

Кэш находился на другом кристалле, чем проц. То есть берётся исправный кристалл проца, исправный кристалл кэша, и собираются на плате, которая уже вставляется в слот. Если делать общий кристалл, как с более поздним S370, то слишком велика была бы общая отбраковка чипов, соответственно, слишком большая цена.

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

Не знаю, и в ноябре, и в феврале видел на дорогах Краснодарского края тренирующуюся велокоманду Astana Pro Team. Видел и других. но у тех ливреи для меня незнакомые, может из тех, кто уровнем пониже.

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

Мсье редкий извращенец, фап-контент на монохромном зелёненьком мониторе крутить!

В те времена интернет-прон был текстовым, а ему монохром не помеха

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

А это точно второпень?

Хотя я вот не шарю в i686, у меня первый был вообще i486, а второй Cyrix M II, по сути Pentium MMX на седьмом сокете.

luke ★★★★★
() автор топика
Ответ на: комментарий от pinachet

Осенняя хандра везде в наших широтах.

luke ★★★★★
() автор топика
Ответ на: комментарий от Crocodoom

На ноутах бы сейчас такие делали.

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

Необычно — это серверы на i80486, где в ISA-подобные слоты (чисто внешне, внутри, само собой, ничего общего) ставились платы либо с процессором, либо с планками памяти, что составляло многопроцессорный сервер.

gremlin_the_red ★★★★★
()

Очень тепло, уютно и душевно. Вспоминаю себя пятнадцатилетней давности, копавшегося в купленных на разборке 386х и Pentium’ах.

Вот все-таки скучаю по десктопам горизонтальным, и старым пузатым CRT-мониторам. Хотя бы в силу дизайна - сейчас такого угловатого и лампового нигде и ничего нет. Хотя могли бы сейчас умельцы сделать типа пузатый моноблок с изогнутым LCD экраном и удобной рашсиряемостью, с механической клавой и закосом под 90-е. Ан нет.

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

Вот все-таки скучаю по десктопам горизонтальным

На них можно сверху водрузить монитор! Вообще вроде как DELLы выпускают рабочие станции, правда чёрного цвета (а все мы скучаем по тому самому желтеющему на солнце бежевому).

Я вот подумывал было вместо LCDшного делла купить с рук какой-нибудь VGA монитор от IBM, желательно как раз из PS/2 серии, но места он будет занимать как монохромный, да и стоят такие не совсем уж мелочи. А уже даже на всякие Flatronы денег совсем жалко, у них нет никакого шарму для таких старичков (хотя вот для игр наверное как раз имеет смысл их брать).

А вертикальность ещё с серии PS/2 пошла, старшие модели (сервера) были как раз-таки вертикальными. Но всё так же угловатые.

luke ★★★★★
() автор топика

Сильный и настоящий just for fun.

greenman ★★★★★
()

дроч знатный, но зачетный!

Rastafarra ★★★★
()

Ethernet от SMC (WD8390 совместимая карта с RJ-45 и BMC)

охохо, я даже подзабыл эту аббревиатуру (ВМС). сколько же мата вылетело невзначай, забывая отпустить «землю» чтобы поправить коннектор.

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

Старорежимный, видать, мужик, привык как по клавишам пишмашинки долбить со всей силы. Наверно так свои скилы прокачал, что пальцем клавиатуру пробить может. Как настоящий советский каратист. :-)

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

сорри, я туплю. ОС же предоставляет уровень абстракции для прикладного ПО, разве она не может это маскировать?

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

Старорежимный, видать, мужик, привык как по клавишам пишмашинки долбить со всей силы.

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

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

Какой же юникс без игоря?

Но я не проверял на самом деле.

luke ★★★★★
() автор топика
Ответ на: комментарий от Harald

BNC, да, глаза слипались когда писал.

luke ★★★★★
() автор топика
Ответ на: комментарий от crypt

Зависит от возможностей процессора.

В i386 реализованы страницы, и ОС отвечает за то, как транслируются логические адреса в физические, но в рамках ограничений процессора, то есть 4 ГБ на сегмент.

В i286 ОС управляет сегментами, но внутри сегмента адресные пространства транслируются один в один в физические.

Можно предоставить абстракции как в i386, но это будет эмуляцией.

luke ★★★★★
() автор топика

Вот так всегда: делаешь сайт для своего факультета (11 лет назад), пишешь на bash парсер HTML (шесть лет назад), автоматизируешь хождение на трафик-шейпер при помощи expect (пять лет назад), тихо и незаметно изучаешь Python (последний год), придумываешь идеи для своего софта (тоже последний год) – а тут приходит @luke и показывает настоящий низкоуровневый хардкор.

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

Ламповому монитору ламповый уют.

luke ★★★★★
() автор топика
Ответ на: комментарий от curver

Спасибо. Усилия особо были незаметны, потому что в процессе решения задачи очень сложно оторваться.

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

luke ★★★★★
() автор топика

Увидел это фото и заплакал … старый я стал.

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

У меня клавиатура до сих пор такая - PS-овская, но марка Mitsumi, очень удобная и крепкая, привык не могу на другой, бью по энтер, аж карандаши со стола улетают.

Hangover
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.