ARWINSScc2010

Материал из Русский WINE
Перейти к: навигация, поиск

Тезисы доклада

О ReactOS в общем (5 минут)

1.1. Реализация архитектуры NT с открытым кодом

1.2. Зачем клонировать NT?

  • Прогрессивная архитектура — переход от модели «всё — файл» к модели «всё — объект» (кратко о том, что такое объект в NT)
  • Архитектура подсистем, разные API в рамках одной ОС (кратко о POSIX и OS/2 в Win)
  • Богатый парк драйверов
  • Богатый парк прикладных приложений

1.3. Что уже есть?

  • Текущее ядро сравнительно стабильно
  • Свои драйверы VGA, PCI, SATA, PS/2 (мин. набор, уже есть и работает)
  • Звуковая и сетевая подсистема
  • Win32 позволяет запускать многие приложения

1.4. Что будет?

  • Ядро: менеджер кэша: ускорение и в перспективе NTFS, ext2/3 и т.д.
  • Развивается и улучшается PnP
  • Активно пишется USB стек
  • Портируем на x64 и ARM
  • Улучшения Win32 (об этом отдельный рассказ)

ARWINSS – новая подсистема Win32 (12 минут)

2.1. Что такое подсистема? Подсистема Win32 и её реализации (Win32s, Win9x, WinCE, NT3, NT4(менеджер окон и GDI перенесли в ядро, sic), Wine).

2.2. Первоначальная попытка: как-в-XP. Проблемы:

  • Реверс внутренних структур ядра: медленно, сложно, ненадежно.
  • Очень сложное внутреннее устройство оригинала: наследие от Win16
  • Сложность кооперации с Wine: принципиально разное внутреннее устройство
    • Подробнее: в wine большая часть работы в usermode, в nt>4 – в ядре, перенос кода туда — сюда — проблема, не говоря уже о разных внутренних

интерфейсах

  • Итог: многое работает, но за 10 лет разработки даже уровень совместимости Wine не был достигнут.

2.3. Новая попытка: Arwinss

  • Задачи
    • Сконцентрировать усилия на ядре
    • Максимально возможная кооперация с Wine (в т.ч. не только брать, но и отдавать)
    • Да, мы берем код из Wine, но регулярно шлем патчи обратно
    • Wine неохотно принимает патчи, в которых не видит нужды, в свою очередь мы как раз исправляем то, что у них не сделано (shell32 и т.д.)
    • Как можно быстрее получить максимальную совместимость
  • Как решили сделать
    • См. диаграмму из ARWINSS wiki
    • Нам помогла архитектура Wine, которая изначально в какой-то степени платформонезависимая
    • Платформонезависимость достигается благодаря специальной прослойке — winex11.drv – абстрагирующей wine от конкретной системы ввода-вывода платформы, на которой он живет
    • То есть, вызовы win32 сначала идут в user32/gdi32 wine, оттуда — в winex11.drv, а уже оттуда — в X11.
    • Так что мы написали свой драйвер, который вместо X11 использует (модифицированные) компоненты нашего ядра
    • … и стало возможно использовать user32 и gdi32 из wine почти без изменений!
  • Что получилось:
    • За год разработки совместимость выше, чем у оригинальной попытки сделать Win32
    • Работают FF4b, MS Office, Photoshop и т.д.
    • В wine отправлены десятки патчей
    • Можно использовать X11 в качестве вывода для win32 (соответственно, можно сделать сервер терминалов)
    • Код на 95% общий с wine, соответственно, усилия разработчиков объединяются, а не распыляются
    • Можем принимать патчи, от которых отказывается wine
    • Ущерб для совместимости приложений пока не замечен (не считая системные утилиты, завязанные именно на внутреннюю архитектуру win32 – пока такая обнаружена только одна)
    • Уже можно ограниченно применять в разных POS терминалах и прочем embedded, где есть готовый парк софта «под винду» и не нужна мощная графика.
  • Преимущества для Wine
    • Кросскомпиляция dll wine позволяет отлавливать баги, связанные с переносимостью кода
    • Поиск багов в dll wine командой ROS, и написание патчей в апстрим (это уже делается!)
    • Фактически, возможно полноценное использование Wine под windows! Для запуска старых/несовместимых программ, в частности. И такой опыт уже был поставлен!

Резюме (3 минуты)

3.1. Впервые ReactOS подошла вплотную к beta стадии

3.2. Локальные применения уже возможны

3.3. Устранены основные причины, препятствующие распространению ROS, а те, которые остались, сейчас в разработке (USB, FS drv, etc)

3.4. Особенно актуально сейчас, когда идет тотальный отказ от «пиратки»

3.5. Включаясь в разработку сейчас, вы участвуете в проекте, который будет весьма популярен в ближайшем будущем. Преимущества:

  • Репутация
  • Опыт командной разработки
  • Можно использовать навыки разработки под Windows
  • «Благодарная» работа: ARWINSS за год обогнал аналогичную подсистему, писавшуюся 10 лет. Все результаты работы сразу же будут заметны и очень

востребованы.

Демонстрация софта (15 минут)

4.1. AbiWord

4.2. FF4b

4.3. KDE-Win(?)

4.4. Пример исправленного бага + исходники решения

Вопросы (5 минут)

5.1. Когда будет работать?

  • Уже работает. Смотря какое использование вы предполагаете. Для среднего домашнего пользователя — когда будут USB и DirectX. Их пишут. Остальное есть, баги сокращаются каждый день.

5.2. Какие есть проблемы?

  • Кривая Win32, но это решает ARWINSS.
  • Нет USB
  • Не все «родные» драйвера дисплея работают.
  • Нет DirectX
  • FS – только FAT/CDFS

5.3. Почему такие проблемы?

  • Потому что последние два года работали почти исключительно над ядром, чтобы добиться его стабильности. И добились.


ReactOS
Search.png
Доклады
О ReactOSARWINSSЧеЗа
Информация Новости Выпуски новостейПереводы блоговНовости проектаВидеоReactOS на ХабреUSB от Вадима Галянта
Разработка Руководство по программированиюОтсутствующая функциональностьВетви разработкиКомпоненты системыReactOS и WineПлан работRoadmap ядра by VgalРазработчикиСовместимость с dll WindowsНаиболее значимые изменения за годИспользуемые проектыGoogle Summer of CodeИзвестные проблемы
Порты AMD64ARMXboxPowerPC
Компоненты Файловые системыРежим совместимостиОтчеты об ошибкахПечатьUSBЯдро
Загрузчик Восстановление MBRЗагрузка из GRUBПараметры загрузки
Прочее ARWINSSПриложения в ReactOSОформление ReactOSКоординаторы"Пасхальные яйца"Монетизация
Другое Типы ядерFreeWin95
Помощь
RAM-диск ReactOS по PXEс жесткого диска
Разработка Стиль написания кодаСтандарты RC-файловРабота с документациейВенгерская нотацияGNU Indent • [ Subversion : ветвислияниеиспользование TortoiseSVN ] • Основы переводаОтправка патчей
Репорты Отладка в VirtualBoxОтладка на экранДобавление программы в менеджер приложенийОтправка отчетов
Отладка Com0comGDBKdbgRossym.gdbRoswin.gdbWinDBGРуководство по WinDBGВключение трассировки ядраКоды DPRINTУдалённый отладчик ReactOS
Сборка CMakeRBuildФайлы RBuildАвтоматическое копирование файловСборка MINGW-w64Сборка модулейСреда сборки
Тестирование VirtualBoxVMwareQEMUHyper-VНеобходимый объём дискаПеренос файлов на виртуальный дискУстановка ReactOSУстановка драйверов
Сеть Общие папкиSambaNFS
Игры Установка DirectPlay
Обновление ReactOSЗагрузочная флешкаЧем можно помочь проектуСоздание нового пользователяЗвук и сеть в VirtualBoxСъемка и публикация видеоIRC-каналСторонние компонентыFAQReactOS как рабочая станцияReactOS и UEFI
Обзоры ОболочкаNTVDMWOWCommunity EditionИстория сайтаReactOS ServerКриптографияПО времен XP