Page 1 of 1

New Years resolution

Posted: Fri Jan 01, 2021 9:11 am
by thewrongchristian
At some point in 2021, I will make a release of my OS.

It's coming along slowly, I have basic user mode with a tiny subset of Linux system calls (enough to run a very simple shell).

What I need really before it's fit for external consumption/scrutiny:
  • Sort out any copyright and licensing issues. The code was originally built on the bare bones tutorial, the vast majority of the subsequent code is original code written by myself. As I understand it, the Wiki contents are CC0/public domain. My libc is pdclib, which is similarly CC0. My simple shell is modified from here, and will need to come out as it copyright and has no license.
  • Set up a proper integration with git. I currently use fossil, which has an export feature to git. I like fossil, and will retain it as my primary SCM, but I need to maintain a git mirror.
  • I need to get documentation up to date on how to build and use.
  • Proper message logging system. Currently, I log little other than catastrophic failure, and even then only to an internal ring buffer. I currently do most of my debugging using GDB->QEMU.
  • Minimal concept of user and permissions. Currently, there is no concept of a user nor permissions.
  • Port or write a proper shell. I'd ideally like to port busybox, so I can have a full CLI environment on which to build.
  • I need to get off the wall on what system call interface I'll provide. Currently, I use an int 0x80 Linux subset. While I can see me keeping that for the short/medium term, I do like the idea of an asynchronous message based syscall interface, on which I can build a synchronous POSIX interface. I'm more interested in how OSes work underneath, and have little interest in a new user space stack, so POSIX will be my primary goal in terms of interface.
  • Have it run properly on real hardware. All my current work is in QEMU, and while I have run the code on hardware in the past, it is currently not functional on real hardware at the moment (I suspect my fledgling UHCI driver might be responsible for that.) Real hardware will really need USB, as especially desktop systems are dependent on USB for user input, but laptops can generally get away with using PS2 KB/Mouse.
Work in progress can be found here

I started this project around new year 2015, having had an interest in OSes since university (some 20 years previously.) It's great putting theory into practice, and 6 years on, I'm still not bored.

I love OS dev!

Re: New Years resolution

Posted: Fri Jan 01, 2021 9:49 am
by austanss
It's great to know that you are taking the time to ensure the quality of your OS!

I see some people that think they can build Rome-, no, sorry, Unix in a day.

I've seen a friend with lack of proper OSDev knowledge found multiple different OS projects and failing all of them.

Currently he is writing a "security designed OS" that has a UEFI bootloader that never exits boot services...

Good work, you have done!



And HAPPY NEW YEAR!!!!

Re: New Years resolution

Posted: Fri Dec 31, 2021 5:44 pm
by thewrongchristian
thewrongchristian wrote:At some point in 2021, I will make a release of my OS.

It's coming along slowly, I have basic user mode with a tiny subset of Linux system calls (enough to run a very simple shell).

What I need really before it's fit for external consumption/scrutiny:
  • Sort out any copyright and licensing issues. The code was originally built on the bare bones tutorial, the vast majority of the subsequent code is original code written by myself. As I understand it, the Wiki contents are CC0/public domain. My libc is pdclib, which is similarly CC0. My simple shell is modified from here, and will need to come out as it copyright and has no license.
Ah, no, not done that.
thewrongchristian wrote: [*] Set up a proper integration with git. I currently use fossil, which has an export feature to git. I like fossil, and will retain it as my primary SCM, but I need to maintain a git mirror.
thewrongchristian wrote: [*] I need to get documentation up to date on how to build and use.
Nope.
thewrongchristian wrote: [*] Proper message logging system. Currently, I log little other than catastrophic failure, and even then only to an internal ring buffer. I currently do most of my debugging using GDB->QEMU.
It's coming along.
thewrongchristian wrote: [*] Minimal concept of user and permissions. Currently, there is no concept of a user nor permissions.
Not yet. I've thought about it, but there are always other priorities.
thewrongchristian wrote: [*] Port or write a proper shell. I'd ideally like to port busybox, so I can have a full CLI environment on which to build.
I've ported some xv6 user space, including the shell. I can now navigate round my filesystem, list files, and run some test tools.
thewrongchristian wrote: [*] I need to get off the wall on what system call interface I'll provide. Currently, I use an int 0x80 Linux subset. While I can see me keeping that for the short/medium term, I do like the idea of an asynchronous message based syscall interface, on which I can build a synchronous POSIX interface. I'm more interested in how OSes work underneath, and have little interest in a new user space stack, so POSIX will be my primary goal in terms of interface.
Still int 0x80 based, but I'm still on the fence long term.
thewrongchristian wrote: [*] Have it run properly on real hardware. All my current work is in QEMU, and while I have run the code on hardware in the past, it is currently not functional on real hardware at the moment (I suspect my fledgling UHCI driver might be responsible for that.) Real hardware will really need USB, as especially desktop systems are dependent on USB for user input, but laptops can generally get away with using PS2 KB/Mouse.[/list]
Not done much on real hardware in the last year.
thewrongchristian wrote:
Work in progress can be found here

I started this project around new year 2015, having had an interest in OSes since university (some 20 years previously.) It's great putting theory into practice, and 6 years on, I'm still not bored.

I love OS dev!
Not spent as much time as I had hoped this year. But still enjoy it when I do look at it, and I've spent the last few days putting guard pages in the stack to stack detect overflow, and made the garbage collector a bit more robust.

New years resolutions roll over by default, right?

Happy New Year, and here's to hoping that:
  • Covid is tamed.
  • The current UK government is toppled.
  • I address the above points and get some sort of release out in 2022.