Команда ReactOS объявила о выходе версии 0.4.16. За полтора года разработки в системе появился новый графический установщик, единый образ, объединяющий bootcd и livecd, улучшения стека видео, аудио, сети и накопителей, новый тип установки Server Core, а также синхронизация со сторонним кодом сторонних проектов.
Графический установщик и универсальный загрузочный образ
Раньше ReactOS предлагал для загрузки два отдельных образа: livecd, позволяющий протестировать систему в режиме только для чтения, и bootcd, с помощью которого можно было установить ReactOS на диск через текстовый установщик. Благодаря работе Эрмеса Белюска-Майто (hbelusca) в ReactOS 0.4.16 появился новый графический установщик и объединённый образ bootcd/livecd. Теперь тестировать и устанавливать систему можно с помощью одного и того же образа.
Графический установщик
Установка или обновление ReactOS
Базовое управление разделами
Копирование файлов
Графическая установка завершена
О работе над установщиком Эрмес рассказал в серии постов в блоге:
- Часть 1 — сентябрь 2023: частичная синхронизация setupapi с Wine
- Часть 2 — октябрь-ноябрь 2023: работа интерфейса разметки дисков
- Часть 3 — декабрь 2023: первые тесты
Видео
В процессе разработки версии 0.4.15 core-разработчик Эрве Пуссино (hpoussin) заложил основу для поддержки нескольких мониторов и переключения на драйвер VGA при сбое загрузки видеодрайверов. Эта база позволила продолжить работу над совместимостью с видеодрайверами уже в версии 0.4.16.
Годами ReactOS страдал от проблем со всеми крупными производителями видеодрайверов. Особенно досаждала проблема замедления работы на видеокартах Nvidia, которую исследовали многие талантливые контрибьюторы и разработчики. В итоге Джастин Миллер (The_DarkFire_) обнаружил, что при загрузке сторонних драйверов у ядра заканчивались системные записи в таблице страниц (PTE). Особенно остро эта проблема проявлялась с графическими драйверами, которые выделяют больше памяти, чем большинство других. Джастин изменил схему памяти, используемую менеджером памяти, чтобы увеличить количество системных PTE. Это устранило трудноуловимый баг замедления с видеодрайверами Nvidia.
На видеодрайверах AMD окно OpenGL оставалось пустым. Проблему решили переписыванием функции ExtEscape, вдохновившись патчем покойного core-разработчика Джеймса Тейбора (jimtabor). Эти изменения улучшили стабильность, управление ресурсами новых устройств и устранили множество пограничных ошибок в драйвере win32k.sys. Команда благодарит контрибьюторов и разработчиков за время, потраченное на эти исправления — они требовали колоссального объёма исследований.
Аудио
До версии 0.4.16 поддержка HD-аудио в ReactOS была неполной. Драйверы HD-аудио зависят от шинного драйвера (hdaudbus.sys), включая драйверы от AMD, IDT, Nvidia, Realtek и SigmaTel. Первую реализацию давно написал Йоханнес Андервальд (janderwald), но она так и не была завершена и часто вызывала сбои при попытке установить драйверы HD-аудиоконтроллеров. Core-разработчик Олег Дубинский (oleg-dubinskiy) импортировал sklhdaudbus — новый шинный драйвер HD-аудио, заменивший старую реализацию.
Теперь HD-аудиоконтроллеры, совместимые с Windows XP и Windows Server 2003, должны работать в ReactOS 0.4.16. Ниже видео с работой HD-аудиоконтроллера Realtek на ReactOS 0.4.16:
Новый шинный драйвер HD-аудио зависит от Kernel Mode Driver Framework (KMDF). Microsoft открыла исходный код KMDF в рамках репозитория Windows-Driver-Frameworks. Джастин импортировал KMDF для нового шинного драйвера HD-аудио, и теперь этот фреймворк можно использовать для импорта или разработки других драйверов.
Олег также исправил регуляторы громкости и баланса в свойствах звука (mmsys.cpl) и в микшере громкости (sndvol32.exe). Теперь уровни громкости и баланса сохраняются и восстанавливаются после перезагрузки при использовании HD-аудиокодека. Кроме того, Олег обновил код перечисления аудиоустройств для поддержки большего числа звуковых карт, а также улучшил двоичную совместимость со звуковым стеком Windows благодаря исправлениям, внесённым в стек Plug and Play (PnP) и SetupAPI.
Накопители
С 2009 года ReactOS использовал драйвер накопителей UniATA для поддержки SATA, AHCI и разделов больше 8 ГБ. Тогда это было огромным подспорьем, но сегодня UniATA стал причиной медленной загрузки и сбоев на многих устройствах, приводящих к печально известной ошибке INACCESSIBLE_BOOT_DEVICE (0x7B). ReactOS 0.4.16 представляет новый ATA-драйвер, разработанный контрибьютором Дмитрием Борисовым (disean). Новый драйвер позволяет ReactOS загружаться в гораздо большем числе сред, включая Hyper-V Generation 1.
В 2021 году был импортирован и включён драйвер FastFAT с открытым кодом от Microsoft. К сожалению, это нарушило возможность восстановления разделов FAT с помощью chkdsk. Core-разработчик Дуг Лайонс (Doug-Lyons) исправил процедуры chkdsk для FAT, чтобы они работали с драйвером Microsoft FastFAT.
Core-разработчик Марк Янсен (learn-more) добавил в ReactOS 0.4.16 утилиту очистки диска. Она совместима с расширениями для утилиты очистки диска Windows, что позволяет сторонним программам, как и самой операционной системе, очищать используемое дисковое пространство.
Проверка диска
Очистка диска
Сеть
Во время разработки версии 0.4.15 Дмитрий представил новый драйвер сетевого адаптера DC21X4 для повышения аппаратной совместимости. Этот драйвер используется на устройствах с сетевыми адаптерами на базе DECchip 21x4, а также в виртуализированных средах, таких как Microsoft Virtual PC 2007 и Hyper-V Generation 1. Теперь ReactOS 0.4.16 может загружаться и выходить в интернет в обеих этих средах.
Версия 0.4.16 также добавляет поддержку асинхронных соединений. Это повышает производительность сети, позволяя приложениям выполнять сетевые операции без блокировки, а также улучшает совместимость приложений, поскольку многие программы предполагают, что API асинхронных соединений всегда доступны.
ReactOS Server Core
ReactOS поддерживает типы установки Workstation и Server. При установке Workstation по умолчанию включено больше графических возможностей по сравнению с установкой Server. Кроме того, пользовательские папки в установках Workstation по-прежнему находятся внутри папки «Мои документы», хотя начиная с Windows Vista эти папки были перенесены за пределы папки «Документы» как для Server, так и для Workstation.
Стремясь расширить применение ReactOS в серверных и встраиваемых средах, core-разработчик Карл Бялоруцки (cbialorucki) добавил тип установки Server Core. Он отключает графическую оболочку Explorer, но при этом загружает полноценную подсистему Win32. ReactOS Server Core работает по принципу, аналогичному Windows Server Core, представленному в Windows Server 2008.
Опция установки Server Core
Загрузка в Server Core
Запуск программ в Server Core
Синхронизация со сторонним кодом
ReactOS использует несколько других проектов с открытым исходным кодом как часть своей кодовой базы. Один из крупнейших таких проектов — Wine, реализация ряда Windows API для Unix-подобных операционных систем. ReactOS использует форк Wine, взаимодействующий напрямую с ядром, похожим на Windows, вместо трансляции вызовов в Unix-подобное ядро.
Долгие годы ReactOS оставался ограничен версиями Wine 2.x и 3.x из-за опасений совместимости с API новее тех, что были доступны в Windows Server 2003. К концу цикла разработки 0.4.15 от строгого следования совместимости с Windows Server 2003 отказались, что позволило постепенно обновить форк Wine до версии 10.0. Это обновление ещё не завершено, но версия 0.4.16 включает значительную часть этой работы. Ожидается, что переход на Wine 11.0 и более новые версии будет заметно проще благодаря проделанной работе по достижению версии 10.0.
На данный момент релизный образ ReactOS всё ещё компилируется только с экспортами Windows Server 2003, поскольку ряд программ ожидает наличия всех экспортов Windows Vista и новее, даже если реально доступна лишь часть из них. Желающие поэкспериментировать с поддержкой приложений для Windows Vista и новее могут собрать ReactOS с флагом -DDLL_EXPORT_VERSION. Инструкции по сборке ReactOS доступны здесь.
Впервые релизные образы ReactOS будут включать WineVDM, повышающий совместимость с 16-битными приложениями Windows. WineVDM — проект otya128, доступный здесь.
Заключительные мысли
Миссия ReactOS — «запускать ваши любимые приложения и драйверы Windows в среде с открытым исходным кодом, которой можно доверять». С каждым релизом мы приближаемся к достижению этой цели. Мы с нетерпением ждём возможности поделиться с вами новыми разработками и успехами.
Мы выражаем глубочайшую благодарность нашему сообществу, контрибьюторам и донорам. Без контрибьюторов мы не смогли бы продвигаться в разработке. Без доноров мы не смогли бы финансировать инфраструктуру тестирования и хостинга или контракты на разработку для ускорения прогресса. А без сообщества никто бы о нас не узнал. Спасибо, что делаете ReactOS возможным!
Если вы хотите присоединиться к нашему сообществу, внести вклад или сделать пожертвование проекту ReactOS, заходите на нашу домашнюю страницу — там есть страница пожертвований, ссылки на социальные сети и наш GitHub.
С уважением,
Команда ReactOS
Статистика
Закрытых задач Jira: 381
Коммитов: 2808
Самая старая закрытая задача Jira: CORE-3804 от 3 февраля 2009 года
Ветка releases/0.4.16 была отделена от master 28 апреля 2026 года после коммита bac97c5.