Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Hardware is much more complex than software and also requires incredible amounts of money in order to fabricate. Not sure if that will ever change. We'll probably remain stuck with whatever is available on the market.

Starting from scratch is actually feasible on the software side though. The OSDev wiki has many examples. The most recent one I know is Serenity. Still a monumental task. It's probably a lot of fun if you have the time and motivation to stick with it. You can actually throw POSIX in the trash and create your own abstractions. Hopefully people aren't reinventing signals...

I think Linux is the best option for those who want to create something from scratch. The Linux kernel is unique in that it is completely separate from user space. There is a stable, documented kernel interface in the form of system calls:

https://man7.org/linux/man-pages/man2/syscall.2.html

https://man7.org/linux/man-pages/man2/syscalls.2.html

https://www.kernel.org/doc/Documentation/ABI/stable/syscalls

https://www.kernel.org/doc/Documentation/ABI/stable/vdso

So people can actually do things like trash all of GNU and come up with something entirely new. It's possible to rewrite the entire Linux user space in Rust or Lisp or whatever. It doesn't have to be POSIX compliant.

The kernel even has this amazing header which lets people build freestanding Linux programs:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...



That header file is amazing. Thank you for the pointer to that. For anyone wondering, it lets you build programs without a libc:

> This file is designed to be used as a libc alternative for minimal programs with very limited requirements. It consists of a small number of syscall and type definitions, and the minimal startup code needed to call main(). All syscalls are declared as static functions so that they can be optimized away by the compiler when not used.


> That header file is amazing. Thank you for the pointer to that.

Yeah, it's an awesome header! It comes straight from the kernel developers too. They use it for their own tools, apparently. It might be missing some of the newer or niche system calls but it has generic mechanisms which can be used to access everything.

I found it during my research for my own Linux system calls library project:

https://github.com/matheusmoreira/liblinux

There's some additional details implemented by my project such as process start up functions which handle argument, environment and auxiliary vectors. I don't see the need to maintain it anymore though since nolibc.h is so amazing and practical.

I even asked Greg Kroah-Hartman about nolibc.h on Reddit:

https://old.reddit.com/r/linux/comments/fx5e4v/im_greg_kroah...


That still leaves you up a creek if you wanted to reimagine what syscalls looked like or if you wanted to build a mechanism that was totally different. That's ignoring that the Linux syscall surface area is quite large & complex with lots of legacy cruft on its own.


You can always patch the kernel to try out your ideas.

But really, the kernel is not where the innovation potential is. The way it works is really more or less decided by the way the hardware works. That's why the only real "novel" idea in the kernel space is microkernels, which date back decades.

Worth noting that the microkernel revolution kind of happened on Android, which is a re-think-computing-from-scratch kind of project. The drivers are all moved to userspace in Android, using their own IPC mechanism. The Linux kernel is left with less to do.


Wow. Absolutely astounding. I know a little bit of C, but I wouldn’t have the slightest idea where to begin.

Is it even possible for one person to design a basic operating system?


> but I wouldn’t have the slightest idea where to begin

https://wiki.osdev.org/Expanded_Main_Page

It's in some way easier today than in the past. VMs really make testing much easier. On the other hand, the hardware has become more complex compared to some years ago when you could assume that all you needed was a little bit of assembly code to initialize the 32-bit mode of the x86 CPU and talk to the IDE interface.


Design and build? Yes, very much so. It'll be simple, but it's doable. How useful it becomes is a function of how much time you spend on it, and how many others you get interested in it.


Lol - I found a wikihow page to answer your question. :-D

https://www.wikihow.com/Make-a-Computer-Operating-System


Yes, depending on how basic, or how long you want to work on it. Gary Kildall did CP-M. Tim Patterson did 86-DOS (later bought by Microsoft and turned into MS-DOS). Terry Davis did TempleOS. And I'm sure there have been other, one-off operating systems written by single programers.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: