Главная | Информация | Сообщество | Разработка | Мой ReactOS
|
Разработка ReactOS > ЧаВо разработчикаЧаВо разработчикаЧаВо разработчика (Часто Задаваемые Вопросы) о ReactOS. Если у вас есть ещё вопросы, прочитайте ЧаВо пользователя.
ОбщееКак вы избежите неминуемого появления текста «Microsoft» в ReactOS?Мы уверены, что это подпадает под определение «добросовестного использования» (англ. fair use). Также это не является необходимым, за исключением реестра. Будут ли драйверы, спроектированные для Windows, работать в ReactOS?Некоторые драйверы точно работают, но на данный момент мы не можем гарантировать работу всех драйверов, поскольку некоторые возможности ядра всё ещё не реализованы. Что мне нужно, чтобы скомпилировать ReactOS из исходного кода?Загляните на страницу Build Environment за информацией о компиляции ReactOS из исходного кода. Почему вы вместо этого не помогаете проекту WINE?На самом деле, мы тесно сотрудничаем с проектом WINE. WINE, возможно, имеет больше общего с ReactOS, чем с Linux. Проект WINE имеет целью разработку всего API Windows поверх WineServer. Есть всего лишь несколько dll из WINE, которые не могут быть использованы в ReactOS. Это NTDLL, USER32, KERNEL32, GDI32 и ADVAPI. Остальные dll могут разрабатываться совместно с ReactOS. У нас есть несколько разработчиков в обоих проектах WINE и ReactOS, которые работают над проблемами кросс-совместимости между ними. На наш взгляд, связка Linux + Wine никогда сможет быть полной заменой для Microsoft® Windows®. У ReactOS есть потенциал для более высокого уровня совместимости, особенно для драйверов Microsoft® Windows®, на которые не нацелен проект WINE. Какой IDE мне следует использовать для разработки ReactOS?На странице «Разработка в IDE» есть информация о поддерживаемых редакторах. Как насчёт так называемой «проблемы SEH»?Структурированная обработка исключений (SEH) используется в программировании ReactOS так же, как использовалась при программировании OS/2 или Microsoft® Windows® NT. SEH - это игра, в которую играют ОС и компилятор (Ключевые слова: __try, __except, __finally). ReactOS сама по себе поддерживает SEH и предоставляет соответствующую инфраструктуру. Однако, до сих пор, используемый GNU-компилятор не может генерировать код, поддерживающий SEH. Поэтому невозможно скомпилировать драйвер или программу, использующую SEH, компилятором GNU.
Графическая подсистемаПочему графическая подсистема находится не в Ring 3, а в Ring 0?Коротко говоря, потому что так сделала Microsoft, и наша цель — совместимость драйверов, мы должны были сделать так же. Почему Microsoft поместила GUI в Ring 0?Потому что это даёт ощутимый прирост скорости. В противовес серверу GUI, который работает в отдельном процессе, здесь нет смен контекста, необходимых при выполнении графических операций. Это, конечно, делает архитектуру менее прозрачной, и, если падает GUI, то падает вся система. Такая же дискуссия происходила в Редмонде, когда GUI переезжал в ядро в Microsoft® Windows® NT 4.0. Они пришли к заключению, что графическая подсистема доведена до совершенства, поэтому всё будет отлично, пока не появится ошибочный драйвер, и что последствия похожи на то, что произойдёт, если что-то пойдёт не так в пользовательском режиме. Правда ли, что у ReactOS такие же проблемы с безопасностью, что и у Microsoft® Windows®?Microsoft® Windows® NT и её последующие версии, на самом деле, по сути, не являются небезопасными системами. Мы полагаем, что Microsoft сделала безопасную систему небезопасной в результате некоторых неудачных решений. Например, Windows XP по умолчанию предоставляет каждому пользователю права администратора. Некоторые службы неаккуратно реализованы, простота использования зачастую берёт верх над безопасностью. Мы, тем не менее, можем расставить другие приоритеты при разработке ReactOS. Проблемой может стать только то, что Microsoft не заставляла создателей программ писать программы таким образом, чтобы они работали с нормальными пользовательскими правами. Какой графический интерфейс я могу использовать?
Чтобы ответить на этот вопрос, нужно понимание того, как работает графический интерфейс в ReactOS/Microsoft® Windows®:
Файловые системыReactOS использует драйвера файловых систем, так же как это делает Microsoft® Windows® NT. По этой причине она предоставляет интерфейс IFS (интерфейс монтируемых файловых систем). Поэтому ReactOS сможет загружать и использовать IFS-драйвера. ReactOS всё ещё не может загружать родные IFS-драйвера Microsoft® Windows® NT. Но придёт время, и ReactOS будет иметь возможность загружать даже драйвер NTFS. Можем ли мы разработать версию драйвера файловой системы FAT32 на основе FreeDOS?ReactOS поддерживает FAT32 уже несколько лет. Нет необходимости в разработки ещё одного драйвера. Поддерживает ли ReactOS VFAT и длинные имена?ReactOS изначально поддерживает длинные и юникодовые имена файлов. Драйвер FAT, поставляемый с ReactOS поддерживает VFAT (=длинные имена на FAT). Почему вы не используете Ext2/3 вместо того чтобы фокусироваться на NTFS?Потому что NTFS - это значительная особенность ОС, поддержка которой должна быть реализована. Ext2/3, конечно, актуален для нас, тем не менее, уже есть проекты, цель которых - поддержка Ext2/3 в NT. Мы используем эти драйверы, когда они станут достаточно хорошими. Где я могу найти Ext2/3-IFS для NT?Вот здесь: http://uranus.it.swin.edu.au/~jn/linux/ext2ifs.htm http://sys.xiloo.com/projects/projects.htm#ext2fsd http://ashedel.chat.ru/ext2fsnt/ Могу я помочь в написании драйвера монтируемых файловых систем (IFS)?Конечно, предстоит куча работы в области IFS-драйверов. Их, тем не менее, очень сложно программировать. Программировать драйвера сложно, но программировать драйвера файловых систем - сущее наказание. Если Вы - настоящий гуру в области низкоуровневого программирования, заходите в нашу рассылку и дайте о себе знать. Можем ли мы использовать Ext2/3 вместо возни с NTFS?Да, ваше дело, какую файловую систему использовать. В настоящее время, тем не менее, ни Ext2/3-IFS, ни наша NTFS-IFS не готовы к использованию для чтения и записи. Поэтому тут предстоит ещё много работы, и единственный пока вариант - это FAT-IFS. Почему вы не используете исходный код проекта Linux-NTFS?Этот исходный код полезен, но, как и все реализации NTFS (за исключением оной от Microsoft), она не предоставляет поддержку записи. Всё ещё существуют много недокументырованных/неизвестных областей NTFS. Мы работаем вместе с разработчиками Linux-NTFS - или, как сейчас, - просто используем их код. Пока у NTFS нет приоритета в проекте, поэтому активный вклад в это дело всё ещё практически отсутствует. Насколько критична поддержка NTFS для успеха ReactOS?У проекта ReactOS со временем будет прицел на поддержку NTFS, но сейчас это не критично. NTFS - это прежде всего файловая система для жёстких дисков, поэтому единственная причина, по которой она может быть абсолютно необходима - это если при работе в ReactOS Вы хотите иметь доступ к разделу на жёстком диске, отформатированному в NTFS. Другие файловые системы могут предоставлять продвинутые возможности NTFS (журналирование, списки контроля доступа (ACL), сжатие, жёсткие ссылки и т.п.), если нет необходимости в строгой совместимости с NTFS. Все программы поставляются на CD или DVD дисках (ISO-9660 или UDFS), возможно, на дискетах (FAT). Внешние носители (compact flash, memory stick, др.) обычно форматируются в FAT. Исходный код JFS (также и для OS/2) свободен для скачивания. Почему бы не сделать JFS стандартной файловой системой в ReactOS?Да, по крайней мере драйвер IFS уже запланирован. Поскольку JFS кроме того является высокотехнологичной файловой системой с журналированием, большими файлами и разделами, списками контроля доступа, расширенными атрибутами и жёсткими ссылками, она отлично подойдёт ReactOS. Мы работаем над ней и любая помощь приветствуется. Как вы работаете с чувствительностью к регистру (например в ext2)?Чувствительность к регистру - это не проблема самой файловой системы. Это один из аспектов работы соответствующего драйвера. Менеджер объектов предоставляет полную поддержку чувствительности к регистру во всём пространстве имён. IFS-драйвера имеют специальный флаг регистра, который они должны соответствующим образом обрабатывать. Поэтому, портированный драйвер файловой системы должен иметь поддержку как чувствительности, так и нечувствительности к регистру. Работает ли 64-битная файловая система на 32-битной машине?Да. 64-битная часть - это всего лишь адресация на диске. Она не имеет ничего общего с бинарным файлом содержащим драйвер. Этот файл имеет такую же битность, как и вся операционная система. Какие файловые системы поддерживает ReactOS в данные момент?FAT(12/16/32) вместе с VFAT, ISO-9660 - CD-ROM, NPFS - named pipe file system (внутренняя FS), MSFS - mailslot file system (внутренняя FS) Какие файловые системы будет поддерживать ReactOS?Наша цель - поддерживать столько файловых систем, сколько возможно. IFS-драйвера могут быть созданы, по крайней мере, для тех файловых систем, которые доступны в Linux. Тем не менее, очень сложно разработать рабочий/соответствующий стандарту драйвер файловой системы. Так что это займёт некоторое время. Как минимум, будут: FAT(12/16/32) вместе с VFAT, ISO-9660 - CD-ROM, файловые системы более высокого уровня, такие как ext3, NTFS или JFS, NPFS - named pipe file system (внутренняя FS), MSFS - mailslot file system (внутренняя FS) У меня идея! Почему бы не отказаться от этих странных букв дисков?Это старая идея. У Microsoft, возможно, она тоже появилась, но компания до сих пор не реализовала ей. В команде ReactOS также есть мысли по этому поводу. Но пока что нет удовлетворительного заключения по этому вопросу. Есть идеи, например, использовать файловую систему в памяти для монтирования, или открытия пространства имён менеджера объектов приложениям win32s, или использовать слова для именования дисков, но каждое решение имеет свои недостатки. Заметка: Ядро ReactOS/Microsoft® Windows® NT не работает с буквами дисков. Они являются атавизмом, оставшимся от DOS (или, следовало бы сказать, CP/M). Что такое перенаправитель?Это особая форма драйвера IFS. Она не реализует дисковую файловую систему. Вместо этого, она полагается на сетевой стек ядра и предоставляет удалённую файловую систему (то есть SMB шары). Что такое опознаватель файловых систем?Настоящий драйвер файловой системы имеет большой размер. Загрузка его только чтобы удостовериться, что нет разделов, которые он смог бы монтировать, пустая трата времени. По этой причине Дэйв Катлер придумал так называемый драйвер-опознаватель. Это более или менее существенная часть драйверной архитектуры. Этот драйвер загружается и ищет разделы, которые может читать его компаньон IFS-драйвер. Если он находит такой раздел, то загружает соответствующий драйвер для монтирования. ОтладкаКак трассировать необработанное исключение в пользовательском режиме?Трейс выглядит примерно так: (KERNEL32:process/create.c:328) Process terminated abnormally due to unhandled exception (KERNEL32:process/create.c:329) Address: 761a13e0 (KERNEL32:process/create.c:334) Frames: (KERNEL32:process/create.c:338) 761a2be9 Загляните в reactos/baseaddress.cfg, найдите ближайший снизу адрес, соответствующий адресу, который вы пытаетесь отладить. Откройте файл .map, соответствующей DLL в просмотрщике и ищите смещение. |