https://github.com/modscleo4/dos
Floppy Disk Operating System
https://github.com/modscleo4/dos
assembly c grub2 multiboot2 os osdev
Last synced: 8 months ago
JSON representation
Floppy Disk Operating System
- Host: GitHub
- URL: https://github.com/modscleo4/dos
- Owner: modscleo4
- License: apache-2.0
- Created: 2020-05-14T19:50:49.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-06-10T15:02:08.000Z (over 1 year ago)
- Last Synced: 2025-03-24T02:13:02.162Z (9 months ago)
- Topics: assembly, c, grub2, multiboot2, os, osdev
- Language: C
- Homepage:
- Size: 704 KB
- Stars: 15
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DOS
A Simple x86 Operating System written in C.
## What's working
### Grub2
The Kernel is loaded by Grub2. The boot configuration is located in `rootfs/boot/grub/grub.cfg`.
### Multiboot 2
The Kernel is loaded by Grub2 using the Multiboot 2 protocol. The Kernel is loaded at `0x100000` and is loaded in 32-bit mode.
### MBR Parsing
The Kernel parses the MBR and finds its own partition. It does not support extended partitions. Then it setups the filesystem and mounts it.
### FAT12/16
The Kernel supports FAT12 and FAT16. It can read files and directories. The Kernel cannot write to FAT12/16.
### Ext2
The Kernel supports Ext2. It can read files and directories. The Kernel cannot write to Ext2.
### Syscalls
The Kernel supports syscalls via the `int 0x80` instruction. Currently the following syscalls are supported:
- `sys_write`
- `sys_read`
- `sys_open`
- `sys_close`
- `sys_stat`
- `sys_getpid`
- `sys_fork`
- `sys_execve`
- `sys_exit`
### ELF parsing
The Kernel can parse ELF files and execute them. It can also load debug symbols from itself.
### Kernel Modules
Currently the Kernel is built as a single binary. In the future it will be split into modules. The Kernel will load the modules from the filesystem.
### Networking
The Kernel supports the Intel 82540EM series of network cards. It can send and receive packets. The following protocols are supported:
- ARP
- IPv4
- UDP
- TCP
- DHCP
- DNS
### Libc
The Kernel is built on top of a primitive libc. It is located in `kernel/libc`. There's also a `system/libc` which is used by the userspace programs and in the future will generate a shared library.
## Goals
- [x] Grub2
- [x] Multiboot 2
- [x] MBR Parsing
- [x] FAT12/16
- [x] Ext2
- [x] ISO9660
- [ ] x86_64
- [x] Syscalls
- [x] Multitasking
- [x] Virtual Memory
- [x] ELF parsing
- [] Dynamic Linking
- [x] Kernel Modules
- [x] ACPI
- [ ] ACPICA
- [x] PCI
- [x] ATA
- [x] ATAPI
- [x] Networking
- [ ] Virtual File System
- [ ] Init System
- [ ] Shell
- [x] Libc