Haiku — свободная операционная система для персональных компьютеров, первая версия которой нацелена на бинарную совместимость с операционной системой BeOS.

Haiku воплощает в себе основные идеи BeOS. Это будет модульная система, архитектурно решённая как «модульное ядро», способная динамически подгружать необходимые модули. К интересным особенностям системы следует отнести архитектуру трансляторов — системных интерпретаторов файловых форматов (например, JPEG).

О проекте

ad block

Закладки

Понемногу эволюционируем

После ваших откликов всё стало выглядеть вот так. Информация о локальном устройстве больше не выпирает на передний план, а за первым табом пользователь может увидеть текущий список удалённых устройств (пока не реализован)

Есть мнение, что таб с настройками не нужен обычному пользователю, а настройки по идентификации будут доступны также через апплет в Deskbar'е

Сигнализация L2cap / односторонняя

Начато тестирование протокола l2cap нижнего уровня.

После установки соединения, мы готовы к приёму пакетов ACL, которые, после обработки, станут кадрами L2cap, часть короторых, типа G, будут данными пользователя/приложения.

Но в начале идут кадры типа C (сингалы), которые устанавливают L2cap канал, и этот канал будет нести кадры типа G.

Это была теория, теперь факты: данные ACL обрабатываются (не вполне оттестированно, так как первый кадр L2CAP должен влезать в 1 пакет ACL :-/) и посылаются на уровень L2CAP, который разбирает и обрабатывает первый кадр C L2cap, что было главным достижением последних дней.

Первый сигнал запрашивает открытие канала, поэтому следующий шаг - проверка, есть ли связанный l2cap сокет для приёма и передачи следующего сигнального кадра, который надо сегментировать (если слишком большой) и послать как ACL...

urnenfeld

Обновление Bluetooth и пожертвование железом

Очень давно у нас не было никакого движения по bluetooth.

Последние два месяца вся деятельность крутилась около протокола L2cap (и, конечно же, походов на пляж). Протокол лежит поверх TCP/IP стека и использует протоколы TCP и UDP, поэтому задача отнюдь не проста.

Хорошая новость состоит в том, что после переговоров о лицензировании с главным разработчиком FreeBSD (Максимом Евменкиным) и разработчиками Haiku в рассылки, я использовал код из BSD адаптировав его для API ядра Haiku, что съэкономило кучу времени на разработку.

Я разделил протокол l2cap на два подуровня 2 (нижний/верхний). Нижний целиком закончен и сейчас я заканчиваю верхний, который, после совмещения с интерфесом сокетов, завершит последний этап.(НАКОНЕЦ-ТО!)

Также огромное спасибо за поступившее пожертвование в виде железа из......

Luroh, спасибо ему, с большим опозданием прислал мне пару PCMCIA bluetooth карт и одну беспроводную. Когда я их получил, я уже было собрался прекратить работы по их поддержке, но в Haiku нет поддержки PCMCIA :(... в моём TODO листе появились новые записи. В любом случае карты полезны, так как пополнят количество моих bluetooth устройств.

Спасибо, Luroh!

urnenfeld

[HCD]: отчёт

Прошло довольно много времени с моего последнего отчёта, пожалуй, пришла пора для нового.

Сначала хочу сообщить, что я получил первую половину моего жалования. Поскольку эти деньги были собраны (фантастика) сообществом, думаю вам важно знать, что они дошли до адресата.

Начиная с r27159 вам доступно чтение с UDF разделов. Я не стану пока добавлять модуль в дистрибутив, так как хочу провеести побольше тестов, но могу сказать, что порт UDF для новой FS API близок к завершению, вы можете начать его тестирование, добавив модуль и попробовав поработать с DVD, отформатированными под UDF или с iso-образами, созданными mkisofs. Отзывы приветствуются.

Вторая часть моего HCD, если не забыли, bonnie++ добавлена в r26920 и доступна для смельчаков, желающих потестировать.

В r27052 я исправил также захват BFS, когда вся файловая система могла быть блокирована, если несколько нитей писали в одну и ту же директорию. Подробности тут.

Ok, пойду вернусь к UDF. ;-)

emitrax

BeOS Joystick Framework

Эта статья - скорее дополнение к статье ITO Takayuki “BeOS Joystick Driver”, так что советуем для начала ознакомиться с ней.

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

Когда я начал изучать joystick framework, я не думал, что это будет трудно; как же я обманывался ха, я даже не знал, как общаться с железом. Тем не менее, после некоторого тестирования (методом проб и ошибок), думаю, я нашёл кое-какую информацию о joystick framework, но я сначала я опишу своё понимание работы joystick framework.

Класс BJoystick в libdevice.so общается с джойстиком, объявленным в dev/joystick/”portname”/”joystick name”, таким образом обычный игровой порт (gameport) и usb_joy от ITO работают как отдельные устройства.

usb_joy = dev/joysticks/usb/0 (для первого устройства)
usb_joy = dev/joysticks/usb/1 (для второго и т. д.)
gameport = dev/joysticks/gameport/201
etc
emuxkigameport = dev/joysticks/ emuxkigameport /et18

emuxkigameport — это драйвер, который был подарен Haiku, он заставляет работать игровые порты на звуковых картах SB Live и Audigy. Я пытался добавить его в emuxki, но в этом случае звук прерывался, когда я двигал джойстик. Этот драйвер использует обычный игровой порт.

Как же он работает? Можно сказать, что у нас есть два способа общения с джойстиком — через usb_joy и emuxkigameport. Сначала у вас должна быть копия файла описания джойстика в onfig/settings/joystick/”portname”/”joystick name”. Думаю, это должна быть именно копия, поскольку приложение Joystick Preference модифицирует файл, так что симлинк не рекомендуется.

Сначала о usb_joy. Когда BJoystick посылают ioct (я не проверял, но думаю, что правильно понял, да?) драйверу, usb_joy делает всё сам, забирая информацию из USB и читая файо описания джойстика из /settings/joystick/”portname”/”joystick name”.

А как работает emuxkigameport? BJoystick посылает ту же информацию, что и в случае с usb_joy, но в данном случае emuxkigameport перенаправляет ioct драйверу, который называется generic gameport и расположен в drivers/generic. Этот драйвер загружает файл в config/settings/joystick/”portname”/”joystick name”, с этим файлом он знает, какой модуль нужно загружать, и загружает его, но в этом месте должен быть файл описания джойстика, иначе вы сможете использовать джойстик только в стандартном режиме (то же самое, как если бы модуля для вашего джойстика и вовсе не существовало).

Об использовании BeOS Joystick Framework в Haiku. Да, он работает, но не usb_joy, так как он рушит систему. Вам нужно скопировать libdevice.so, приложение Joystick preference, etc/joysticks, media/joy, generic/gamport и хайковский emuxkigameport. Я тестировал только stickit и приложение joystick preference из BeOS R5, а игры не тестировал.

Что получается на данный момент? Я буду продолжать, но сконцентрируюсь на драйвере usb_joy, чтобы понять, что с ним не так. Было бы здорово, если бы кто-нибудь помог мне определить, насколько хорошей идеей будет использование модулей в драйвере USB, чтобы обрабатывать различия в различных джойстиках, или в мире USB таких различий вообще не существует.

Если хотите ещё прочитать про джойстики, вот вам несколько ссылок:

  • http://www.beatjapan.org/mirror/www.be.com/documentation/rel_notes/R4Rel...
  • http://euc.jp/beos/beosjoystick.en.html
  • http://www.haiku-os.org/legacy-docs/bebook/BJoystick_Overview.html
  • http://www.haiku-os.org/legacy-docs/benewsletter/Issue3-43.html#DevWorks...


оригинал

Пакет для оценки производительности файловой системы Haiku

Пришло время кратких новостей

С релизом r26676, в Haiku появилась первая глючная реализация xsi семафоров (глючная, потому что уже готов патч, возможно не последний, который устранит некоторые обнаруженные проблемы).

Можно сгрузить, скомпилировать и запустить пакет для оценки производительности файловой системы bonnie++. Я использовал версию 1.03d, которую мне рекомендовал автор пакета. С ним можно оценить работу файловой системы, а также то, как Haiku работает при недостатки памяти и тяжёлой нагрузкой.

Программа запускается очень просто. Чтобы запустить пакет в режиме одного процесса, наберите:

bonnie++ -u 0

А если хотите запустить несколько процеесов, сделайте так:

bonnie++ -p 3 -u 0
bonnie++ -y -u 0 &
bonnie++ -y -u 0 &
bonnie++ -y -u 0 &

Первая команда создаёт ipc ключ и семафоры для синхронизации трёх процессов. Как большинство из вас догадалось, флаг -p указывает число процессов bonnie++. Почмите, что ни один из этих процессов не запустится до тех пор, пока не стартует самый последний.

Конечно же, я приглашаю всех вас принять участие в тестах, чем больше будет сделано тестов, тем больше будет найдено багов, тем скорее их вылечат, тем быстрее выйдет R1 will. По крайней мере в теории! :-)

Конечно, ВЫ ВСЁ ДЕЛАЕТЕ НА СВОЙ РИСК.

emitrax

Спаривание! 5-я веха

img_3076.jpg

Да, ещё одна мутная и нечитаемая картинка. В камере села батарейка и лучше не получится.

Помните Марвина? На этот раз он добавлен (если видите) в список доверенных устройств моего телефона после процесса соединения, ввода пинкода и обмена ключом для шифрования (речь идёт о соединении по bluetooth - haikuos.info)

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

В этот раз я хочу поблагодарить Monni за присланные мне патчи :)

urnenfeld

HCD [bfs]: Отчёт #1

Прошёл почти месяц с начала самого первого Haiku Code Drive!

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

А теперь немного о моём проекте.

Как вам известно, я буду проверять стабильность файловой системы bfs. Чтобы это сделать, надо для начала реализовать семафоры XSI Posix, а затем собрать bonnie++, которая оценивает производительность файловых систем. Если честно, семафоры XSI Posix на самом деле необязательны, быстрее было бы просто портировать bonnie++ в Haiku, сделав совсем немного изменений (захват ресурсов). Однако, в дальней перспективе, Haiku только выиграет, если я эти семафоры реализую, так как она станет более Posix-совместимой.

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

И хотя я не закончил работу, я уже сделал кое-какие тесты без bonnie++ и нашёл первый баг. Смотрите тикет #2400.

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

Сначала я заархивировал в tarball исходники haiku под linux, положил их на usb диск, запустил vmware, и попытался распаковать 500MB архив (1.5 GB распакованный) из под Haiku. Ага... "Желаю удачи! :)"

То, что я сначала принял за баг bfs, стало багом vfs, хотя дискуссия в рассылке gsoc продолжается.

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

На этом пока всё.

emitrax

Таймеры (GSoC) Отчёт #1

Краткое сообщение о положении вещей с поддержкой HPET в Haiku.

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

В настоящий момент загрузка на моей системе невозможна (так как qemu работает на ISA таймере).

Что предстоит сделать вкратце (безо всякого порядка):

  • Разобраться какая архитектура какой таймер поддерживает
  • Перенести в модули таймеры других архитектур (с низшим приоритетом, поскольку прочие архитектуры, думаю, целиком не поддерживаются)
  • Вынести код приоритета и инициализации в общую секцию из x86 (будет сделано, как только будет сделан перенос на другие архитектуры)
  • Сделать поддержку HPET (сейчас выключена, но есть её модуль)
  • Сделать system_time()
  • Исправить проблемы с загрузкой и т.д.

    Dustin Howett

  • Google Summer of Code: альтернативные системные таймеры

    Всем привет!
    Я - Дастин, студент Summer of Code 2008 года, который будет реализовывать поддержку системных таймеров, отличных от TSC, в Haiku.

    Я активно следил (и пытался предложить свои услуги) за разработкой Haiku в течение нескольких месяцев, хотя пассивно наблюдал момент ухода Be, Inc. и тот момент, когда в OpenBeOS забила жизнь. Я изучил основы Be/Haiku API и отдельные части ядра Haiku.

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

    Меня можно найти на канале #haiku на Freenode, мой ник – DHowett.

    Спасибо большое,
    Dustin Howett

    Вышла поддержка Bluetooth в Haiku

    Я обещал Андреа подарок к Рождеству и изрядно задержался. Давайте зазипуем всё. что мы показывали в последних постах и расскажем, что с этим делать. Теперь у нас есть некий функционал и мы можем дать вам возможность с ним поиграться, а также написать приложения, такие, как например панель настроек в Preference.

    Прежде, чем продолжать, ознакомьтесь, пожалуйста, с этой статьёй о возможном риске.

    Шаги по установке для R5(не тестировалось под Haiku и ZETA):

    Установка драйвера (/h2/h2generic) :

    Положите драйвер в /boot/home/config/add-ons/kernel/drivers/bin

    Сделайте на него ссылку и положите в /boot/home/config/add-ons/kernel/drivers/dev/bluetooth

    Скорее всего у вас нет этого каталога, поэтому его придётся создать. С помощью команды usb_dev_info убедитесь, что устройство определяется. После этого проверьте, правильно ли устройство опубликовано:
    $ find /dev/bluetooth/
    /dev/bluetooth/
    /dev/bluetooth/h2generic
    /dev/bluetooth/h2generic/0

    Если нет, то может помочь перезагрузка или команда $ rescan h2generic.

    Установка библиотеки (/lib/libbluetooth.so) :

    Положите библиотеку в /boot/home/config/lib/

    Запуск сервера (/server/bluetooth_server) :

    Этот компонент можно положить в любое место, например: /boot/beos/system/servers/

    Запуск приложений (/apps/*) :

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

    Доступный функционал:

    Всё, что описано в программах /haiku/trunk/src/bt_*.cpp и LocalDevice::SetDiscovery(); который не используется в приложениях

    Скачать Bluetooth для Haiku (Arce.4.1)

    Примечание: Если есть желающие сделать красивый установочный скрипт или ссылки на папки Drop me here - присылайте мне, я их с радостью опубликую.

    urnenfeld

    Архивы

    Сентябрь 2007| Октябрь 2007| Январь 2008| Февраль 2008| Март 2008| Апрель 2008| Май 2008| Июнь 2008| Июль 2008| Август 2008| Сентябрь 2008| Октябрь 2008| Ноябрь 2008| Декабрь 2008| Январь 2009