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)

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

Вот тащемто да. У меня уже идея есть: чтобы выпустили ту плату на «Эльбрусе», что на прошлой неделе мелкьала в новостях, достать старорежимный корпус от компактного 486 какого-нибудь, смастерить крепление под Mini-ITX в него, и сделать такой ретро-комп под старину. А в качестве монитора IBM какой-нибудь из конца 90х, 1280x1024. Может через пару лет и получится реализовать.

a_Sadducee
()

Ложку дегтя в бочку меда: некрофилия! нафига? Это же не только никому не нужно, это как восстановить счеты с костяшками от рыб.

Читая книгу о Линусе и Линуксе понял только одно: MINIX – ошибка, Таненбаум – ошибался )

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

яясно... видишь, меня сбило с толку, что уже давно функции MMU расширяются ОС (современное понятие virtual memory), поэтому я о существовании MMU даже успел забыть. то есть это проблемы чисто первых intel архитектур (я i286 помню хорошо на вид, но у меня доступа к ПК не было).

а будь у тебя SUN тех же годов, там был бы MMU.

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

Читая книгу о Линусе и Линуксе понял только одно: MINIX – ошибка, Таненбаум – ошибался )

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

некрофилия! нафига?

да, раз не было MMU лучше тогда какой-то VAX/SUN или что-то еще.

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

Наверное, Minix нельзя назвать неуспешным хотя бы потому, что он установлен на очень многих персональных и серверных компьютерах в составе Intel Me.

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

intel me использует linux - хотел сказать я, но... я был на их презентации... в районе 2010... плюс-минус... хотя нет... это была презентация по Intel Pro... - короче умный биос.

а важность миникса несомненна.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 2)
Ответ на: комментарий от Hangover

Сейчас на Model M спрос довольно высок, и денег они стоят немаленьких, увы.

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

У IBM PC был DIN-5 разъём чтобы с кассеты загружаться.

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

Осталось сделать сейф или ящик, который будет открываться с этого компьютера.

Лучше сразу бункер!

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

это как восстановить счеты с костяшками от рыб.

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

некрофилия!

Тебе осталось прочитать заглавие темы;)

Читая книгу о Линусе и Линуксе понял только одно: MINIX – ошибка, Таненбаум – ошибался )

MINIX для студентов конца восьмидесятых не ошибка. Другое дело что стоил он довольно дорого, ну так расчёт был на то, что закупать будут университеты.

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

Круто. Удивился, что Model 30 с 286 - думал, ошибка в номере модели, так как лет 30 назад немного пользовался такой, насколько я помню, с 8086. Внешне выглядела точно так же. Родной монитор с той был, если не ошибаюсь, VGA monochrome, белый на черном - не так стильно. На Wikipedia пишут «Model 30 had either an 8086 or 286 CPU». Значит, бывает.

в теории можно использовать VGA+MDA. Однако обычно программы для MS-DOS на это не затачивались

Многие отладчики умели использовать MDA как второй монитор. Некоторые игры выдавали туда отладочную информацию. Вот обсуждение:

https://twitter.com/Foone/status/1053729277156352000

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

раз не было MMU

Какой-то MMU есть и на i8086.

лучше тогда какой-то VAX/SUN или что-то еще.

Я не запрещаю. К i286 у меня просто особое отношение, это личное.

В i286 появляется защита памяти, а значит в теории может работать мультизадачная ОС. Пускать на нём MS-DOS это значит использовать его как просто быстрый i8086 без всего богатства возможностей GDT, IDT и task segment.

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

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

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

Дедушка Таненбаум расстроился, что интел его поделие заюзал и дедушке не отстегнул, вот и подзабил

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

Значит, бывает.

Там чуть ли не три модификации этой модели было, для тех что с i286 обычно пишут Model 30 286. В разных модификациях может отсутствовать жёсткий диск, но будет два дисковода для дискет. Мониторы по-моему тоже были и цветными, и gray scale, главное что стандарт VGA.

Многие отладчики умели использовать MDA как второй монитор

Я эту идею украл вот отсюда, там про отладчики было упоминание.

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

В толксах обсуждали.

Дедушка на пенсию вышел, скучно в этих ваших Нидерландах, тем более американцу.

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

С какого перепугу он американец? Да и выход на пенсию как бы наоборот, больше свободного времени для любимого миникса, не?

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

Читая книгу о Линусе и Линуксе понял только одно: MINIX – ошибка, Таненбаум – ошибался )

Это которая Just for Fun? Я из нее понял многое, но только не это. Minix задумывалась как учебная ОС, каковой и остается, и в своей нише наиболее известна. Микроядерная архитектура коммерчески взлетела в Symbian и QNX.

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

Ты его выступления слушал? Американский акцент трудно не заметить, когда он говорит. Да и википедия говорит, что

Born Andrew Stuart Tanenbaum

March 16, 1944 (age 76) New York City, New York, U.S.

Да и выход на пенсию как бы наоборот, больше свободного времени для любимого миникса, не?

Он в первую очередь профессор, а миникс лишь инструмент. Учить студентов не надо, следовательно, и инструмент можно забросить.

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

Микроядерная архитектура коммерчески взлетела в Symbian и QNX.

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

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

В i286 появляется защита памяти, а значит в теории может работать мультизадачная ОС.

ага, понятно)

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

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

Спасибо, интересно было узнать. И раз уж мы обсуждаем успешный успех, не стоит забывать, что ядра Windows NT и MacOS X гибридные. Таким образом:

  • Микроядра жизнеспособны.
  • Гибридные ядра жизнеспособны.
  • Монолитные ядра жизнеспособны.
Bagrov ★★★★★
()
Ответ на: комментарий от Bagrov

MacOS X

А кстати что там в основе, разве не какое-то open source микроядро? Или это раньше было?

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

Так-то можно и первые миниксы в монолитные записать, ибо основные сервисы хоть и вынесены в отдельные абстракции (в миниксе они называются заданиями), но исполняются в нулевом кольце защиты. По настоящему микроядром можно назвать разве что MINIX 3.

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

А сам дарвин разве не обёртка над микроядром? Ну как GNU Hurd обёртка над Mach.

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

А кстати что там в основе, разве не какое-то open source микроядро? Или это раньше было?

Стал выяснять. Да, всё так и есть: https://ru.wikipedia.org/wiki/XNU

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

Линус о микроядерной архитектуре и Миниксе:

"Мне это казалось глупым. Да, каждая отдельная часть получается простой. Но при этом их взаимодействие становится гораздо более сложным, чем при включении ряда сервисов в состав ядра, как это сделано в Linux...  Вот, например, что мне не
нравилось в Minix: если у тебя одновременно работает пять разных программ и они хотят прочесть пять различных файлов, эти задания будут выполняться последовательно. Другими словами, пять различных процессов пошлют файловой системе запросы: «Можно мне прочесть
файл X?» Демон файловой системы, который занимается чтением, примет один из них и пошлет ответ, потом другой – и так далее.
В Linux, где ядро монолитно, каждый из пяти процессов пошлет системный вызов ядру... Поэтому Linux работает намного быстрее и эффективнее."

Не поэтому ли у Макоси не микроядро, а гибридное? )

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

Вообще интересно стало, как с таким уровнем понимания вопроса, Linux вообще взлетел тогда. Если эти пять процессов захотят читать 5 разных (имхо, это важно!) файлов - то без особой разницы, напрямую они пошлют запросы, или через демона. Процессор тогда был одноядерный (i386 если не путаю), жесткий диск - IDE тогда вроде тоже были без кэша и запросы выполняли по очереди. Откуда разница в реальном быстродействии возьмется? Имхо, переключения контекста, даже если они будут иметь место в достаточных кол-вах, всё равно не будут заметны на фоне ожидания, пока HDD крутит блины и шуршит головами, вычитывая нужные сектора.

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

Сперва я решил, что укусивший Линуса пингвин Тукс был маркетологом. Затем обнаружил, что ты зачем-то выкинул фрагменты с техническими деталями, отчего оставшееся превратилось в маркетинговый текст:

  1. Зацепка.
  2. Боли.
  3. Решение.
  4. Benefit.

Вроде бы, уверенно и убедительно, а начинаешь задумываться – получается, что в огороде – бузина, а в Киеве – дядька. Купюры в цитатах допустимы, но при этом надо следить, чтобы цитируемый не менял позицию и не терял лицо. Пусть и не нарочно, но получилось так, что твой Линус пытается продать свое ядро, прельщая наукообразностью и напирая на магическое мышление. @DummyBoy, чтобы не бить себя по лбу, восклицая: «Non sequitur!», читай книгу полностью.

Не поэтому ли у Макоси не микроядро, а гибридное? )

Видимо, не поэтому. Скорее всего, микроядро попросту сложнее и дороже в разработке, поэтому корпорации от него отказываются. При этом производительность QNX хвалят на каждом углу. То есть, проблемы Minix – проблемы конкретной реализации.

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

получается, что в огороде – бузина, а в Киеве – дядька.

Ну вы тут спорьте не со мною, а с Торвальдсом ) Я лишь могу спросить, глядя на стройный ответ и использованные в нем слова,: вы понимаете логику происхождения фразы про «бузину» и «дядьку»? Ну в том смысле почему эти слова, а не другие… разберем хотя бы это.

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

Это он написал в каком году? Мы вообще-то L4 обсуждали, там IPC эффективнее, чем в MINIX.

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

Так с настоящим Торвальдсом мне не о чем спорить: да, у него есть позиция, но он не максималист, как некоторые его апологеты. Торвальдс-маркетолог на ставке $400 в месяц никогда не существовал и возник случайно. С вами, видимо, тоже спорить не о чем. Фраза про бузину и дядьку означает, что желаемая или предполагаемая связь отсутствует и не прослеживается. Откуда она произошла – понятия не имею.

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

но он не максималист

он-то, как раз, максималист

С вами, видимо, тоже спорить не о чем.

я с вами и не спорил, и не буду.

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

полное непонимание! не обязательно лезть в Интернет, чтобы понять фразу, которой вы оперируете. Связь между «бузиной» и «дядькой» несомненно есть.

Вот эта склонность бросаться словами и фразами, которые имеют мало смысла, выдает спорщика именно в вас. А ведь слова, как и код – не любят небрежности…

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

он-то, как раз, максималист

Кому-то максималист, кому-то – нет. man парадокс лысого.

я с вами и не спорил, и не буду.

Так не будешь, что аж на личности перешел.

полное непонимание! не обязательно лезть в Интернет, чтобы понять фразу, которой вы оперируете. Связь между «бузиной» и «дядькой» несомненно есть.

Этимология не определяет современные значения слов и фразеологизмов. Ты же не срываешь покровы, что «my wife» этимологически – «моя баба», а «woman» – «бабочеловек», всякий раз, когда видишь эти слова?

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

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

powerguy ★★★
()

своё заслуженное место в одном из разделов Специальной олимпиады

Уж и тег бы мог установить специальная олимпиада, благо можно ещё один добавить.

greenman ★★★★★
()

плюс защищённый режим с его плюсами (ну и минусами тоже, об этом чуть позже)

Или я не заметил или это имелось в виду в следующей теме (не в этом топике)

Просто интересно, а ответа какие минусы не увидел. Ну или мне не хватало компетенции их увидеть в тексте.

В любом случае, спасибо за увлекательную историю.

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

Просто интересно, а ответа какие минусы не увидел

Он сложный, да и даже для одной архитектуры IBM PC-compatible приходится реализовывать разные методы включения линии A20, плюс на i286 нельзя быстро вернуться в реальный режим.

В любом случае, спасибо за увлекательную историю.

Всегда пожалуйста!

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

Дизайны доисторических компьютеров просто прекрасны

Согласен

Спасибо за чудесный пост.

Не за что!

luke ★★★★★
() автор топика
26 февраля 2021 г.
Ответ на: комментарий от pingvinek

Пока так. 3 ISA слота — не разбежаться особо. Есть мысль найти какую-нибудь звуковуху с IDE, и прицепить к ней CF, а EEPROM посадить на сетевуху.

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