Go to file
2023-11-20 12:24:01 -08:00
.cargo Exit with status code after kernel_main/panic 2023-09-10 12:48:48 -07:00
res Replace TCP echo server with HTTP echo server 2023-11-06 19:34:40 -08:00
src Fix a new clippy complaint 2023-11-20 12:24:01 -08:00
.gitignore Port project to rust 2023-09-06 03:39:20 -07:00
build.sh Port project to rust 2023-09-06 03:39:20 -07:00
Cargo.lock Remove futures dependency 2023-11-06 19:28:31 -08:00
Cargo.toml Remove futures dependency 2023-11-06 19:28:31 -08:00
env.sh Port project to rust 2023-09-06 03:39:20 -07:00
grub.cfg Switch from multiboot to multiboot2 2023-10-21 14:36:18 -07:00
linker.ld Initial allocator implementation 2023-09-09 12:30:23 -07:00
lint.sh Implement UDP parsing 2023-09-30 13:34:26 -07:00
qemu_wrapper.sh USB mouse support 2023-11-15 17:30:42 -08:00
README.md Update README to note USB support 2023-11-15 23:22:03 -08:00
shell.nix Initial allocator implementation 2023-09-09 12:30:23 -07:00
target.json Port project to rust 2023-09-06 03:39:20 -07:00

Toy OS written for fun

This is an OS written as part of my twitch stream. See development live at https://twitch.tv/sphaerophoria or on youtube at https://youtube.com/@sphaerophoria.

There is no real goal, other than understanding computers better. We will implement what we feel like, when we feel like, with no expectations

Current state

  • Boots
  • Memory allocation
  • Async/Await
  • Serial Logging
  • Unit testing
  • RTC (clock)
  • PCI
  • Ethernet
  • ARP
  • UDP
  • TCP (kinda)
  • HTTP
  • Graphics
  • Keyboard
  • Multicore
  • USB (1.1, no hub, mouse only)

Usage

Dependencies are tracked by shell.nix (to an extent)

Set up a tap device for host<->guest networking, e.g.

nmcli connection add type tun ifname tap0 con-name tap0 mode tap owner `id -u` ipv4.method manual ip4 192.168.2.1/24

Check environment variables in qemu_wrapper.sh for configuration

cargo run --release