Hobby 32bit operatingsystem project focusing on networking on i386 architecture.
Explore the docs ยป
View Demo
ยท
Report Bug
ยท
Request Feature
Table of Contents
32bit Hobby Operatingsystem with graphics, multitasking and networking!
Started: 12.05.2022
There are 3 default users: system, admin and guest. The password for admin is 'admin', while guest has no password. Currently there is no difference between admin and guest.
You can create a user with the 'admin' command:
admin create <username> <password>
This project is built with C & Assembly for the kernel, utilities and build system. C++ for userspace applications and Make for compilation. Docker used for crossplatform compilation.
Tested on: Lenovo x240, Asus Eee PC series, Dell Optiplex 780, Samsung N150 Plus, Samsung NP-NC10, IBM Thinkpad a21p
Crossplatform: Docker to compile the .iso file and QEMU for emulation.
For native compilation you will need:
- i386-elf-gcc, i386-elf-ld and i386-elf-g++ for MacOS.
- build-essential and gcc-multilib for Linux / WSL (ubuntu)
- Also need: grub2, xorriso and xxd (for using Grub as bootloader)
To compile the kernel and its needed programs you simply need to run make img and make qemu to open QEMU
-
Clone the repo
git clone https://github.com/joexbayer/RetrOS-32.git
-
Compile the kernel and create .img file
make img
Note: needs sudo to mount the .img file and copy over files!
-
Launch QEMU
make qemu
-
Use GRUB (Optional)
make grub
-
Clone the repo
git clone https://github.com/joexbayer/RetrOS-32.git
-
Compile the kernel / OS
Docker:
sudo docker-compose up
-
Launch QEMU
make qemu
-
Use GRUB (Optional)
make grub
Using Docker (can also compile in WSL)
-
Clone the repo
git clone https://github.com/joexbayer/RetrOS-32.git
-
Compile and Launch QEMU
./make.cmd run
To run RetrOS-32:
- http://copy.sh/v86/ : Upload .img file as Hard disk image.
- QEMU:
make qemu
orqemu-system-i386 <image name>
- Real hardware: Burn .iso file to USB or CD (Use a GRUB iso)
NETOS - Project
โโโ Dockerfile
โโโ LICENSE.txt
โโโ Makefile
โโโ apps (userspace applications)
โ โโโ Makefile
โ โโโ <app>
โ โโโ libcore.a
โ โโโ libgraphic.a
โ โโโ libnet.a
โ โโโ readme.md
โ โโโ utils
โ โโโ *.cpp
โโโ bin
โ โโโ *.o
โโโ boot (custom bootloader)
โ โโโ bootloader.s
โ โโโ multiboot.ld
โโโ docker-compose.yml
โโโ docs (documentation)
โ โโโ *.md
โโโ drivers (kernel drivers)
โ โโโ *.c
โโโ fs (filesystem)
โ โโโ Makefile
โ โโโ bin
โ โโโ *.c
โโโ graphics
โ โโโ *.c
โโโ include
โ โโโ arch
โ โ โโโ *.h
โ โโโ fs
โ โ โโโ *.h
โ โโโ gfx
โ โ โโโ *.h
โ โโโ lib
โ โ โโโ *.h
โ โโโ net
โ โ โโโ *.h
โ โโโ *.h
โโโ kernel (main kernel source files)
โ โโโ arch
โ โ โโโ *.c
โ โโโ kthreads
โ โ โโโ *.c
โ โโโ *.c
โโโ legacy (old code)
โโโ lib (libraries)
โ โโโ *.c
โโโ net (networking code)
โ โโโ *.c
โโโ readme.md
โโโ rootfs (root filesystem for the OS)
โโโ tests (testing code)
โ โโโ Makefile
โ โโโ bin
โ โโโ *_test.c
โ โโโ readme.md
โโโ tools (build tools)
โโโ scripts
โโโ bin
โโโ *.c
- Custom Bootloader & GRUB compatible
- Stage 2 bootloader
- Wallpapers
- Mountable image
- Users
- Multi-threaded pre-emptive scheduling
- GDT & TSS kernel / userspace separation
- Interrupt handling
- PS/2 Keyboard & Mouse, PIT, VESA (640x480x8), RTC, Serial drivers, E1000
- PCI.
- 8Bit RGB to 8Bit VGA
- Filesystem
- Textmode VGA only
- Networkstack
- Ethernet, IP, ARP, UDP
- Socket API
- Interfaces
- Loopback
- DHCP
- DNS
- TCP
- Netcat style commands
- FTP
- IRC
- SSH
- Telnet
- HTTP
- HTML
- ATA IDE Driver
- Ext2 (like) Filesystem
- FAT16, support for up to 32mb files.
- read / write
- Atapi
- Memory
- 32bit Virtual Memory
- kalloc / kfree (kernel)
- malloc / free (userspace)
- Graphics
- Window Manager
- GFXLib
- Double framebuffer rendering
- Mouse events
- Dynamic resize
- Fullscreen
- Widgets Library
- Custom HTML to Widgets
- Terminal, Window Server, Process Informtaion, Finder.
- Library (printf, memcpy, etc)
- IPC
- System calls
- C Compiler / interpreter to bytecode
- Custom VM to run bytecode.
- Editor with Syntax Highlighting
- Calculator
- 3D Game
- Snake game (Textmode only)
- Userspace threads (shared virtual memory)
- Remote virtual terminal over TCP
- Tools
- Build
- Sync / Migration Took
- mkfs
- Testing
- Create & Encode icons and wallpapers
See the open issues for a full list of proposed features (and known issues).
Distributed under the MIT License. See LICENSE.txt
for more information.
Joe Bayer - [email protected]
Project Link: https://github.com/joexbayer/RetrOS-32
Use this space to list resources you find helpful and would like to give credit to. I've included a few of my favorites to kick things off!