Strona główna | Informacje | Społeczność | Rozwój | mójReactOS | Kontakt
|
Rozwój ReactOS > FAQ ProgramistyFAQ ProgramistyFAQ Programisty (Często zadawane pytania, Frequently Asked Questions) ReactOS. Poczytaj User FAQ. jeżeli masz pytania dotyczące posługiwania się ReactOS
OgólnieJak zapobiec pojawianiu się nieuchronnego napisu "Microsoft" w ReactOS?Naszym zdaniem ten napis nie jest konieczny, jeżeli uczciwie programować. Tekst ten jest zbędny wszędzie poza rejestrem. Czy sterowniki projektowane dla Windows, działają w ReactOS?Mamy doniesienia o pewnych sterownikach, które działały, jednakże dopóki niektóre sekcje jądra nie są zaimplementowane, nie jesteśmy w stanie zagwarantować działania wszystkich sterowników. Jak mogę skompilować ReactOS z ƒródeł?Zajrzyj na Wiki: Build Environment page, tam znajdują się instrukcje dotyczące kompilacji. Dlaczego nie pomagacie projektowi Wine zamiast ReactOS?Obecnie pracujemy bardzo blisko z projektem Wine. Wine zapewne ma więcej wspólnego z ReactOS niż z Linuxem. Głównym celem Wine jest zaimplementowanie całości WinAPI ponad warstwą WineServer. Tylko niektóre biblioteki DLL z Wine nie mogą być użyte w ReactOS: to NTDLL, USER32, KERNEL32, GDI32 oraz ADVAPI, za to reszta plików dll może być dzielona z projektem ReactOS. Mamy programistów w Wine i w ReactOS zajmujących się wzajemną kompatybilnością obydwu projektów. Jednak Linux+Wine nigdy nie będą pełną alternatywą dla Windows. ReactOS ma w planach o wiele większy stopień kompatybilności, a w szczególności kompatybilność ze sterownikami pisanymi dla Windows, sterownikami, których Wine już nie obsłuży. Którego IDE powinienem używać przy pisaniu ReactOS?Zobacz na Wiki: Using an IDE. Czym jest tzw. Problem SEH?Strukturalne przechwytywanie wyjątków (Structured exception handling, SEH) jest używane w procesie programowania ReactOS, tak jak i w programowaniu OS/2 czy Windows NT. SEH jest grą rozgrywaną pomiędzy systemem operacyjnym a kompilatorem (słowa kluczowe: __try, __except, __finally). ReactOS sam w sobie jest przygotowany na SEH i dostarcza odpowiednią infrastrukturę do obsługi SEH. Jednak używany dotychczas kompilator GNU (GCC) nie jest w stanie generować kodu SEH, tak więc nie można kompilować żadnego kodu wykorzystującego SEH poprzez kompilator GNU, w tym i sterowników.
Podsystem graficznyDlaczego podsystem graficzny znajduje się w Ring 0 a nie w Ring 3?Po prostu Microsoft zrobił to w ten sposób, my tak samo musimy postąpić, jeżeli skupiamy się na kompatybilności. Dlaczego Microsoft umieścił GUI w Ring 0?Ponieważ płynie z tego korzyść dla prędkości. W przeciwieństwie do serwera GUI działającego jako osobny proces, podczas operacji na GUI nie zachodzą zmiany kontekstu. Oczywiście przez umieszczenie GUI w Ring 0 architektura nie jest tak czysta, i oczywiście kiedy nawali GUI siada cały system. Taka sama dyskusja miała miejsce w Redmont, kiedy to GUI zostało umieszczone w krenelu MS Windows NT 4.0. Wysnuto wtedy następujący wniosek: GUI jest na tyle rozwinięte, że tylko wadliwy sterownik może zachwiać stabilność systemu, a konsekwencje takiego braku stabilności są podobne jak błędy w programie trybu użytkownika. Czy ReactOS ma takie same problemy z bezpieczeństwem jak Windows?Windows NT wewnętrznie nie jest tak naprawdę nieszczelnym systemem. Naszym zdaniem stał się takim z powodu niektórych chybionych decyzji Microsoftu. Przykładowo Windows XP nadaje każdemu nowemu użytkownikowi prawa administratora. Niektóre usługi są naprawdę kiepsko zaimplementowane i nieraz to wygoda użycia bierze górę nad bezpieczeństwem. Jednakże w ReactOS możemy te priorytety rekonfigurować. Problemem jest to, że Microsoft nie wywarł nacisku na twórców oprogramowania i nie zmusił ich do przygotowania programów do działania z prawami użytkownika. Którego GUI mogę użyć?Aby odpowiedzieć na to pytanie, musisz zrozumieć że w Windows/ReactOS:
Systemy plikówReactsOS wykorzystuje sterowniki w ten sam sposób, co Windows. Z tego powodu zaimplementowany został interfejs IFS (Installable File System - Instalacyjne Systemy Plików), przez co ReactOS jest w stanie załadować i wykorzystywać sterowniki IFS. W momencie pisania tego tekstu ReactOS nie może jeszcze korzystać z natywnych IFS dla systemów NT, jednak w przyszłości zaistnieje możliwość posługiwania się nawet natywnym sterownikiem NTFS. Możemy wykorzystać sterownik FAT32 z FreeDOS?ReactOS posiada obsługę FAT32 od lat i nie ma potrzeby implementacji innego sterownika. Czy ReactOS obsługuje VFAT i długie nazwy?Tak, ReactOS natywnie wspiera długie nazwy z wykorzystaniem Unicode. To jak to jest rozwiązane to już sprawa sterownika, a sterownik FAT dostarczany wraz z ReactOS obsługuje VFAT. Dlaczego nie zaimplementujecie Ext2/3 zamiast skupiać się na NTFS?Dlatego że NTFS jest główną funkcją, którą kiedyś trzeba będzie zaimplementować. Ext2/3 jest naturalnie ważnym tematem, jednak istnieją już projekty natywnej implementacji Ext2/3 dla WinNT. Te sterowniki znajdą miejsce w ReactOS, kiedy będą już dostatecznie dobre. Gdzie mogę znaleźć sterowniki IFS Ext2/3 dla NT?Strony: http://uranus.it.swin.edu.au/~jn/linux/ext2ifs.htm http://sys.xiloo.com/projects/projects.htm#ext2fsd http://ashedel.chat.ru/ext2fsnt/. Mogę pomóc w tworzeniu sterowników IFS?Jasne, jest mnóstwo do zrobienia w tym temacie, jednakże jest to praca bardzo trudna. Można powiedzieć że pisanie sterowników jest diabelnie trudne a pisanie systemów plików to dziedzina mistrzów. Jeżeli jesteś prawdziwym kernel-hackerem, zapisz się na listę mailingową i zgłoś się. Mogę użyć Ext2/3 zamiast bawić się w NTFS?Tak, to, jakiego systemu plików użyjesz zależy tylko od Ciebie, ale póki co Ext2/3-IFS i nasz NTFS-IFS nie są gotowe do zapisu-odczytu (i jeszcze dużo zostało do zaimplementowania), więc jedynym rozwiązaniem na ten moment pozostaje FAT-IFS. Dlaczego by nie zrobić użytku z open source'owej implementacji NTFS: Linux-NTFS?Owszem, te °ródła są użyteczne, ale obecnie jedyną kompletną implementacją NTFS jest ta od Microsoftu (otwarte implementacje nie obsługują zapisu). Nadal jest wiele obszarów w NTFS, które nie zostały poznane/udokumentowane. Pracujemy wspólnie z Linux-NTFS - albo przynajmniej na razie - używamy ich kodu. Póki co NTFS nie jest sprawą priorytetową dla ReactOS więc aktywne działania w tej kwestii nie występują. Jaki wpływ na sukces ReactOS będzie miało wsparcie NTFS?Projekt ReactOS ewentualnie uzna obsługę NTFS za priorytet w przyszłości, ale na ten moment nie ma specjalnych powodów aby tak postępować. NTFS jest głównie tylko systemem plików, więc wsparcie dla niego jest potrzebne głównie po to aby odczytać dane zapisane na partycji już sformatowanej w NTFS. Inne systemy plików obsługują wszystkie zaawansowane funkcje, które posiada NTFS (tj. kronikowanie, listy kontroli dostępu, kompresja, twarde dowiązania itp.), tak więc jest możliwość wykorzystania innych systemów plików. Całe oprogramowanie jest dostarczane na CD (ISO-9660) lub DVD (UDF), ew. dyskietkach (FAT12), zewnętrzne nośniki flash zazwyczaj używają FAT jako FS. Pliki °ródłowe JFS są otwarte i dostępne do ściągnięcia za darmo. Dlaczego by nie uczynić JFS domyślnym systemem plików dla ReactOS?Owszem, przynajmniej IFS jest planowany. JFS jest w czołówce wśród systemów plików, obsługuje kronikowanie, ACL, rozszerzone atrybuty, duże pliki i partycje oraz twarde dowiązania, z takim zapleczem pasowałby do ReactOS jak ulał. Pracujemy nad tym, jednakże nadal możesz nam pomóc. Jak sobie radzicie z czułością na duże/małe litery?Czułość nie jest problemem systemu plików, za to jest ona zależna od powiązanego z nim sterownikiem. Menedżer obiektów, dostarczający obsługę całych przestrzeni nazw, wspiera czułość na wielkość znaków natywnie, więc sterowniki IFS dostają flagę czułości na wielkość znaków, którą już muszą same obsłużyć. Przeportowany sterownik (np. ext2) musi obsługiwać obydwa przypadki zarówno czułości i nieczułości na wielkość znaków. Czy 64-bitowy system plików zadziała na 32-bitowej maszynie?Tak. Część 64-bitowa to tylko adresowanie klastrów na dysków, nie ma to nic wspólnego z wykonywalnym sterownikiem, ten z kolei jest tylu-bitowy, co cały system operacyjny. Które systemy plików są obecnie wspierane przez ReactOS?FAT(12/16/32) plus VFAT, ISO-9660 - CD-ROM, NPFS - named pipe file system (wewnętrzny FS), MSFS - mailslot file system (wewnętrzny FS) Które systemy plików będą obsługiwane w ReactOS?Naszym celem jest dostarczenie wsparcia dla jak największej ilości systemów plików. Sterowniki IFS dla tych systemów, które już są obsługiwane przez Linuxa, ale jakby na to nie patrząc, programowanie zgodnego/działającego IFS jest piekielnie trudnym zadaniem. Tak więc potrzeba czasu. Dodane zostaną nast. systemy: NTFS albo JFS i jakiś bardziej zaawansowany system np. ext3. Mam pomysł: porzućmy te przestarzałe litery dysków!Pomysł jest już stary, zapewne nawet Microsoft się nad tym zastanawiał, ale póki co ani Redmont ani ReactOS nie zaimplementowali takiego rozwiązania. Programiści ReactOS również rozważali takie posunięcie, jednak nie ma żadnych konkluzji co do tego tematu. Pomysły tj. system plików z montowaniem bazowany na pamięci albo odkrycie przestrzeni nazw menedżera obiektów dla aplikacji, mają wady. Uwaga: ReactOS/Microsoft(R) Windows(R) NT Kernel nie operuje na literach dysków. Jest to pozostałość po DOS'ie (a raczej po CP/M) Czym jest Redirector?Jest to specjalny typ sterownika IFS. Nie implementuje on dyskowego systemu plików, za to wykorzystuje stos sieciowy jądra aby dostarczyć zdalny system plików (np. SMB). Czym jest identyfikator systemu plików?Właściwy sterownik systemu plików jest ogromny. Ładowanie go jedynie w celu sprawdzenia typu systemu plików jest stratą czasu. Dlatego Dave Cutler zaproponował sterownik tzw. identyfikator systemu plików, mający za zadanie przeszukanie partycji, rozpoznanie ich systemów plików i załadowanie odpowiednich IFS.
DebuggingJak mogę śledzić niewychwycone wyjątki w trybie użytkownika?Trace wygląda mniej więcej tak: (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 Zajrzyj do reactos/baseaddress.cfg, znajd° niższy adres najbliższy adresowi który chcesz śledzić. Otwórz plik .map odpowiedniej DLL i poszukaj offsetu. |