Simple OS based on .asm / .c double stage boot loader, and .c / .cpp based kernel with GCC .c / .cpp compiler.
For building you can download image in packages, then run container with next commands:
docker run -it -v [path to your project]:/home/os-dev/project --privileged=true --rm ghcr.io/j1sk1ss/os-dev-env:v02
Where:
-it - means that when you run this container you will get command line (fedora 38)
-v [path]:[path] - means that we connect your project with container directory
--privileged=true - needs for working with dev loop (Optional for creating images of OS)
--rm - delete container after use (Optional)
Before compile be sure that your script has right link to tool_chain. In this container tool_chain placed in
/home/os-dev/tool_chain
Used GCC 11.2.0
And used binutils 2.37
Also this container contains fedora 38, gcc, gcc-c++, make, bison, flex, gmp-devel, libmpc-devel, mpfr-devel, texinfo, nasm, mtools, qemu-system-x86, and grub tools.
This container tested in MacOS 10.15, Windows 10 (On win10 can be problems with image building. But compiling works fine) and Fedora 38
| TODO List: | Status: | Features: |
|---|---|---|
| [?] - WIP | ||
| [✓] - complete | ||
| 1) Multiboot struct | [✓] | 1) Physical memory manager |
| 2) Phys and Virt manages | [✓] | 2) Virtual memory manager (paging) |
| 2.0) Make page and phys prints... | [✓] | 3) Multitasking |
| 3) ELF check v_addr | [✓] | 4) Syscalls |
| 3.1) Fix global and static vars | [✓] | 4.0) Std libs for user programs |
| 3.2) Loading ELF without malloc... | [✓] | 4.1) Cordell-ASM compiler |
| 4) Paging (create error with... | [✓] | 5) Mouse & keyboard support |
| 4.0) Random Page fault (Null... | [✓] | 6) VBE support |
| 4.1) Tasking with paging | [✓] | 7) ELF support |
| 4.2) ELF exec with tasking... | [✓] | 8) BMP support |
| 5) VBE / VESA | [✓] | 9) FAT32/16/12 support |
| 5.0) VBE kernel | [✓] | 10) Boot config |
| 5.0.1) Kshell scrolling | [ ] | 11) Multidisk support |
| 5.1) Double buffering | [ ] | 12) Networking |
| 6) Keyboard to int | [✓] | 12.0) DHCP |
| 7) Reboot outportb(0x64, 0xFE); | [✓] | 12.1) UDP |
| 8) Mouse support | [✓] | 12.2) ARP |
| 8.0) Std lib for graphics | [✓] | 12.3) RLT8139 driver |
| 8.0.0) Objects | [ ] | |
| 8.0.1) Click event | [ ] | |
| 8.1) Loading BMP without malloc... | [✓] | |
| 8.1) Syscalls to std libs | [✓] | |
| 8.1.0) Syscalls for content... | [✓] | |
| 8.1.1) Syscalls for content... | [✓] | |
| 8.1.2) Syscalls for _kmallocp... | [✓] | |
| 8.2) VBE userland | [ ] | |
| 8.2.0) VBE file manager | [?] | |
| 8.2.1) VBE text editor | [?] | |
| 9) Malloc optimization | [ ] | |
| 10) Bugs | [?] | |
| 10.0) Tasking page fault... | [] | |
| 10.1) Mouse page fault | [✓] | |
| 10.2) Tasking with page allocator | [✓] | |
| 11) Ethernet | [?] | |
| 11.0) ethernet | [?] | |
| 11.0.0) Send packets | [✓] | |
| 11.0.1) Receive packets | [✓] | |
| 11.0.2) DHCP | [✓] | |
| 11.0.3) Sending data | [✓] | |
| 11.0.3.0) Sending normal... | [✓] | |
| 11.1) IP Udp, Arp | [✓] | |
| 11.2) Receive data on Host server | [✓] | |
| 11.3) STD libs for networking | [✓] | |
| 11.4) TCP | [ ] | |
| 11.5) Host sending to VK/TG etc | [ ] | |
| 12) KShell to ELF program | [✓] | |
| 12.1) MEM-DATA progs | [✓] | |
| 13) DOOM? | [ ] |
