[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)