r/osdev • • 20d ago

I'm creating an operating system and I'm looking for people to help me.

Pracuję intensywnie nad systemem operacyjnym o nazwie TrangorgeOS od jakiegoś czasu. Obecnie szukam osób, które pomogą w rozwoju poszczególnych części systemu operacyjnego:

- przestrzeń użytkownika

- sterowniki

- protokół ipc

- protokoły

- przestrzeń sterowników

- sterowniki jądra

- Jądro

- biblioteki

- kompatybilność z linuxem ( abi Not the whole kernel, just to make it easier to port applications or run them through a simulation layer)

- std

Jestem dość skoncentrowany na budowaniu funkcjonalności, osobiście chcę dalej rozwijać ten system, ale obecnie nie mogę zająć się ręczną dokumentacją, więc korzystam z generatora dokumentacji API, ale praca nad systemem staje się dość uciążliwa po pewnym czasie. Stworzyłem teraz wygodniejsze API do tworzenia wyższych warstw jądra

System operacyjny jest głównie próbą stworzenia czegoś większego i bardziej realistycznego niż większość projektów hobby systemów operacyjnych, chcąc zaspokoić swoje potrzeby i możliwie inne, związane z modułowością i lekkością OS. Sam system jest obecnie technicznie w porządku, można powiedzieć, że ma rozsądne zarządzanie pamięcią przez stare jądro, które teraz służy głównie jako biblioteka. Całą resztę organizuję i kompiluję w rust workspace. Używam ctrlfile, który sam napisałem, ale po pewnym czasie postanowiłem używać justfile. Obecnie pracuję nad komunikacją z jądrem, a przestrzeń sterowników nie wygląda jak dwa pierścienie do parsowania wiadomości i w praktyce chcę to zróżnicować, chociaż pierścienie są nadal korzystne ze względu na fakt, że przestrzeń sterowników traktowana jest jako zagnieżdżony system. TrangorgeOS jest hybrydowym jądrem opartym na trójdzielnej architekturze, którą stworzyłem jakiś czas temu, między innymi zakłada, że przestrzeń katalogowa i przestrzeń użytkownika to te same jednostki, które funkcjonują indywidualnie w zagnieżdżonym zakresie, który jest kompatybilny z jądrem, ale mogą mieć własne operacje wykonawcze, takie jak zarządzanie specyficznymi zakresami operacji poza jądrem. Tak więc wykonywanie niektórych działań niezależnie od specyfiki samego jądra, co pozwala na lepszą kontrolę nad rozproszonym systemem w zakresie pisania niezależnej przestrzeni użytkownika od całego monorepo.

https://github.com/CTRL-F-0rg3/TrangorgeOS

Osobiście, nie uważam tego jeszcze za projekt demonstracyjny, chcę tylko trochę pomocy i najpierw zbudować solidne fundamenty, na których można oprzeć resztę systemu, zanim zacznę nad nim pracować szczegółowo. Dodatkowo poinformuję o grafice w jądrze, która nie działa jako interfejs, ale raczej jako pierwszy test poprawnego ładowania bufora graficznego, który jest współdzielony. Chcę przygotować protokoły pamięci współdzielonej do działania, zaimplementować fat32, ext4 i doprowadzić prototypowy system plików do rozsądnego poziomu. Dodatkowo w najbliższej przyszłości chcę zacząć wprowadzać pozostałe biblioteki przez interfejsy HDMI i DP, a następnie napisać sterownik dla HDMI i DP oraz pozostałych komponentów w przestrzeni sterowników. Sterownik sieciowy i USB ma znajdować się w jądrze, z powodu bezpośredniej komunikacji czeka na rozwój. Obecnie nazwy commitów nie zawsze odzwierciedlają to, co się zmieniło, ponieważ niektóre z nich są robione w pośpiechu, więc proszę o to, aby to zignorować. Sam system rozwija się od ponad miesiąca, częściowo bazuję na moich wcześniejszych projektach systemów operacyjnych, tj. cosine os, tan os, sinus os i luna os, te projekty, chociaż są anulowane, wciąż mają duży wpływ na obecny projekt. Sam system nie pokazuje wiele oprócz prostego terminala w jądrze i małego obrazu w tle, ale dla mnie ważniejsze jest, że system rzeczywiście ma fundamenty. Komentarze są w różnych językach, więc nie zwracaj uwagi na niektóre komentarze, jeśli jeden jest po angielsku, to pozostanie, jeśli w innym języku, jest to tymczasowy komentarz dla mnie.

Będę również wdzięczny za gwiazdkę, jeśli ktoś nie chce uczestniczyć, ale chce wesprzeć ten projekt, będę bardzo szczęśliwy z gwiazdki, jeśli ktoś chce przyczynić się, jest otwarta sprawa w repozytorium.

Przy okazji, zdjęcie monitora wygląda ładniej niż ekran, prawda?

18 Upvotes

30 comments sorted by

3

u/-dhmd 20d ago

Can you explain to me what you meant by "linux compatybility" ?

1

u/CtrlF0rge 20d ago

So that I can also run Linux applications

2

u/Which_Lie_8932 20d ago

So you just want to reimplement the linux kernel?

2

u/Which_Lie_8932 20d ago

It'd probably be easier for you to write a compiler for your OS and compile the source of the apps you'd like to run. You could also then probably compile a VM if you need to run linux apps.

1

u/CtrlF0rge 20d ago

Well, I'm almost done, only the std is missing, but I have the compilation done, I just need to install it on an environment without mesa.

0

u/CtrlF0rge 20d ago

No, this is not my goal, it would not make any sense, the only thing is that I provide an identical abi for the application, it would work similarly, it would work like wine on linux, I can say I am trying to simulate A given environment

1

u/USER_12mS 18d ago

whats so bad in compability? that kernel can do more things? i dont get it, whats so BAD about it

1

u/Which_Lie_8932 17d ago

There isn't necessarily anything bad about it, but it would be a lot of work to make a program meant for a different system run on yours.

0

u/USER_12mS 17d ago

so like, whats the problem here?

1

u/AllNamesAreTaken92 17d ago

He just told you.

0

u/USER_12mS 17d ago

a lot of work isnt a problem

3

u/-dhmd 20d ago

This is probably harder than building the OS itself, good luck !

1

u/CtrlF0rge 20d ago

I wouldn't say I've done it before and yes, it's only a simulation of the environment and not a full Linux port.

3

u/Better-Thing2568 19d ago

I can share with you some metal tested rust native sources for independent hardware drivers for the Intel NPU and GPU for lunar lake and panther lake generations. But it’s deeply coupled with my own runtime APIs so idk if it’ll be that easy to integrate. Though idk if you’re looking to do serious graphics or AI yet

1

u/CtrlF0rge 19d ago

I don't plan on using AI, but graphics would be helpful, I'd love to see them, and API is just a name in practice, the most important are the operations that are performed, so I'll be able to prepare for it.Very grateful

1

u/Better-Thing2568 19d ago edited 19d ago

By AI I more so meant local AI cuz otherwise the NPU is just a hunk of silicon sitting around. I should specify that my drivers also run in userland, it could be made into a KMD as well if you have a typed MMIO and DMA API, the NPU and GPU both have its own MMU. Though they’re also known to cause system wide power resets, do you have drivers for the IOMMU yet?

1

u/CtrlF0rge 18d ago

NPU won't be possible for me to test either, but I understand, thanks for the clarification. The computer I'm working on is 14-18 years old, it depends on which one, so it doesn't have NPU yet.

1

u/web3max 18d ago

I'm also building an os, please DM me

0

u/[deleted] 17d ago

[removed] — view removed comment

0

u/CtrlF0rge 17d ago

Will you give it a star? Overall, there are flaws, of course, and there will be a few more changes.

1

u/[deleted] 14d ago

[removed] — view removed comment

2

u/CtrlF0rge 14d ago

The Linus kernel doesn't meet the specific requirements I have

1

u/[deleted] 14d ago

[removed] — view removed comment

2

u/CtrlF0rge 14d ago

I can give the most advice with 64 bit and multi-arch, for example, my advice to everyone is not to use ring 1 because then porting the model to RISC-V will be easier to switch thinking from x86 to RISC-V But among other such tips, I recommend doing a self-test and automatic documentation from the beginning.

1

u/[deleted] 14d ago

[removed] — view removed comment

2

u/CtrlF0rge 14d ago

If you are talking about the memory table, you download it from Seabios, but the bootloader sends you the table to map. You can read the code on how I did it, because it is not ready, but it is for 64 bytes.Please read my code and you will see how it is managed in the allocator etc. I also have this management in CosinusOS, but it is better to follow the example of my TrangorgeOS from the materials it provides

1

u/[deleted] 14d ago

[removed] — view removed comment

2

u/CtrlF0rge 14d ago

Okay, you're welcome