Автор оригинала: Mihai Parparita

Коротко: на Infinite Mac, моём сайте, где можно пожить во «вселенной Macintosh» с 1984 по 2005 год, теперь в браузере запускаются многие версии BeOS. Они работают наравне со своими маковскими соседями: загружаются мгновенно (большие диски подкачиваются по сети), на диске Infinite HD уже лежат программы, можно вставить CD-ROM из Internet Archive, а свою работу сохранить на диск Saved HD.

BeOS была мультимедийной многозадачной и многопоточной ОС, которую в итоге портировали и на Power Macintosh середины 90-х. Она впечатлила многих в маковском сообществе, включая саму Apple: та всерьёз думала купить Be, компанию-разработчика. Если вы следили за сагой о том, как Apple искала операционную систему следующего поколения, здесь можно своими глазами увидеть дорогу, по которой она не пошла.

BeOS R5 внутри Infinite Mac: GL Teapot, Mandelbrot, Gobe Productive, терминал, просмотрщик картинок и монитор загрузки процессора
BeOS R5 внутри Infinite Mac: GL Teapot, Mandelbrot, Gobe Productive, терминал, просмотрщик картинок и монитор загрузки процессора

Как я запускал BeOS

Прошлый проект для Infinite Mac вышел довольно хлопотным (хотя и принёс удовольствие), так что теперь мне хотелось чего-нибудь попроще. BeOS давно была у меня в планах, и, в отличие от A/UX, с ней у меня связаны личные воспоминания: я видел BeBox в Акихабаре, наряжал свой Mac под неё с помощью BeView, а потом и вовсе поставил BeOS второй системой на свой Power Macintosh 8500. DingusPPC, эмулятор, который я уже встроил в сайт, неплохо продвигался в запуске BeOS, так что, казалось, дело сведётся к подготовке ещё нескольких образов дисков.

Поначалу всё и правда шло так просто, как я надеялся: я добавил конфигурацию Power Macintosh 7300 (одной из моделей, которые Be официально поддерживала), нашёл установочный CD, сделал образ диска и получил работающую систему. Но чем больше я ею пользовался и чем больше версий ставил, тем больше всплывало мелких багов и пограничных случаев:

  • Загрузчик BeOS считал, что все клавиши-модификаторы зажаты, из-за ошибки в эмуляции ADB. Поэтому при каждом старте он показывал (уродливый, как BIOS на PC) экран выбора раздела.

  • При смене глубины цвета нужно уведомить два аппаратных компонента: видеоконтроллер и цифро-аналоговый преобразователь. DingusPPC, сам того не замечая, полагался на порядок, в котором эти уведомления отправляла Mac OS. BeOS делала это в обратном порядке, и изображение на экране превращалось в кашу.

  • Ранние версии BeOS писали в видеопамять в режиме little-endian¹, а в DingusPPC не было поддержки этой аппаратной возможности.

  • Поздние версии BeOS умели монтировать разделы HFS, но спотыкались на томах, которые я собирал Python-библиотекой machfs. Оказалось, что BeOS (вполне обоснованно) строже, чем Mac OS, относится к тому, как должны быть заполнены некоторые структуры данных.

  • И так далее: большую часть коммитов, которые я за последний месяц отправил в DingusPPC, я писал ради лучшей совместимости с BeOS.

Infinite Mac эмулирует BeOS R5, которая эмулирует System 7.6.1 с запущенным Speedometer
Infinite Mac эмулирует BeOS R5, которая эмулирует System 7.6.1 с запущенным Speedometer

Лучшее из двух миров?

SheepShaver, эмулятор Power Macintosh, который живёт и сегодня (и который Infinite Mac тоже встраивает), родился именно на BeOS. В основном ради забавы — ещё один слой эмуляции внутри эмуляции — я захотел, чтобы работал и он. Как выяснилось, и тут понадобилось исправление совместимости: SheepShaver полагался на пограничный случай отображения ПЗУ на физические адреса памяти, который DingusPPC моделировал неточно.

У большинства этих исправлений общая закономерность. DingusPPC (и Infinite Mac) до сих пор были заточены в основном под Mac OS и потому незаметно привязались к её причудам и решениям её реализации. Когда в игру вступила независимо разработанная операционная система, она прошла по новым путям в коде, и в итоге эмуляция железа стала точнее. Оговорюсь: DingusPPC и без того была очень близка к цели, так что спасибо её мейнтейнерам. Насколько я знаю, после этой работы это единственный эмулятор², на котором запускаются версии BeOS для PowerPC. Надеюсь также, что это поможет с запуском других альтернативных операционных систем, вроде MkLinux (о которой у меня тоже остались воспоминания) и Rhapsody.

Диалог настройки своего экземпляра Infinite Mac, оформленный в стиле BeOS
Диалог настройки своего экземпляра Infinite Mac, оформленный в стиле BeOS

На стороне Infinite Mac были очевидные доработки: оформление в стиле BeOS для моих элементов интерфейса и подбор программ для библиотеки. Ещё пришлось подмешивать на диск динамически сгенерированные данные, чтобы ОС сразу выбирала разрешение экрана под размер окна браузера (примерно так же, как я делал для A/UX). ИИ-агент (у меня это по-прежнему Codex) снова пригодился в такой кропотливой задаче по реверс-инжинирингу: одно дело заметить, что ОС хранит на диске файл с размером экрана, и совсем другое — воспроизвести все его тонкости, тем более что в поздних версиях формат менялся.

У Developer Release 8.2, первой версии BeOS для Power Mac, была «бомба с часовым механизмом»: после 1 апреля 1997 года система переставала загружаться. Дело было не только в желании подстегнуть пользователей: в неё входил лицензированный растеризатор шрифтов, который Be не имела права распространять бессрочно. В DR8.3 это исправили, но чтобы загружалась и та самая первая версия, мне пришлось воспользоваться поддержкой произвольной даты и жёстко прописать рабочую дату для этого диска.

Впечатления от BeOS

Я пробовал BeOS и в те годы, когда она была актуальной, но не помню, чтобы пользовался ею достаточно долго, чтобы составить мнение сложнее, чем «она быстрая, и мне не хватает всех моих сторонних программ». В журнале About This Particular Macintosh есть репортажи тех лет, включая первое и второе появление Be на выставке Macworld Expo в Бостоне, а также обзоры R3 и R4.5; читать их интересно. В этом видео, которое выпустила сама Be, показано то, что компания считала сильными сторонами системы.

Глядя на неё глазами 2026 года, я по-прежнему поражаюсь её скорости: она быстро загружается и быстро работает, особенно на фоне современных ей версий Mac OS, которые умели куда меньше (например, перетаскивание окна вместе с содержимым появилось только в Mac OS X). Подсистема POSIX и Unix-подобная оболочка тоже ощущаются современными (в отличие от тех, что были в A/UX): я без проблем копался в системе через терминал. Новаторских идей тоже хватает, хотя одни интереснее других: BFS с её атрибутами и живыми запросами впечатляет больше, чем репликанты (это предшественники виджетов, но я так и не придумал, зачем они мне).

Ещё она ощущается системой для разработчиков, которая только строится: многие встроенные приложения — это демонстрации технологий (хотя кто же не любит чайник из Юты), а домашняя страница Be тех лет ссылается прямо на заметки к выпуску для разработчиков и рассказывает о выпусках CodeWarrior и доступе к баг-трекеру. Та же незавершённость касается и сторонних программ: я наткнулся на софт для BeOS на CD-диске амижного журнала, и почти всё там производило впечатление «версии 0.1» — буквально или фигурально. Справедливости ради, нашлись и более доведённые программы, например Gobe Productive от бывшей команды ClarisWorks. Её и другой софт можно попробовать на диске Infinite HD (лучше в поздних версиях ОС).

Интерфейс тогда казался свежим, хотя не знаю, как бы он выдержал испытание временем³. Фирменные заголовки окон в виде вкладок выглядят изящно, но тянуть окно можно только за небольшую область, так что мне пришлось бы каждый раз задумываться, чтобы его передвинуть. А из-за руки вместо стрелки в роли курсора по умолчанию щелчки кажутся менее точными (какой именно пиксель «пальца» считается активной точкой?). Другие части интерфейса ощущаются не до конца продуманной смесью Windows и Mac: Deskbar может изображать меню «Пуск»⁴, пункты меню выбираются сочетаниями с Alt, но при этом есть и подпружиненные папки, и пространственный файловый менеджер Tracker.

Кстати, о Tracker: я не знал, что Be открыла его исходный код (и даже включала правки из открытой версии в свои обновления). Это было примерно тогда, когда Be развернулась к интернет-приставкам: незачем вкладывать силы инженеров в файловый менеджер, если пользователь видит только одно полноэкранное приложение-браузер. Подробности этой истории есть в интервью с разработчиком Tracker.

OPENSTEP 4.0 и BeOS DR8.2 рядом в браузере дисков Infinite Mac
OPENSTEP 4.0 и BeOS DR8.2 рядом в браузере дисков Infinite Mac

Устройте своё сравнение: NeXT против Be

NeXTStep на этом фоне выглядит зрелее. Она пережила похожие метания (от собственного железа к обычным PC, смены стратегии компании), но, возможно, благодаря тому, что времени у неё было больше, справилась с ними изящнее. Например, NeXT поддерживала «толстые» бинарники, которые запускались на 68K, Intel, PA-RISC и других архитектурах. В BeOS для каждой архитектуры нужен был отдельный исполняемый файл: пользователю приходилось выбирать, какой запускать, а распространять программы было сложнее (из-за этого и мне было труднее находить софт для Infinite HD). Хуже того, на CD-дисках приходилось держать параллельные разделы: BFS использовала порядок байтов хост-системы, поэтому диски, записанные в BeOS на PowerPC, не читались в BeOS на Intel, и наоборот. Впрочем, моя симпатия к NeXT может объясняться тем, что я знаю, какую ОС в итоге выбрала Apple.

Другие улучшения сайта

С прошлого обновления прошло совсем немного времени, но я всё же успел добавить пару удобств. Теперь можно делать скриншоты и записывать видео (со звуком) с экрана эмулируемой машины. Так картинку можно снять с максимальной точностью: это прямой дамп того, что было бы показано на экране.

Ящик CD-ROM в Infinite Mac со множеством системных дисков
Ящик CD-ROM в Infinite Mac со множеством системных дисков

Ещё я расширил коллекцию системных CD-дисков, добавив, например, предварительные версии Rhapsody и Mac OS X для разработчиков. Пока это задел на будущее (DingusPPC их ещё не запускает), но мою страсть к собирательству они утоляют. Эти диски зеркалируются в моё собственное хранилище Cloudflare R2 и отдаются оттуда. Internet Archive — потрясающий ресурс (ему можно помочь деньгами), но потоковая загрузка с него становится всё менее надёжной. Усугублять проблему я не хочу. Благодаря моим спонсорам я могу позволить себе раздавать несколько гигабайт.

Что дальше? Раз эта альтернативная ветка истории Mac теперь покрыта, возможно, пора взяться за приквел.

Обновление: см. также обсуждение на Hacker News.

Примечания

  1. Сегодня узнал, что так вообще можно: Apple обычно запускала PowerPC и всё на своих машинах в режиме big-endian. На эту возможность контроллера даже есть патент.

  2. Правда, пока я этим занимался, кто-то навайбкодил эмулятор BeBox.

  3. С другой стороны, Haiku, похоже, сохранила его почти без изменений, так что кого-то он по-прежнему привлекает.

  4. Если сумеете найти полосу шириной в три пикселя, за которую её можно утащить вниз экрана.

Комментарии (0)