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
Доклады
О ReactOS • ARWINSS • ЧеЗа
Информация Новости Выпуски новостей • Переводы блогов • Новости проекта • Видео • ReactOS на Хабре • USB от Вадима Галянта
Разработка Руководство по программированию • Отсутствующая функциональность • Ветви разработки • Компоненты системы • ReactOS и Wine • План работ • Roadmap ядра by Vgal • Разработчики • Совместимость с dll Windows • Наиболее значимые изменения за год • Используемые проекты • Google Summer of Code • Известные проблемы
Порты AMD64 • ARM • Xbox • PowerPC
Компоненты Файловые системы • Режим совместимости • Отчеты об ошибках • Печать • USB • Ядро
Загрузчик Восстановление MBR • Загрузка из GRUB • Параметры загрузки
Прочее ARWINSS • Приложения в ReactOS • Оформление ReactOS • Координаторы • "Пасхальные яйца" • Монетизация
Другое Типы ядер • FreeWin95
Помощь
RAM-диск ReactOS по PXE • с жесткого диска
Разработка Стиль написания кода • Стандарты RC-файлов • Работа с документацией • Венгерская нотация • GNU Indent • [ Subversion : ветви • слияние • использование TortoiseSVN ] • Основы перевода • Отправка патчей
Репорты Отладка в VirtualBox • Отладка на экран • Добавление программы в менеджер приложений • Отправка отчетов
Отладка Com0com • GDB • Kdbg • Rossym.gdb • Roswin.gdb • WinDBG • Руководство по WinDBG • Включение трассировки ядра • Коды DPRINT • Удалённый отладчик ReactOS
Сборка CMake • RBuild • Файлы RBuild • Автоматическое копирование файлов • Сборка MINGW-w64 • Сборка модулей • Среда сборки
Тестирование VirtualBox • VMware • QEMU • Hyper-V • Необходимый объём диска • Перенос файлов на виртуальный диск • Установка ReactOS • Установка драйверов
Сеть Общие папки • Samba • NFS
Игры Установка DirectPlay
Обновление ReactOS • Загрузочная флешка • Чем можно помочь проекту • Создание нового пользователя • Звук и сеть в VirtualBox • Съемка и публикация видео • IRC-канал • Сторонние компоненты • FAQ • ReactOS как рабочая станция • ReactOS и UEFI
Обзоры Оболочка • NTVDM • WOW • Community Edition • История сайта • ReactOS Server • Криптография • ПО времен XP