Lookie here, another OS from the mind of. Let's just hope that this isn't as much of a shitshow now that I'm actually trying to do things properly.
I'm NOT going to be rolling my own bootloader this time. We will be using Multiboot2 with a default bootmgr of GRUB2. Of course this isn't directly packaged with the OS and will have to be installed seperately for development purposes. However, I am planning to take an ArchLinux style approach to installing this shit, so GRUB2 is likely to be packaged with any release of this OS. Pretty much this means the GPL license from GRUB2 is going to have to be included in here, so I'll place it here.
As for the License of glOS2, It is LGPL-2.1-only
. This is so any parts of glOS that CAN be used as a library, such as any of the syscalls, are able to be used freely in propietary software. However any modifications to the source of glOS MUST be kept OpenSource & redistributed under the terms of LGPL-2.1-only
. Cause if you fix something, submit a PR so everyone else can easily enjoy it.
Now with that legal disclosure out of the way, what is the actual plan this time?
- Barebones Kernel
- 64-bit Support
- GDT
- IDT
- Higher-Half Kernel
- Paging
- Timers
- Floating-Point Support
- Text Console
- PIC
- Keyboard input
- Screen Scrolling
- Heap Memory Allocation
- Framebuffer via VESA
- Fonts
- Programs (ELF)
- Scheduler
- Multitasking (Single Threaded)
- Filesystem
- FAT32 Support
- Main FS (ext4 or custom?)
- Full Rust Support for Programs (
std
,alloc
, etc)- libstdc implementation (which also means C/C++ support)
- Compiler Toolchain
- Windows
- Rectangles
- Viewports
- Multiple Windows
- Window Manager (Tiled?)
- UI Library
- Security
- Seperate User-space & Kernel-space
- Permissions System
- Users
- Mouse Support
- Audio
- Packages
- Package Management
- Installation Media/Guide
- Multithreading
- Networking
From here I have no idea what I'd do. I'm not even sure if I'll get to the end of this list, but holy shit if I do it'll be my greatest achievement.
It's actually really simple suprisingly. Just install Rust, cargo-make, QEMU, GRUB2 and you're set!
# First, make sure you have the repo cloned
git clone https://github.com/GamingLiamStudios/glOS2
cd glOS2
# Then make sure you have the correct dependencies
makers install-deps
# Then just
makers build-rls # generates glos.iso
makers run # launches qemu w/ logs
If you're going to be updating link.ld
- make sure you run makers clean
after, otherwise your changes won't propagate. (Annoying, I know.)