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!