Со времён BeOS и Be, Inc. прошло много времени. Как сейчас помню как в 1998 году я купил диск на радио рынке с BeOS R3. Я тогда только начинал познавать мир UNIX и вручную реинженирить ntoskrnl.exe в Soft-Ice. Увиденное мной тогда навсегда поселило во мне что-то, что трудно передать словами, фактически все что я узнавал как инженер в системо-строении и программировании проходило через призму увиденного. Все, кто тогда вместе со мной открывал для себя BeOS до сих пор относятся к ней с нескрытой радостью, удовольствием и уважением к незагрязненности инженерной мысли. Все системы которые я видел и изучал включая Hurd, Chorus, Mach, NT, Plan9, QNX, TRON и десятки других embedded проектов стоят у меня всегда на втором месте, не смотря на доказанное временем их значение в мире индустрии. И дело не только в многопоточности, распаралелености, отзывчивости планировщика и чистоте самого кода, есть что-то в ней запредельное, что успокаивает и заставляет радоваться как ребенка.
Вот у меня уже ростет дочь, и когда я готовил этот обзор она подошла ко мне и попросила показать что я делаю, мотивируя это тем, что ей очень понравились картики которые она видит. И уж даже если ребенок, незаангажированный деталями внутренней организации дает позитивные фидбеки на эту систему, я решил написать этот обзор с нуля, как будто бы я не занимался этой системой никогда и не видел ее до этого. Это сложно но я попробую.
Сейчас у меня ноубук на ремонте, поэтому я взял ноутбук жены (Acer Aspire 5520) и решил поставить незаментно для нее Haiku R1/alpha2 на ее ноутбук. Оказалось, что он не видит флешку для загрузки, не беда, я записал CD. Перед этим Acronis DiskDirector освободил 10ГБ партицию. Загрузился с CD и поставил на эту партицию, отформатировав ее прямо в инсталлере. Нажатие одной кнопки и система поставилась. Записал бутсектор партиции, записал загрузчик в MBR (все это тоже из инсталлера) и перегрузился. Загрузка Haiku залипла на третьей иконке, но я случайно нажал один раз на кнопку включения\выключения ноутбука, и загрузка пошла дальше. Всего загрузка системы длится 14 секунд на этом ноутбуке. Объем необходимой оперативной памяти 100МБ (можно даже без свопа, правда разработчики не рекомендуют пока его отключать). Правда вы можете использовать 48МБ оперативной памяти и 64 виртуальной памяти, все равно она будет работать :) Это нормально для Geek систем.
Сразу мы попадаем вот в такой мир. Именно этот экран обратил внимание моей дочери. "Какие красивые иконки, какая приятная штучка, можна я за ней посижу", -- попросила меня моя 9-летняя дочь. Что ж устами младенца глаголит истина. Через некоторе время малая уже баловалась вот такими штуками:
Но больше всего ей понравился графический редактор, который рядом не стоял с Paint. Шарит разные браши, поддерживает векторные пути и полигоны, разного рода растяжки и стили, такой себе nano-Photoshop смешного размера:
nForce сетка и звук поднялись сразу, но иногда сетка отваливается, а звук постоянно глитчится. Однако мне удалось запустить 12 видеороликов проигрывающихся одновременно без падения производительности до того как MediaPlayer выпал в gdb. Выглядит плеер очень мило. Я замаунтил NTFS диски и начал смотреть Хауса. Один диск удалось замаунтить как Read-Write и я создал там пару файлов, но потом почему-то диски перестали маунтится как read-write. Вот фото Гриши:
Даже если у вас не определится сеть по ряду причин, одна из которых отсуствущий работающий Wi-Fi WPA2, вы всегда сможете насладиться чтением оригинальной документации по API (BeBook) и прочитать про устройство системы используя родной браузер построенный на KHTML/WebKit, т.е. на самом современном движке который используют Google и Apple:
Для задротов с немытыми головами тут будет уютно, тут есть bash, binutils, fileutils, куча библиотек out of the box, многое потихоньку портируется, а что соотвествует идеологии -- включается в дистрибутив. Есть два gcc: 2.9.5 и 4.3.3. Это связано с тем, что Haiku поддерживает приложения своего оригинала -- BeOS R5 и должна иметь возможность запускать и разрабатывать приложения с gcc2.
API ядра очень сильно по простоте напоминает TRON, есть всего 5 объектов операционной системы: потоки, процессы, семафоры, области виртуальной памяти, порты сообщений. Но не смотря на свою простоту API достаточно мощное что бы реализовать POSIX. Линкуется API ядра как С библиотеки, хотя многое внутри ядра написано на С++, включая изящную кросплатформенную систему виртуальной памяти. Прочитать про API ядра можно здесь:
http://www.haiku-os.org/legacy-docs/bebook/TheKernelKit_Overview_Introduction.html Be API прикладного уровня, является не менее мощным средством, чем Win32 и NeXT, спроектировано примерно в тоже время, что и NeXT Framework. Но в отличии от С API Win32, и ObjectiveC линковки Cocoa, библиотеки линкуются как с++ библиотеки со всеми вытекающими последствиями: простотой разработки, ненужно дополнительных прослоек (все и так красиво), привязка к ABI компилятора gcc. Именно объектность API BeOS и стала причиной распространения двух версий gcc с Haiku и возможностью запускать бинарники скомпилированные несовместимыми версиями gcc. В Haiku используется ELF формат. Если хотите написать лоадер для загрузки PE или COFF файлов других систем, чувствуйте себя свободно :)
http://www.haiku-os.org/legacy-docs/bebook/TheApplicationKit_Overview_Introduction.html Писать под Be API одно удовольствие. Вы можете попробовать ненавязчивую среду разработки, которая состоит из маленького окошечка проекта и редакторов исходников, что бы убедится в этом:
Что мне в ней нравится:
- простота, чистота, код без наследия
- изящность, красота
- быстрота, грузится 15 секунд
- дизайн (архитектура микроядра и обслуживающих серверов)
- MIT лицензия, позволяющая стартовать коммерческие проекты
- изобильное использование объектов синхронизации на всех уровнях системы
- кроссплатформенность (ARM, PowerPC, x86_64)
- совместимость с BeOS R5 (ничего не надо учить я все уже знаю)
- WebKit браузер
- Практически полная POSIX совместимость
- поддержка UNICODE на всех уровнях (IBM ICU идет с системой)
- поддержка японского языка из коробки
- Gallium3D, в ней в будущем должны работать DRI драйвера для Linux
- в ней могут работать сетевые драйвера от FreeBSD 8
- совместимость с ноутбуком моей жены
- то что ей полностью хватает 100МБ памяти
- достаточно современная журнальная файловая система, что бы не было здесь вообще вопросов
- механизм Query, по типу Windows Search, Spotlight или Beagle
- куда не ткнись везде все сделано как надо и сделадно просто и понятно
- нравится детям
- имеет огромный педагогический потенциал (начиная от ребенка, заканчивая студентом)
- успокаивает нервы
- в ней можно красиво реализовать свои неоплачиваемые (пока) фантазии
- годится как в embedded сектор, сектор нетбуков, так и в сектор гиков
P.S. Чесно говоря, когда я в 2004 году зашел на канал #haiku на фриноде, у них не было ничего, что мне было интересно, я просто думал что они не потянут. В то время я разговаривал тогда напрямую с Тревисом Гейсельбрехтом, бывшим инженером Be, автором оригинального ядра NewOS (В Haiku ядро NewOS лишь немного зарефакторено). Хотел у него поспрашивать про IDE драйвер для его ядра NewOS, на что он сказал мол иди к ребятам из Хайку, у них есть. С тех пор слежу за проектом и хочу сказать, что ребята эти меня радуют. По крайней мере я и моя дочь получили удовольствие от тестировочной альфа версии системы.