[HN Gopher] Show HN: I made my own OS from scratch because I was...
       ___________________________________________________________________
        
       Show HN: I made my own OS from scratch because I was bored
        
       I've wanted to make my own OS since I started programming. Now, 5
       years later, I did it (kind of).  Sure, it is really basic, has
       very little functionality, but I made it and I'm proud of that. Oh,
       and I'm just 16 btw.
        
       Author : Jotalea
       Score  : 198 points
       Date   : 2025-02-12 20:55 UTC (1 days ago)
        
 (HTM) web link (jotalea.com.ar)
 (TXT) w3m dump (jotalea.com.ar)
        
       | ranger_danger wrote:
       | How can we download only the source code?
        
         | Jotalea wrote:
         | The source code comes in a bundle that includes a compiler, an
         | emulator, and some extra tools. While I don't see an advantage
         | on downloading the source code alone, I won't deny it.
         | 
         | Just note that there are three different "branches":
         | 
         | - stable: This is the one being distributed in the website
         | 
         | - neofetch: This one exists because I couldn't get the ASCII
         | art to fit within 512 bytes along with the rest of features
         | 
         | - multistage (untested): Here I'm trying to work with jumps in
         | memory to handle different commands and features (and include
         | them all in one release). I read online that I can compile them
         | separately and then merge the binaries to get jumps to work.
         | But I haven't finished it, and it probably won't compile as it
         | is right now.
         | 
         | That said, here is the source code for all of them:
         | https://quickshare.samsungcloud.com/wB9kfq1umxW2
         | 
         | edit: fixed missing newlines
        
           | codecraze wrote:
           | Congratulations on your project!
           | 
           | Out of curiosity why don't you put the source code on github?
        
             | Jotalea wrote:
             | I want to clean up the environment I used before uploading
             | it to GitHub; that has taken me like 4 days and still
             | going. Yes, I've spent more time configuring the
             | environment and documenting than actually programming. And
             | the worst part? It's not even finished!
        
       | mysterydip wrote:
       | > I made it and I'm proud of that
       | 
       | And that's all that matters for a hobby project. Congrats!
        
       | gtirloni wrote:
       | Nice accomplishment. I usually do things because I'm excited
       | about something :)
        
       | ktbwrestler wrote:
       | Great job, something like this is also a really great way to get
       | your foot in the door with a job when the time comes.
       | 
       | I like that you have the site in both Spanish and English!
        
         | Jotalea wrote:
         | Yeah, I'm a native Spanish speaker, and since I'm planning to
         | share this project in Hispanic communities too, it would be bad
         | to not have my own language in it.
         | 
         | Though following that logic, I should also make my OS in
         | Spanish too... I guess I could add some kind of translation
         | dictionary, I'm not sure. I guess I'll do it in the future.
        
           | thereticent wrote:
           | I'm impressed with your dedication and also amazed that I ran
           | into this on HN. My 9-year-old just showed me your Geometry
           | Dash remake in Scratch. You're like a legend to him and his
           | friends!
        
             | Jotalea wrote:
             | Whoa really?? I wonder where did he find it.. it's been a
             | while since I've last worked on it. I think it was in
             | 2023.. and I've never showed it too much, maybe less than
             | 50 views?
             | 
             | > You're like a legend to him and his friends!
             | 
             | :D
        
       | teruakohatu wrote:
       | There has perviously been a nice guide posted on HN on getting
       | code to run on bare metal:
       | 
       | https://johv.dk/blog/bare-metal-assembly-tutorial.html
        
         | kitd wrote:
         | TIL about UefiShell.iso.
        
       | iwontberude wrote:
       | Congratulations are in store but of course you are a special kind
       | of person to escape boredom this way. It's a gift and a curse.
       | Good luck!
        
         | Jotalea wrote:
         | Thanks ;)
        
       | caspper69 wrote:
       | The page isn't in English, but Google helpfully translated it for
       | me.
       | 
       | Without source, and only those commands available, it's kind of
       | difficult to see what you've implemented and how far you
       | progressed.
       | 
       | Did you do anything with the MMU yet? Any hardware detection? Do
       | you ever jump to a user space context?
       | 
       | Do you have any specific design goals you want to explore, or was
       | this just a learning exercise?
       | 
       | Like Groundhog Day, I have been doing this over and over and over
       | for the last 25 years.
       | 
       | So many toy kernels, so many ideas and tests and watching A's and
       | B's and C's and D's flash on the screen. Memory dumps. Writing
       | executable loaders. Poring over the Intel/AMD manuals (and later
       | AARCH64). ACPI (ugh). Trying to implement the techniques from the
       | latest papers (usually in an effort to maximize the performance
       | of a microkernel-ish design).
       | 
       | It's all great fun of course, so I'm not lamenting that, but when
       | you start to get to the userspace infrastructure, unless you're
       | YOLO'ing it with libc and POSIX compatibility, everything is so
       | opinionated, and there's SO MUCH TO BUILD, I just kind of peter
       | out.
       | 
       | It's been about 18 months or so since I last had the itch, but
       | it's inevitable that I'll do it all over again.
       | 
       | Best of luck!
        
         | gazook89 wrote:
         | Immediately after the opening header there is a button to
         | switch to English, fyi.
        
         | Jotalea wrote:
         | There actually is a Switch to English button at the top of the
         | screen, which of course translates the whole website to
         | English, and adds more details that I know English-speaking
         | people would be interested on (for example, the source code),
         | while Spanish-speakers won't. And even if they are, they have a
         | note saying "for more details, check the English version of the
         | site"; and I'm sure that if they can understand those details,
         | they can also understand English.
         | 
         | > Did you do anything with the MMU yet? Any hardware detection?
         | 
         | No, not yet. I still have to learn that
         | 
         | > Do you ever jump to a user space context?
         | 
         | I mean, I haven't put any restrictions, just as I haven't put
         | many features that I would consider user space.
         | 
         | > Do you have any specific design goals you want to explore, or
         | was this just a learning exercise?
         | 
         | I saw a video about TempleOS, and got motivated to make my own
         | OS from scratch. Of course, TOS is a ~15 years-in-work project,
         | while mine has been just a couple days/weeks, these are very
         | far from each other.
         | 
         | I guess my final goal with it would be to get Minecraft
         | running? I don't know, getting a Java program (or Java itself)
         | to run on an OS from scratch sounds too complicated for me.
         | 
         | My current goal is to get Bad Apple on ASCII to show up on
         | this, but to do that I need to save a lot of variables, one for
         | each frame, and there being ~6000 frames, it would take a huge
         | lot more than 512 bytes, so I would need to get jumps in memory
         | to work so I can have these many variables set, which is what I
         | would be working on now, if I hadn't other stuff to do.
         | 
         | > Best of luck!
         | 
         | Thanks :)
        
           | caspper69 wrote:
           | Yeah, I didn't notice the site switch to English link; If I
           | had seen it, I might have also seen the source, lol. Sorry
           | about that.
           | 
           | Terry Davis, the author of TempleOS, was fairly well known
           | online. He had a lot of struggles psychologically, and met an
           | unfortunate end a few years ago. It's an interesting case,
           | but I honestly wouldn't take too much from the project. He
           | was a gifted developer, but he did things for reasons that
           | were decidedly non-technical.
           | 
           | For building up your knowledge (you can't only read the
           | reference manuals, after all), there's a ton of resources
           | online, but a particularly good one is the OSDev wiki:
           | https://wiki.osdev.org/Expanded_Main_Page. I can't speak for
           | it as it exists today because I've been out of the game for
           | too long, but it was maintained by helpful folks. I didn't
           | check to see if the forums are still up, but there used to be
           | a wealth of information in them back in the day too.
           | 
           | As a note, relying on BIOS is ok, but the whole write a
           | bootsector in 512 bytes to switch to 386 protected mode, to
           | then switch to long mode (64-bit) is kind of outdated (the
           | modern computer boot process is handled by the UEFI firmware,
           | and by the time your OS binary is loaded, the CPU is already
           | in long mode with paging enabled and setup with a flat linear
           | mapping of physical memory).
           | 
           | Not to say that the method/approach is worthless (it's all
           | learning), it's just that you spend an _awful_ lot of time
           | doing things in the whole mode-switching dance that are
           | basically tossed in the bin almost immediately, and most of
           | it has nothing at all to do with OS development. UEFI at
           | least allows you to start on the real meat  & potatoes
           | without spinning your wheels on code that isn't going to
           | stick around very long.
        
             | Jotalea wrote:
             | Thanks for the information :)
             | 
             | I just analyzed and did what I read online and it seemed to
             | work.
             | 
             | To be honest, I don't fully understand how these things
             | work, but I'm here to learn ;)
        
           | 4ggr0 wrote:
           | why are spanish-speaking people not interested in source-
           | code?
           | 
           | what about bilingual people, do they have an average amount
           | of interest for the source-code?
        
             | Jotalea wrote:
             | > why are spanish-speaking people not interested in source-
             | code?
             | 
             | Most of the Spanish-speakers that I know, don't have
             | advanced knowledge on technology (on things like Assembly,
             | or the difference between x86 and x86_64), and those who
             | do, it's granted that they know English, because we are
             | told in school that "to be smart and succeed, you need to
             | know how to speak English".
        
       | krylon wrote:
       | Respect! This is really cool!
        
       | colesantiago wrote:
       | Nice job, keep it up!
        
         | Jotalea wrote:
         | Thanks :)
        
       | asdf0987 wrote:
       | despite saying it's open source, there's no link to read source
       | code e.g github.
        
         | ranger_danger wrote:
         | why do you think that is a requirement to being called open
         | source?
        
           | martzy13 wrote:
           | I don't know that GitHub per se would be a requirement, But
           | when I think open source - I usually think about being able
           | to browse the code in some type of repository, in a human
           | readable format.
           | 
           | I like to browse a codebase in some way that I don't have to
           | download and unzip an unknown set of files.
        
             | seanw444 wrote:
             | Open source != provided source control repository
        
               | Karellen wrote:
               | I think that's debatable. Many open source licenses have
               | a definition of accessible source code that is similar
               | to:
               | 
               | > _The "source code" for a work means the preferred form
               | of the work for making modifications to it._
               | 
               | Certainly, in the past "a tarball of the source for
               | whatever version you have" was absolutely considered
               | sufficient for that. But these days the features provided
               | by source control systems, such as "annotate"(/"blame"),
               | "bisect", etc... could very well be argued to have raised
               | the baseline for what "the preferred form of the work for
               | making modifications to it" should mean.
        
             | ranger_danger wrote:
             | I understand you prefer to be able to browse the code
             | online, and that does seem to be largely the norm with most
             | projects, but from a technical/legal perspective, my
             | understanding is that the only actual requirement is that
             | source code is provided _if requested_ , they don't even
             | have to post it anywhere on the Internet in advance. It
             | could just have been emailed to you or something. But
             | people usually put a link up somewhere just to make it
             | easier.
        
               | nom wrote:
               | Yeah, open source never meant you must provide an online
               | repository in perpetuity for everyone.
               | 
               | It means you can get the code if you want it. If you have
               | to pay for postage so someone can send you a floppy with
               | the source code, it's still open source. It's open to
               | you.
        
               | account42 wrote:
               | More importantly it means once you have the code you can
               | then give it to others both with and without
               | modifications.
        
             | MonkeyClub wrote:
             | > I don't know that GitHub per se would be a requirement
             | 
             | Indeed.
             | 
             | Although providing a browsable source tree is convenient,
             | we shouldn't default that on Microsoft's private platform
             | (which, after all, monetizes the code stored there by using
             | it for LLM training).
             | 
             | If a project is free software or open source, Codeberg.org
             | is an excellent solution, while there exists a whole host
             | of other web git hosts as well.
             | 
             | Let's take advantage of the field's diversity, lest it
             | narrows down on us abruptly.
        
           | freedomben wrote:
           | I don't think it's unreasonable to expect that a project
           | claiming to be "open source" provide the source code in some
           | form. It needn't be on github (GP merely sites Github as an
           | example), but there _should_ at least be a link of some kind,
           | whether a zip file or a git remote or _something_. It 's not
           | a requirement, but it is something that most people
           | (reasonably IMHO) expect.
        
             | ranger_danger wrote:
             | but there is a link
             | 
             | >Dev Kit includes distribution of a cut down QEMU x86_64
             | emulator, ASM compiler and source code, along with extra
             | utilities. These are packaged with a win32 platform in
             | mind.
        
             | Jotalea wrote:
             | Probably it was hidden too deep (switch to English mode,
             | scroll down to Downloads section and download the Dev Kit),
             | I'll try to fix that tomorrow, or whenever I can.
        
       | layer8 wrote:
       | We need more bored people.
        
         | notfed wrote:
         | I desperately wish to be bored. (Context: I have a job)
        
           | w10-1 wrote:
           | trade you?
        
             | miningape wrote:
             | The grass is always greener
        
         | amelius wrote:
         | We need new ideas in OS/kernel development, not reiterations of
         | the same old (boring) ideas ...
         | 
         | (imho)
        
         | swiftcoder wrote:
         | Quick, someone light the UBI signal
        
           | jart wrote:
           | That's called living off interest, dividends, and stock
           | growth.
        
             | swiftcoder wrote:
             | For folks who worked in tech/finance/etc, yeah. There might
             | be something to be said for distributing access to enough
             | free time to do art, a little more widely...
        
       | zeroq wrote:
       | anyone remembers Argante
       | (https://argante.sourceforge.net/concept.html)?
        
       | changexd wrote:
       | Great work! I'm usually bored too, sometimes I find something to
       | study or try to implement known tech, but only give up when I
       | feel like it's too hard for me or it's too much work haha, this
       | motivates me a bit.
        
       | pshirshov wrote:
       | It's not actually an OS, it's more like a simple stub from osdev,
       | a simple program running on bare metal.
        
         | veltas wrote:
         | Got to agree, not to knock OP for sharing this because this is
         | a fun hobby project, but to most people this doesn't meet even
         | loose definitions of OS.
         | 
         | I'd say this is a bootable environment or something.
         | 
         | To be an OS it would have to have some way to run programs as
         | well.
        
           | Jotalea wrote:
           | To me, an OS is a piece of software that can boot in a
           | computer without requiring anything from another OS as host,
           | and allows running programs bundled with the OS (like Paint
           | on windows 1.1), and if supported, 3rd party programs.
        
         | noone_youknow wrote:
         | Everyone has to start somewhere, and many who try don't even
         | get this far (I'm not sure I would have at OP's age either).
        
         | Karellen wrote:
         | Well, the earliest version of the code that would morph first
         | into a terminal emulator, and eventually become Linux "was
         | written to use one thread to write the letter A to the screen.
         | The other thread wrote the letter B."1 Who knows what direction
         | this OS will evolve along?
         | 
         | 1 Linus Torvalds, _Just for Fun_ , pp.63
        
       | lolinder wrote:
       | To anyone else who read the Spanish version first, note that the
       | English version is longer and has the link to download the source
       | code!
        
       | KTibow wrote:
       | fyi, you can automatically detect the user's language and switch
       | to English when applicable by using `navigator.language`...
       | 
       | ...or even better, don't use JS (which doesn't work on older
       | browsers and prevents some optimizations), and read the Accept-
       | Language header instead
        
         | account42 wrote:
         | And please do NOT do what gogle does and pretend that certain
         | values in the Accept-Language header don't indicate a user
         | preference and you should guess based on the IP address
         | instead.
        
       | jmkni wrote:
       | lol well done :)
        
         | Jotalea wrote:
         | thx
        
       | TZubiri wrote:
       | Copado, cuales son sus dependencias?
        
         | Jotalea wrote:
         | Para compilar teniendo un host windows (lo odio pero no tengo
         | otra opcion) estan todas las dependencias incluidas en el Dev
         | Kit.
         | 
         | Ahora, si estas en Linux me imagino que nomas necesitas nasm
         | (el compilador) y build tools. Igual no estoy seguro..
        
           | TZubiri wrote:
           | Ah pero eso para compilar, osea que no hay dependencias de
           | runtime tipo otro linux. Es todo assembly.
        
       | heyyfurqan wrote:
       | Awesome!
        
       | qingcharles wrote:
       | This is a really good step-by-step reference to writing your own
       | OS:
       | 
       | https://www.amazon.com/Developing-32-Bit-Operating-System-Cd...
       | 
       | Find a copy on your favorite shadow library.
        
       | anandnair wrote:
       | Website is not working?
        
         | Jotalea wrote:
         | Uhh, it is?
         | 
         | The server I use apparently blocks specific devices or ISPs, it
         | has happened to me a couple times and I haven't found a
         | solution other than using a VPN or a different device on a
         | different network.
         | 
         | The tools they give me don't cover this device blocking, so I
         | guess that either they manage it or it is managed
         | automatically.
         | 
         | I will switch to self hosting once I get an actual server.
        
       | p0w3n3d wrote:
       | Le agradezco a Duolingo, no necesite cambiar el idioma a ingles
       | cuando entre a tu sitio web.
        
         | mportela wrote:
         | Great, now go back to study before Duolingo kidnaps your family
        
         | Jotalea wrote:
         | Jajaja, yo llevo estudiando ingles desde los 3 anos. No me
         | arrepiento.
        
       | not_your_mentat wrote:
       | Isn't disclosing your age a HR violation? ;)
        
         | guy234 wrote:
         | what
        
         | Jotalea wrote:
         | No? Or at least not as far as I know.
        
       | mrbluecoat wrote:
       | Reminds me somewhat of
       | https://github.com/ReturnInfinity/BareMetal-OS
        
       | tomhee wrote:
       | Nice job! Just started my own too.
        
       ___________________________________________________________________
       (page generated 2025-02-13 23:02 UTC)