frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: MyraOS – My 32-bit operating system in C and ASM (Hack Club project)

https://github.com/dvir-biton/MyraOS
79•dvirbt•4h ago
Hi HN, I’m Dvir, a young developer. Last year, I got rejected after a job interview because I lacked some CPU knowledge. After that, I decided to deepen my understanding in the low level world and learn how things work under the hood. I decided to try and create an OS in C and ASM as a way to broaden my knowledge in this area.

This took me on the most interesting ride, where I’ve learned about OS theory and low level programming on a whole new level. I’ve spent hours upon hours, blood and tears, reading different OS theory blogs, learning low level concepts, debugging, testing and working on this project.

I started by reading University books and online blogs, while also watching videos. Some sources that helped me out were OSDev Wiki (https://wiki.osdev.org/Expanded_Main_Page), OSTEP (https://pages.cs.wisc.edu/~remzi/OSTEP), open-source repositories like MellOS and LemonOS (more advanced), DoomGeneric, and some friends that have built an OS before.

This part was the longest, but also the easiest. I felt like I understood the theory, but still could not connect it into actual code. Sitting down and starting to code was difficult, but I knew that was the next step I needed to take! I began by working on the bootloader, which is optional since you can use a pre-made one (I switched to GRUB later), but implementing it was mainly for learning purposes and to warm up on ASM. These were my steps after that:

  1) I started implementing the VGA driver, which gave me the ability to display text.
  2) Interrupts - IDT, ISR, IRQ, which signal to the CPU that a certain event occurred and needs handling (such as faults, hardware connected device actions, etc).
  3) Keyboard driver, which enables me to display the same text I type on my keyboard.
  4) PMM (Physical memory management)
  5) Paging and virtual memory management
  6) RTC driver - clock addition (which was, in my opinion, optional)
  7) PIT driver - Ticks every certain amount of time, and also  
  8) FS (File System) and physical HDD drivers - for the HDD I chose PATA (HDD communication protocol) for simplicity (SATA is a newer but harder option as well).
     For the FS I chose EXT2 (The Second Extended FileSystem), which is a foundational linux FS structure introduced in 1993. This FS structure is not the simplest,
     but is very popular in hobby-OS, it is very supported, easy to set up and upgrade to newer EXT versions, it has a lot of materials online, compared to other
     options. This was probably the longest and largest feature I had worked on.
  9) Syscall support.
  10) Libc implementation.
  11) Processing and scheduling for multiprocessing.
  12) Here I also made a shell to test it all.
At this point, I had a working shell, but later decided to go further and add a GUI! I was working on the FS (stage 8), when I heard about Hack Club’s Summer of Making (SoM). This was my first time practicing in HackClub, and I want to express my gratitude and share my enjoyment of participating in it.

At first I just wanted to declare the OS as finished after completing the FS, and a bit of other drivers, but because of SoM my perspective was changed completely. Because of the competition, I started to think that I needed to ship a complete OS, with processing, GUI and the bare minimum ability to run Doom. I wanted to show the community in SoM how everything works.

Then I worked on it for another 2 months, after finishing the shell, just because of SoM!, totalling my project to almost 7 months of work. At this time I added full GUI support, with dirty rectangles and double buffering, I made a GUI mouse driver, and even made a full Doom port! things I would've never even thought about without participating in SoM.

This is my SoM project: https://summer.hackclub.com/projects/5191.

Every project has challenges, especially in such a low level project. I had to do a lot of debugging while working on this, and it is no easy task. I highly recommend using GDB which helped me debug so many of my problems, especially memory ones.

The first major challenge I encountered was during the coding of processes - I realized that a lot of my paging code was completely wrong, poorly tested, and had to be reworked. During this time I was already in the competition and it was difficult keeping up with devlogs and new features while fixing old problems in a code I wrote a few months ago.

Some more major problems occurred when trying to run Doom, and unlike the last problem, this was a disaster. I had random PFs and memory problems, one run could work while the next one wouldn’t, and the worst part is that it was only on the Doom, and not on processes I created myself. These issues took a lot of time to figure out. I began to question the Doom code itself, and even thought about giving up on the whole project.

After a lot of time spent debugging, I fixed the issues. It was a combination of scheduling issues, Libc issues and the Qemu not having enough (wrongfully assuming 128MB for the whole OS was enough).

Finally, I worked throughout all the difficulties, and shipped the project! In the end, the experience working on this project was amazing. I learned a lot, grew and improved as a developer, and I thank SoM for helping to increase my motivation and make the project memorable and unique like I never imagined it would be.

The repo is at https://github.com/dvir-biton/MyraOS. I’d love to discuss any aspect of this with you all in the comments!

Comments

Imustaskforhelp•2h ago
Hey, what an amazing project, bravo!

i would suggest to providing an iso or co-operating / looking into copy.sh which provides a large number of iso files which you can boot/play around with in the browser itself!

I was just today tinkering around with the ibm iso (exploring ibm) and others too, its always fun seeing new operating system!

I would love if you could, as I said, co-operate with copy.sh/v86 team to also include your iso and also provide iso files in github releases if possible

Source: https://copy.sh/v86/ Their github page : https://github.com/copy/v86

userbinator•2h ago
wrongfully assuming 128MB for the whole OS was enough

If I were you I'd investigate why it needs so much. Keep in mind how much functionality older OSs had, and how much computing power they needed. Always good to see more OS projects nonetheless, but always remember that efficiency is important.

ethin•5m ago
Eh, I tend to do the same (significantly over-estimate RAM requirements) since it's hard to know just how much RAM you'll need to begin with. Though usually for something like the stack I start with 256-512K.
ktimespi•1h ago
This is beautiful.
kbbgl87•1h ago
מגניב ממש אחי, תמשיך ככה
MarcelOlsz•1h ago
Awesome. Should take a look at TempleOS as well.
scuff3d•1h ago
Damn man, this is awesome. This should land you a job damn near anywhere.
ethin•6m ago
I did this (worked on an OS) from 2019-2022 or so, during college. Didn't get to user mode sadly. Did it in Rust because back then Rust was what I was really into. It was really fun! :) OS dev has always been fun/interesting :)

Microsoft 365 Copilot – Arbitrary Data Exfiltration via Mermaid Diagrams

https://www.adamlogue.com/microsoft-365-copilot-arbitrary-data-exfiltration-via-mermaid-diagrams-...
35•gnabgib•1h ago•6 comments

Show HN: MyraOS – My 32-bit operating system in C and ASM (Hack Club project)

https://github.com/dvir-biton/MyraOS
79•dvirbt•4h ago•8 comments

Are-we-fast-yet implementations in Oberon, C++, C, Pascal, Micron and Luon

https://github.com/rochus-keller/Are-we-fast-yet
22•luismedel•1h ago•1 comments

A definition of AGI

https://arxiv.org/abs/2510.18212
119•pegasus•6h ago•193 comments

NORAD’s Cheyenne Mountain Combat Center, c.1966

https://flashbak.com/norad-cheyenne-mountain-combat-center-478804/
76•zdw•5d ago•37 comments

Ken Thompson recalls Unix's rowdy, lock-picking origins

https://thenewstack.io/ken-thompson-recalls-unixs-rowdy-lock-picking-origins/
60•dxs•7h ago•2 comments

AI Mafia Network – An interactive visualization

https://dipakwani.com/ai-mafia/
62•dipakwani•1h ago•6 comments

A bug that taught me more about PyTorch than years of using it

https://elanapearl.github.io/blog/2025/the-bug-that-taught-me-pytorch/
320•bblcla•3d ago•65 comments

System.LongBool

https://docwiki.embarcadero.com/Libraries/Sydney/en/System.LongBool
31•surprisetalk•4d ago•23 comments

Poison, Poison Everywhere

https://loeber.substack.com/p/29-poison-poison-everywhere
64•dividendpayee•2h ago•24 comments

Show HN: Helium Browser for Android with extensions support, based on Vanadium

https://github.com/jqssun/android-helium-browser
17•jqssun•2h ago•1 comments

Wren: A classy little scripting language

https://wren.io/
110•Lyngbakr•4d ago•30 comments

Sandhill Cranes Have Adopted a Canada Gosling

https://www.smithsonianmag.com/science-nature/these-sandhill-cranes-have-adopted-a-canadian-gosli...
5•NaOH•4d ago•1 comments

Making the Electron Microscope

https://www.asimov.press/p/electron-microscope
54•mailyk•7h ago•6 comments

Asbestosis

https://diamondgeezer.blogspot.com/2025/10/asbestosis.html
211•zeristor•16h ago•155 comments

Feed the bots

https://maurycyz.com/misc/the_cost_of_trash/
138•chmaynard•12h ago•102 comments

Alzheimer's disrupts circadian rhythms of plaque-clearing brain cells

https://medicine.washu.edu/news/alzheimers-disrupts-circadian-rhythms-of-plaque-clearing-brain-ce...
139•gmays•7h ago•25 comments

Eavesdropping on Internal Networks via Unencrypted Satellites

https://satcom.sysnet.ucsd.edu/
172•Bogdanp•6d ago•28 comments

Downloadable movie posters from the 40s, 50s, 60s, and 70s

https://hrc.contentdm.oclc.org/digital/collection/p15878coll84/search
400•bookofjoe•1w ago•79 comments

Pico-Banana-400k

https://github.com/apple/pico-banana-400k
351•dvrp•22h ago•60 comments

Researchers demonstrate centimetre-level positioning using smartwatches

https://www.otago.ac.nz/news/newsroom/researchers-demonstrate-centimetre-level-positioning-using-...
11•geox•6d ago•2 comments

Formal Reasoning [pdf]

https://cs.ru.nl/~freek/courses/fr-2025/public/fr.pdf
116•Thom2503•12h ago•26 comments

Resource use matters, but material footprints are a poor way to measure it

https://ourworldindata.org/material-footprint-limitations
9•surprisetalk•10h ago•1 comments

Validating your ideas on strangers (2017)

https://jeremyaboyd.com/post/validating-your-ideas-on-strangers
58•tacon•2d ago•31 comments

Nvidia DGX Spark: When benchmark numbers meet production reality

https://publish.obsidian.md/aixplore/Practical+Applications/dgx-lab-benchmarks-vs-reality-day-4
124•RyeCatcher•6h ago•79 comments

Why your social.org files can have millions of lines without performance issues

https://en.andros.dev/blog/4e12225f/why-your-socialorg-files-can-have-millions-of-lines-without-a...
78•andros•1d ago•6 comments

Advent of Code 2025: Number of puzzles reduce from 25 to 12 for the first time

https://adventofcode.com/2025/about#faq_num_days
405•vismit2000•16h ago•197 comments

Writing a RISC-V Emulator in Rust

https://book.rvemu.app/
99•signa11•17h ago•40 comments

You already have a Git server

https://maurycyz.com/misc/easy_git/
378•chmaynard•13h ago•309 comments

Clojure Land – Discover open-source Clojure libraries and frameworks

https://clojure.land/
157•TheWiggles•16h ago•38 comments