Project Polished is an experimental operating system foundation built to be accessible, modern, and more than just a personal project. It aims to eventually support libc and POSIX standards, making it suitable for general-purpose use.
This will be "shipped" as soon as I decide it meets a version 1, which comes with a lot of work and features, and will take awhlie.
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
The website when down so I didn't log as soon as I could.
Currently working on virtio setup with qemu, theres a little project connected called linux-ext2-testing which is where I'm making the ext2 images, and ensuring changes to them from my OS work correctly. I'm doing ext2 because it's simpler, and will do ext3 or 4 next.
Not entirely sure what this 40 minutes was, probably working out some limine bugs.
Current status:
Limine boot: works
Frame buffer: Left unimplemented but the limine request works
virtual memory/page table stuff: working!
Today, I made a decision on the project finally. I've been debating it for awhile now. I couldn't decide whether or not writing a custom bootloader for this would be beneficial. I've decided it won't be, at least not right now, I've spent hours on page tables alone, and net to get moving. Limine offers an awesome protocol to use (it's own limine protocol) and I've switched to that. I was hesitant to because of multiboot, but found out about it's own which functions nicely through requests in your kernels binary. Pretty awesome, and today I got it booting with limine!
I'm posting this short log in regards of my change to the project settings on summer of making. I checked the AI box, I was unsure if I really should. Anything after I added this here is almost never AI, and AI has never been able to do any of the actual code for me. However, it writes docs/readmes pretty well, and that's it. For anyone wondering if I vibe coded this project, absolutely not. Try it yourself, it can't comprehend nightly rust and alpha libraries like uefi. The libs change so often AI's data is always outdated, and it makes mistakes all over the place when you try to do things with raw pointers, memory addresses, and binary/bytes. The most AI code usage I'll do is Copilot organize this file and have it move functions around or cleanup imports.
I've still been stuck on paging for awhile, I had a friend come in and help/pr my repo to fix it. Together we got it to where the kernel is now high half mapped correctly, and it boots again! It's still on the paging branch instead of main, and now I just have to implement frame tracking and an offset page table. Linker scripts are scary 🔥
This is my first devlog for this project, it's late so I can't really attach something meaningful like a video/audio clip... Kind of odd to require it anyway, 90% of devlogs are just yapping about the project.
Anyway, welcome to project polished whoevers reading this. I've started it to revolutionize low level/bare metal OS development, trying to provide a suite of libraries and articles on how to do things with polished working examples, no corner cutting or placeholders. I've been working hard to show how wrong wikis like the well-known https://wiki.osdev.org/ are wrong about needing years and years of low level experience, while not exactly new to it myself I haven't been doing it for nearly their suggestion of 10 years, and have made great progress. I am to break down that elitist gate keeping roadblock, providing anyone with the dream of building the OS a clear path to do so.
During this ~6hrs, I've mainly done what I've been stuck on for the past week. I've been reverting back to the same commit trying to implement recursive page tables, and have finally decided to put that on hold. I'm going to instead use a physmap based setup, which isn't going that great either. Currently stuck at some call to set an address in my page table not being 4KiB aligned. It's been very hard to debug as each time requires an entire qemu boot, and can only be debugged through serial output. You can use gdb, but theres essentially no way to use in within the efi application itself, it only functions on the kernel ELF which is after the bootloader. I'm going to try redoing the physmap again, my commit history on github may be empty or confusing until I'm past this road block.