The Nightingale Operating System [v0.8.8]

This forums is for OS project announcements including project openings, new releases, update notices, test requests, and job openings (both paying and volunteer).
Post Reply
tyler569
Posts: 3
Joined: Sun Feb 25, 2018 1:14 pm
Libera.chat IRC: tyler569

The Nightingale Operating System [v0.8.8]

Post by tyler569 »

Hey Everyone!

I wanted to share something I've been working on for the past few years on and off - this is the OS I've been working on, nightingale!

I can't give you a screenshot, since nightingale doesn't support any video output, but here's a paste of an interactive serial session showcasing some of my favorite features!

https://pastebin.com/raw/GL888kV1

Nightingale supports a vaguely UNIX-like userland, multiple processes, etc.

UNIX isn't a design goal, I'm just going that direction for now for ease of implementation (well documented interfaces to implement) and ease of porting.

I've already ported lua as a proof of concept, and I have a branch where I'm working on tcc.

If anyone is interested in giving it a try, I upload ISO images built by CI. There's a download link in the README, or you can grab it here, there are running instructions in the 'Running nightingale' section of the github README.

I hope someone finds something interesting here, and I am definitely open to any comments or suggestions!
charliehogger
Posts: 1
Joined: Thu Oct 17, 2019 2:21 pm

Re: The Nightingale Operating System [v0.8.8]

Post by charliehogger »

Good job! How did you implement lua? Also how do you run it from qemu? I cannot use the run.rb file.
tyler569
Posts: 3
Joined: Sun Feb 25, 2018 1:14 pm
Libera.chat IRC: tyler569

Re: The Nightingale Operating System [v0.8.8]

Post by tyler569 »

Thanks!

The qemu invocation I use is this:

Code: Select all

qemu-system-x86_64 -cdrom ngos64.iso -vga std -no-reboot -m 32M -s -serial stdio -display none
It's also noted in the project readme if you want to refer to it later.

Getting lua building for the system was fairly easy, I had to hack up the makefiles to support my build system, but getting an executable that would run wasn't too hard thanks to lua's great portability. The main hurtle was improving my libc to the point where it would do anything useful. The main loop became (compile, stub out libc functions to get it to link, implement whatever function caused a failure at runtime).

There's still a bunch of functions stubbed out that you can see in nc/todo.c, stuff that I needed to have to link lua, but that I haven't exercised in any code I've run on it.

Lua was the catalyst for me to write most of the C stdio functions (fread, fwrite, etc) with FILE*s and buffering, as opposed to just using raw file descriptors, and that was where most of the time (and bugs) went for that project.
mmdmine
Member
Member
Posts: 47
Joined: Sat Dec 28, 2019 5:19 am
Location: Iran
Contact:

Re: The Nightingale Operating System [v0.8.8]

Post by mmdmine »

Hey I saw your code and it was pretty. I enjoyed it. you write clean and managed. good luck.
Post Reply