История удивительной операционной системы MenuetOS




Идея разработки миниатюрной ОС с оконным графическим интерфейсом, построенной по принципу «вся система на одной дискете», появилась, наверное, одновременно с этими самыми дискетами. Попытки запихнуть компактную операционнку c GUI на съемные носители предпринимались и в девяностые, и в двухтысячные. Одной из таких попыток, со временем превратившихся в серьезный проект, который дожил до наших дней, стала созданная фактически на голом энтузиазме MenuetOS. Эта система отличается от других подобных «стартапов» и замыслом, и используемыми технологиями, и архитектурой.

Немного истории


Большинство «миниатюрных операционок», появившихся на свет в последние два десятилетия, изначально позиционировались, как любительские или учебные проекты, и потому многие из них оказывались свернутыми прежде, чем успевали «набрать обороты». Другие же со временем перерастали в серьезные разработки, поддерживающие широчайший спектр оборудования и предлагающие пользователям богатый ассортимент прикладного программного обеспечения. Однако практически все подобные продукты имели, пожалуй, одну характерную общую черту: их архитектура в той или иной степени разрабатывалась на основе исходного кода уже существующих операционных систем, поставляемых на условиях универсальной лицензии GPL, то есть, как правило, на ядре GNU/Linux.

Подобный подход, в общем-то, вполне оправдан: зачем изобретать велосипед и пытаться создать нечто принципиально новое с нуля, когда можно просто переработать под собственные потребности готовые компоненты ОС, самостоятельно дописав лишь те элементы системы, которые жизненно необходимы именно для данной ее реализации? В этом случае не только заметно экономится личное время разработчика, но и сохраняется привычное для конечного потребителя окружение, что позволяет ему быстро освоиться с новой системой без необходимости долго и мучительно переучиваться.

Тем не менее, слава талантливого финна Линуса Торвальдса, похоже, все еще не дает покоя многим и многим одаренным программистам. Возможно, именно эта слава подвигла земляка Торвальдса, гражданина Финляндии Вилле Турьянмаа (Ville Turjanmaa) заняться на рубеже тысячелетий разработкой собственной ОС с оконным графическим интерфейсом, исходный код которой он решил написать на 32-битном ассемблере для x86.

image
Одна из первых версий MenuetOS

По словам самого Турьянмаа, идея родилась в тот момент, когда он заметил, что изначально созданные на C или C++ компоненты Linux, будучи переписаны на ассемблере, приводят к увеличению быстродействия системы в среднем на 10 — 40 процентов. Решив построить принципиально новую платформу, основными критериями для которой являлись бы компактность и быстродействие, Турьянмаа взялся за дело, и уже 16 мая 2000 года он успешно провел «полевые испытания» операционной системы MenuetOS (сокращенно — MeOS), которая тогда была полностью совместима лишь с его собственным домашним компьютером.

Я впервые услышал о разработке «горячего финского парня» Вилле в 2002 году. Без долгих раздумий я скачал с русскоязычной странички проекта http://menuet.narod.ru дистрибутив MeOS, протестировал его, и тут же написал о новинке развернутую статью в журнал «Магия ПК», где в те времена работал заместителем главного редактора. А ОС и впрямь была примечательная, так что рассказать читателям было о чем.

image
Так когда-то выглядела MenuetOS — картинка из 2002 года

Несмотря на свои скромные размеры, MeOS оказалась вполне современной 32-битной многозадачной операционной системой с простым и удобным оконным интерфейсом. Она использовала низкоуровневый API, вытесняющую многозадачность, многопоточность и поддерживала файловую систему FAT32. Последнее обстоятельство показалось мне важным достоинством MeOS, поскольку, во-первых, не вынуждало пользователя возиться с какой-либо диковинной разметкой дисковых разделов, а во-вторых, позволяло работать с файлами на компьютерах, где в те времена помимо новомодной Windows XP все еще царили Windows 98 и ME, для которых файловая система FAT32 была роднее некуда.

Скромными оказались и аппаратные требования. Для запуска MeOS был необходим компьютер с процессором не ниже Intel 80386, рекомендовалось наличие 32 Мбайт оперативной памяти (нижний предел — 4 Мбайта), также годилась любая EGA, VGA или SVGA-видеокарта. В случае использования SVGA-адаптера требовалась плата, оснащенная минимум 1 Мбайт видеопамяти и поддерживающая стандарт VESA 1.2, VESA 2.0, или VESA 3, что принципиально позволяло получить на экране изображение разрешением 1280x1024 пиксела. MenuetOS умела работать с жесткими дисками, использующими протокол LBA, распознавала любую модель мыши, совместимой с Microsoft или Logitech Mouse, и подключаемой к COM-порту, либо порту PS/2. А вот с поддержкой USB у MeOS в те времена были сложности. Кроме того, система позволяла слушать музыку, если на машине установлена звуковая карта, совместимая с Sound Blaster 16, и даже позволяла подключить сетевую плату, правда, одного-единственного типа: Realtek 8029 PCI Ethernet Adapter. Неплохо для 2002 года, не так ли?

image
Еще один скриншот MenuetOS образца 2002 года

Но, наверное, самым главным достоинством MenuetOS было то, что сам дистрибутив этой чудо-операционки вместе с оконным интерфейсом и базовым набором прикладных программ занимал всего-навсего 1,44 Мбайта. Будучи установлен на дискету 3,5 дюйма, он позволял загружать MeOS непосредственно с дисковода, что автоматически исключало какую бы то ни было необходимость инсталлировать систему на жесткий диск с сопутствующим созданием для нее собственного раздела и настройкой многовариантной загрузки, с чем я в те времена регулярно тра возился, устанавливая винду и линукс на соседние логические диски. Ну, а поскольку сама система вместе с исходниками раздавалась бесплатно под лицензией GPL (более современная 64-разрядная версия позже стала распространяться под собственной лицензией), скачать и протестировать ее мог любой желающий.

image
MenuetOS образца 2002 года — вполне современная по меркам того времени система

Установка


Удивительно, но факт: за минувшие 18 лет процедура установки MeOS не то чтобы кардинально изменилась. Тогда дистрибутив под винду поставлялся в виде исполняемого файла MSETUP.EXE, в котором содержался образ операционной системы. Сейчас файл называется MDW64-1.36.20.EXE (для 64-разрядной версии ОС). Установщик все так же при запуске предлагает вставить чистую дискету в дисковод А:, запустить инсталлятор, откинуться на спинку табуретки и получать удовольствие. И если 18 лет назад у меня с этим не было никаких проблем, то где взять дисковод сейчас, когда на моем ноутбуке нет даже оптического привода — загадка. Найти рабочий программный эмулятор FDD — тоже, как оказалось, тот еще квест, который мне пройти не удалось. Пришлось заморачиваться с настройкой виртуалки, чтобы не доставать из чулана старую 486-ю машину, а потом не искать по пыльным закоулкам пачку погрызенных мышами дискет.

image
Так Menuet OS выглядит сейчас

Раньше при первом запуске машины с дискеты MenuetOS предлагала выбрать графический адаптер (начиная с EGA) и подходящий графический режим (начиная с 16 цветов), а для видеокарточек с поддержкой VESA 2.0 требовалось еще вручную указать тип обращения к линейному буферу адаптера (LFB) и тип кеширования MTRR. Сейчас система обходится без всех этих нудных формальностей и просто запускается с наиболее подходящим экранным разрешением. Также раньше операционка заставляла юзера вручную указывать порт, к которому подключена мышь (на выбор предлагался COM1, COM2 или PS/2), но с 2008 года MenuetOS научилась работать с USB и подхватывать мышь «на лету». Прогресс!

Сам образ операционной системы хранился в файле ramdisk, по умолчанию располагающийся на той же дискете, где размещался загрузчик. В качестве небольшого лирического отступления можно заметить, что функционально MeOS позволяла читать ramdisk и с винчестера, однако это никоим образом не избавляло юзера от необходимости использовать загрузочную дискету. Образ виртуального диска считывался либо с самого гибкого диска, либо из раздела FAT32, определяемого в текущей аппаратной конфигурации компьютера в качестве root, то есть из первого раздела нулевого жесткого диска, куда следовало предварительно поместить файл MSETUP.EXE — для этого в процессе загрузки MeOS следовало выбрать режим «Load ramdisk from hd/msetup.exe». В данном случае процесс запуска системы протекал в несколько раз быстрее, а для еще большего удобства умельцы мутили различные варианты загрузчиков, позволявшие запускать MeOS прямо с винта. Некоторые из них вроде бы до сих пор можно найти на menuet.narod.ru. Сейчас опции загрузки образа системы с диска я в настройках MeOS почему-то не нашел.

image
Зато в MenuetOS можно смотреть футбол

Первые версии MenuetOS не умели самостоятельно определять подключенное к компьютеру оборудование, потому после окончания загрузки системы требовалось открыть окно настройки устройств (System > Device Setup) и вручную указать некоторые параметры аппаратной конфигурации персоналки, в частности, тип подключения жестких дисков и привода CD-ROM (master/slave), характеристики звуковой карты (каналы DMA и запрос на прерывание), а также ряд других данных. Сейчас ситуация не сильно изменилась в лучшую сторону: в VirtualBox система не смогла распознать сетевую карту и на машине отсутствовал звук, выставить разрешение выше 800х600 мне тоже не удалось. Впрочем, я не особо и пытался — для тестирования мне вполне хватило дефолтных настроек.

Юзабилити


А вот интерфейс системы за 18 лет сделал огромный шаг вперед чуть не порвав при этом штаны. В минувшую эпоху использование MenuetOS было чем-то сродни попыткам развлечь симпатичную студентку гуманитарного факультета какого-нибудь педагогического вуза историями про пересборку ядра Linux — в принципе, можно, но отдает мазохизмом. В процессе работы с приложениями то и дело возникали проблемы при попытке масштабирования окон — границы активного окна было практически невозможно захватить мышью, а окна некоторых программ вообще масштабировались как угодно, но только не так, как это нужно пользователю. Сейчас с этим все стало намного лучше: интерфейс лаконичен, но при этом все работает довольно-таки четко, окна отрисовываются как нужно и ничего не лагает.

Раньше в MeOS ощущался явный дефицит прикладных программ. Сейчас в комплекте поставки системы имеется браузер, почтовый клиент, простенький текстовый редактор, telnet-клиент, проигрыватель аудио видео-файлов, файловый менеджер, калькулятор, компилятор Ассемблера, графический редактор, просмотрщик картинок и даже TV-тюнер. Под MeOS есть серверы FTP/HTTP/SMTP и клиенты IRC/HTTP/NNTP/TFTP.

image
Штатный текстовый редактор MenuetOS

Еще имеется текстовый редактор, очень похожий на старый добрый Edit в MS-DOS, и крайне простой файловый менеджер, интерфейс которого напоминает плод греховной любви Windows Commander и стандартного File Manager из Windows 3.1.

image
А это — файловый менеджер


О, еще есть игры! В стандартном комплекте поставки можно найти целых 15 игр, включая шахматы, «Сапера» и «Косынку», а с сайта разработчика можно скачать образ компакт-диска с дополнительным софтом, где есть портированные под MeOS Doom и Quake!

image
Куда же без игр?

Достоинства и недостатки


Несмотря на внешнюю простоту, MenuetOS есть, чем гордиться. Самые важные достоинства данной ос — ее бесплатность, компактность, быстродействие и нетребовательность к системным ресурсам. Фактически, MeOS можно развернуть на любом ископаемом железе, которое на сайтах объявлений часто отдают «за самовывоз». При этом архитектура ОС не требует даже наличия на компьютере жесткого диска. А при помощи имеющегося в MeOS компилятора Ассемблера можно превратить компьютер в незаменимый «полигон» для обучения детей основам программирования.

Все остальное можно, пожалуй, отнести к недостаткам. Список железа, гарантированно поддерживаемого MenuetOS, пока еще относительно невелик, выбор софта по сравнению с тем же линуксом — скуден, а интерфейс придется по вкусу разве что аскету. Но вместе с тем, этот проект активно развивается — последняя (но не последняя в истории) версия MenuetOS увидела свет 4 октября 2020 года.

Вместо заключения


На основе исходников MenuetOS была разработана операционная система KolibriOS, появившаяся на свет, как форк 32-разрядной версии MeOS. Но со временем она выросла в самостоятельный, независимый и крайне интересный проект. Колибри также написана на fasm, и активно поддерживается комьюнити, благодаря чему имеет собственных поклонников. О данном проекте уже неоднократно писали на Хабре . Но это, как говорят в сказках, уже совсем другая история.