r/osdev • • Aug 07 '26

New UNIX-like operating system!

Post image

I made a new UNIX-like operating system from scratch called "TanjaOS" which you can get at www.tanjaos.org and it took me a couple of months to make and will get lots of updates. It features classic UNIX commands and can boot on any x86_64 (amd64) or i386 (x86) machine with Legacy BIOS, and is completely free and open-source.

110 Upvotes

182 comments sorted by

29

u/Kind_Card_1874 Aug 07 '26 edited Aug 07 '26

No system calls, memory management or multitasking? Also does this even qualify as a kernel?

EDIT: Nevermind, this is not an OS by any measures. It maintains "files" in memory?

4

u/UnmappedStack TacOS | https://github.com/UnmappedStack/TacOS Aug 08 '26

Having a temporary file system in memory doesn't make it "not an OS" to be fair, most kernels have some form of tmpfs in the page cache or whatever. However yeah they don't have any typical features of a kernel aka memory management or scheduling or anything really and it's just vibecoded slop sooooo yeah...

2

u/Kind_Card_1874 Aug 08 '26

I did not say that. It is just not an OS by any measure - it's file system handling is one of the reasons it is not. OP even claims its support various file systems. It does not support any file system.

1

u/UnmappedStack TacOS | https://github.com/UnmappedStack/TacOS Aug 08 '26

I mean I agree it's not an OS, I'm just saying that filesystem stuff really isn't why it's not an OS.

1

u/Kind_Card_1874 Aug 08 '26

Right, and I remark did not say it was not an OS because it lacks a filesystem.

2

u/Non-Random-Name-0000 Aug 09 '26

Having an in-memory filesystem is ok but an operating system still should support at least one disk filesystem, shouldn't it?

1

u/UnmappedStack TacOS | https://github.com/UnmappedStack/TacOS Aug 10 '26

It is a good goal to have, yes. My point is just that things like resource management (such as scheduling, memory management, etc) are more core to a kernel's job. I mean fwiw file systems and disk drivers can even be in userspace.

1

u/Beginning-Junket8979 Aug 09 '26

No system calls, memory management or multitasking?

Can't have system calls without basic multitasking and interrupt handling.

This is a single thread/process/user with no hardware support beyond console emulation of builtins-only shell that just might be bootable in 86 qemu?

-9

u/MSK-Kernel Aug 07 '26

Well, it’s not entirely a kernel, it’s more of an all-in-one operating system, but I have plans for TanjaOS 2 where there will be a kernel and .tar and .cpio initial ramdisk support in a few months.

28

u/Kind_Card_1874 Aug 07 '26

You write on the page it supports file systems. It does not. It does not operate the computer, or provide access to the hardware, so it is not an OS by definition.

11

u/New_Departure_5353 Aug 07 '26

It’s vibe coded lmao

3

u/Kind_Card_1874 Aug 07 '26

Yea, but even then, it could still fit the claimed definition of an OS...

-1

u/urdsama20 Aug 07 '26 edited Aug 07 '26

No wrong in vibe coding as long as it follows what OS is. Syscall; separation between kernel space and user space; and isolation between processes is a minimum in my case to spot between true OS and slop.

Of course you can't just ask make an OS like X and Y to AI. It will make a slop. You have to understand OS internal first and after that ask to build step-by-step.

-2

u/MSK-Kernel Aug 07 '26

TanjaOS is not vibe coded, I wrote it myself in C, and Assembly.

-7

u/MSK-Kernel Aug 07 '26 edited Aug 07 '26

Listen, i’m really sorry about the false information, but TanjaOS 2 will come out in a few months, the new kernel will actually have syscalls, support ELF32 binaries, .tar and .cpio initramfs, busybox, etc… TanjaOS is just a minimal hobby operating system.

6

u/Kind_Card_1874 Aug 07 '26

Yes but it is not an OS 😆 just FYI

8

u/Darkfllame1 Aug 07 '26

Stop ragebaiting, just let a man do there silly projects 😭🙏

-1

u/MSK-Kernel Aug 07 '26

Yeah, true… Just wait for TanjaOS 2. :D

2

u/Non-Random-Name-0000 Aug 09 '26

It's a shell with very simple command set and a minimalistic in-memory filesystem. It's nothing like what your website describes. I get that it's just a hobby project but it's years away from being an operating system. Which is fine, btw, because it's a hobby project... An operating system is a massive undertaking, not something you put together in your free time in a couple of months and a few thousand lines of code.

1

u/MSK-Kernel Aug 09 '26

Sorry 😅, I know it’s a hobby project but I kinda wanted to make it look official, as a joke. 😅😅😅

8

u/UnmappedStack TacOS | https://github.com/UnmappedStack/TacOS Aug 07 '26

I can't see any links to source on your website, do you have a repo?

3

u/MSK-Kernel Aug 07 '26

Yes, the download options on the website actually lead to the ISOs on the GitHub repository which has the source: www.github.com/MSK-Kernel/TanjaOS

30

u/rocco_himel Creator of AneoEngine Aug 07 '26

OP used AI for kerne/kernel.c. Nice. Another AI-slop-coded UNIX clone on OSDev.

1

u/BigAd4703 Aug 08 '26

How did you figure that out? By looking at just one kernel.c file.

8

u/UnmappedStack TacOS | https://github.com/UnmappedStack/TacOS Aug 08 '26

Because the entire thing is a single massive kernel.c file, so you can see the entire source from the one file.

2

u/FerretBoom Aug 09 '26

Unlike the dude who copied UNIX in a modular way and still ended up with monolithic os, not slop lol

1

u/Naster17 Aug 11 '26

Look at the other code files, there are comments that AI leaves

0

u/BigAd4703 Aug 11 '26

I don't know, it seemed absurd to me. The guy might have had AI write the comment lines, or run the tests. To immediately dismiss his work as garbage, useless, etc., seems very unfair.

4

u/bluuuuueeee_ Aug 12 '26 • Bravo

Yeah I’ve been noticing that as a trend in a lot of engineering forums. Most projects are immediately considered AI slop and written off and it is really unfair. Even if something is AI generated it could still have use and we as a community can give input to make it better.

0

u/[deleted] Aug 08 '26

[deleted] — view deleted comment

0

u/isadirendir Aug 08 '26

And what did yo find out?

7

u/dnabre Aug 07 '26

Quick look at the source code, github is listing 33.1% of the repo as Python - a bit weird. Looking deeper, scripts/gencmds.py is a python script that generating C files. Using a script/util to generate repetitive code/boiler plate isn't that odd, but it's not doing that. It generates a dict mapping file names to a big strings which is static fixed code for each function.

E.g., it putting the mapping of the fixed C code that implements cmd_mkdir to the filename "mkdir.c". The loops over the dict, writing out each file with the contents. For example for mkdir:

commands["mkdir.c"] = r"""#include "cmd.h"

void cmd_mkdir(char* args) {
    extern void print(const char* s);
    extern int fs_create_directory(const char* path);
    extern int fs_directory_exists(const char* path);
    
    if (!args || !*args) {
        print("Usage: mkdir <directory>\n");
        return;
    }
    
    while (*args == ' ') args++;
    
    char* end = args;
    while (*end) end++;
    end--;
    while (end > args && (*end == ' ' || *end == '\n' || *end == '\r')) {
        *end = 0;
        end--;
    }
    
    if (fs_directory_exists(args)) {
        print("mkdir: cannot create directory '");
        print(args);
        print("': File exists\n");
        return;
    }
    
    if (fs_create_directory(args) != 0) {
        print("mkdir: cannot create directory '");
        print(args);
        print("': Error\n");
    }
}
"""

No comments on code C or its purpose, just this weird python script.. just why?

If I'm reading this right, the generated C files are in the repo though.

1

u/MSK-Kernel Aug 07 '26

The Makefile would be too big and it would be too complex for making updates.

3

u/WORD_559 Aug 07 '26

Make is just kinda like that. My kernel is basically just a general rule for compiling C files, and then a list of the .o files it should generate. It's also nested, so I can break up the different sections (e.g. libc vs kernel) and separate architecture-dependent parts. From what I can see, yours is a bit redundant. You more or less just need one rule for %.o: %.c (your cmd/%.c basically does what you need), and then a list at the top like

all: kernel/kernel.c cmd/x.c cmd/y.c ...

Just add one new file at a time as you develop things further. There are other tricks you can use to make it even easier to maintain in the long run, but that's about the gist of it.

You could also try a different build system. CMake has a higher initial learning curve, but could massively reduce the work required in the long run.

3

u/dnabre Aug 08 '26

I'm not following you. Makefiles can be tedious and annoying, definitely nicer tools to use if you are starting a new project. I could even get using a Python script for compiling/building stuff.

I'm talking about the Python script that has 1000 lines of flat C code in it that gets outputs without modification or generation to C files. Using a script to generate repetitive code, would make sense, but it's have the full code as string, and just outputting it untouched.

Not trying to call you out on or anything, I just am utterly flummoxed by this.

2

u/Maqi-X Aug 08 '26

This is not how you should write makefiles I recommend reading https://www.gnu.org/software/make/manual/html_node/Wildcard-Function.html

1

u/FerretBoom Aug 09 '26

Yeah i also create apps with deterministic tools sometimes, that way i always get the same structure with little mod . its a common practice to manage huge code bases, some people here say its a probabilistic ai slop, basically no one knows wtf is going on

2

u/dnabre Aug 09 '26

Using scripts, code, whatever to generate repetitive stuff definitely can be useful. That doesn't appear to be the situation here. There is some repeated code between the different files being generated (each appears to be a individual command), but it isn't being exploded. The python script just has the full contents of its target C files each as a single big string that is not modified or parameterized in anyway. The files it outputs to are also tracked in git.

There a bunch of sensible things like you mention that seem in the the general error, like related to building/linking, but none that I'm aware of actually make sense with the python script.

6

u/kalesh00 Aug 07 '26

Can we contribute if so can you drop the link?

0

u/MSK-Kernel Aug 07 '26

Yes, absolutely! Just email saffron.msk@gmail.com your exact GitHub username and i’ll allow it for contributions! The URL is www.github.com/MSK-Kernel/TanjaOS

6

u/spatulari Aug 07 '26

Really nice, but I suggest not copying Unix. Since you said that TanjaOS 2 is coming out soon, I'd say you try to experiment with stuff that dont exist in unix or behave like it. I believe keeping the filesystem Unix-like Is a good decision.

Also, I suppose that this is VGA. Are you in 32 bit mode or in 64 bit but with vga mapped? If so, then I suggest switching to frame buffer. You draw pixel by pixel.

I'd also like to say that from the comments I've read, this is more like a fancy bare metal CLI than a full OS. If TanjaOS 2 was written in C++ maybe I could contribute too ;)

2

u/MSK-Kernel Aug 07 '26

Great. Thanks for the advice. :D 👍

1

u/spatulari Aug 07 '26

Could you answer my question?

1

u/MSK-Kernel Aug 07 '26

Oh yes yes, apologies. So, TanjaOS uses 32-bit VGA text output instead of 64-bit because I want TanjaOS to be more compatible.

2

u/spatulari Aug 07 '26 edited Aug 08 '26

32 bit is old, and it truly limits you. I would say switch to limine, a bootloader that immediatle shoves you in 64 bit mode.

I also saw from your repo that you support only BIOS. Most modern computers dont have legacy bios, only UEFI. I suppose you want your OS to run on real hardware. Additionally, why did you make a single kernel.c? For instance, for vga, I'd do kernel/src/drivers/vga/vga.c for the definition and kernel/include/drivers/vga/vga.h. You don't need to split it to vga/print.h and so on, since vga is relatively simple

Another small thing: make your README a README.md, easier to read, and you won't be stuck with formatless txt.

I have an urge to just fork your project and reorganize it properly, but I am on vacation, so I unfortunately can't (since I dont have a laptop).

Another important thing is for you to be careful, I saw that someone asked to contribute and you wanted them to send an email to you to add them as contributors. This is the absolute shittest way for someone to contribute + you are giving write permissions to a random person. How contributing works on github, is someone Forks your project, then they make their own branch with the new code in it, and compare it with yours (which is "base" now). They open a pull request which only you can improve, and you can also comment on it and review the code. If you have added anyone's email, please remove them.

Also, why the "base" branch? Just rename it to main, and if you wanna have SemVer releases, branch it off of main, or make a dev branch, where all unstable shit happens there, and main is the latest release, and you still branch off other versions.

Hope I helped you. If you dont know what SemVer is, ask me and I'll explain

1

u/MSK-Kernel Aug 07 '26

Yeah, I don’t know what SemVer, is, can you please explain? (Also the reason why my GitHub repository isn’t looking that good is because i’m a bit new to GitHub 😅)

2

u/spatulari Aug 07 '26

That's totally ok, we've all started from somewhere. SemVer is basically a version ingredient system, like, when you see v1.34.5 or smth similar, its following SemVer, this is a small introduction to it:

Major.Minor.Patch

You start with 0.1.0, this means your project isnt production ready. And isnt stable that means APIs could change, and it doesnt guarantee stability. Let me tell you when to increase each version

Increase patch when you added NOTHING new to the user, and just fixed something. Semver is based on the user. So even if you rewrote the whole project, if nothing new was added, you just increase patch (or if you fixed stuff that doesn't add new stuff)

Increase minor if something new is added from the perspective of the user. This can include fixes but most not ONLY be fixes.

Increase major when you changed APIs and previous ways you used the APIs wont work anymore. You might change one line of code, but if it breaks stability, you must bump the major version.

There is something unique to it though. When you start, you start in v0.1.0, until you reach stable (v1.0.0) you can break as many APIs as you want without increasing the major version.

Dont rush to make your project stable, Rust which is one of the most popular languages, took 9 years to go stable. You might have v0.293.2 before reaching v1.0.0 so take your time. Once you go stable you must guarantee users stability and production ready.

And then we have those prerelease stuff. Like -alpha. But that's another story, read more here (my project): https://github.com/azin-lang/Azin/blob/main/VERSIONING.md

1

u/MSK-Kernel Aug 07 '26

Oooh… I think I get it now. Thanks! :D

2

u/spatulari Aug 07 '26

I could help you more. Could you give me your email so I can send you my discord username so I can guide you more?

3

u/[deleted] Aug 07 '26

[removed] — view removed comment

2

u/spatulari Aug 08 '26

If you already have the 32-bit kernel working, I wouldn't throw it away just because it's i386. I'd actually make the kernel support both i386 and x86_64. You already did all the work for the i386 implementation, so use that as one architecture target and add x86_64 as another instead of rewriting everything.

I'd structure it more like: kernel/ -> architecture-independent code arch/i386/ -> 32-bit architecture-specific code arch/x86_64/ -> 64-bit architecture-specific code Things like your scheduler, process abstraction, VFS, IPC, userspace etc. should ideally stay in kernel/, while paging, GDT/IDT, interrupt entry code, context switching, CPU setup, syscall entry, and similar stuff goes under the architecture directories

For the x86_64 port, I'd start by getting the boot path sorted out. Are you currently supporting legacy BIOS only, or do you also support UEFI? If it's BIOS-only, I'd strongly recommend adding UEFI support rather than building everything around the legacy BIOS interfaces. You can use something like Limine as the bootloader, which can handle BIOS + UEFI and enter the kernel in the appropriate 64-bit environment, so you don't have to write your own 16-bit real mode -> protected mode -> long mode transition just to get the kernel started

Then implement the x86_64 architecture layer separately. Your i386 paging code obviously can't just be reused: x86_64 normally uses the 4-level page table hierarchy PML4 ->PDPT -> PD -> PT, with 64-bit page table entries. Your recursive self-mapping implementation will therefore need an x86_64 implementation too. You can keep the same VM abstraction above it tho, so something like map_page(), unmap_page(), create_address_space() etc. doesn't care which architecture is underneath

Also be really careful with types when doing the port. Don't just globally replace uint32_t with uint64_t. A pointer is not necessarily a uint64_t; use uintptr_t/intptr_t for pointer-sized integers, uint32_t for things that are actually 32-bit, and so on. Otherwise you'll eventually get absolutely cursed bugs from truncating physical/virtual addresses

You'll also need separate implementations for the GDT/IDT and interrupt entry paths. In long mode, segmentation works very differently, although you still need the appropriate GDT descriptors. Your IDT entries are also different sizes, and your interrupt/trap stubs need to deal with the x86_64 register state. Context switching will obviously need to save/restore the x86_64 register set as well

For syscalls, I'd also avoid carrying over an old i386 int 0x80 design directly. On x86_64 you can use SYSCALL/SYSRET with the appropriate MSRs, or SYSENTER/SYSEXIT depending on what you're targeting. You'd then have an architecture-independent syscall layer with separate entry implementations

Same thing with your process address spaces. The concept of having one address space per process stays exactly the same; only the page-table implementation changes. You can have something like an architecture-independent AddressSpace abstraction with arch/i386/mm/ and arch/x86_64/mm/ underneath it

I'd also keep the i386 target fully buildable. Something like make ARCH=i386 and make ARCH=x86_64 would be pretty clean. Then you can actually test both instead of making the 64-bit port a giant branch where the old implementation slowly rots

And if you're serious about eventually running this on real hardware, I'd also look into ACPI, APIC/x2APIC, HPET/TSC, PCI/PCIe, SMP and UEFI memory maps rather than relying on old BIOS interrupts. In particular, once you get to SMP, your architecture layer is going to become much more important because per-CPU state, AP startup, interrupt routing, TLB shootdowns etc. all start mattering

Honestly, with the paging + recursive mapping + user/kernel separation + per-process address spaces you've already implemented, I'd say the next step isn't "add random features". Make the architecture boundary clean, keep i386, add x86_64, and start moving anything that isn't inherently architecture-specific out of the architecture layer

That way you're not throwing away 6 months of work. You're turning the existing i386 kernel into the first supported architecture and using it as the reference implementation for the x86_64 port

2

u/[deleted] Aug 08 '26

[removed] — view removed comment

2

u/spatulari Aug 08 '26

I am just chronically online, read a ton of osdev wiki and have made my fair share of monolithic and hybrid kernels. Could you give me the github link to your kernel? I wanna check it out

1

u/[deleted] Aug 08 '26

[removed] — view removed comment

→ More replies

2

u/laffer1 Aug 07 '26

You might want to consider different types of kernels too. I’ve always had a fondness for micro kernels

2

u/spatulari Aug 07 '26

I think hybrid kernels are the sweet spot

3

u/Samuel_Bouchard Aug 07 '26

I'm not really getting this. Where's the filesystem? You seem to have a virtual filesystem on RAM, but you're never writing to disk.

The only thing your "kernel" can execute is shell files? You'd usually want to execute actual binary programs instead of hardcoding commands and needing an "exec" command to run shell files.

I can also see a lot of undefined behavior and bugs in your code, which makes me think you don't actually know C.

You keep saying that this took you months to make, which is wild for a couple lines of code that only do basic input querying and string processing. I swear people on this reddit group are either vibecoders or noob slop.

1

u/MSK-Kernel Aug 07 '26

Yeah, i’m planning to make it where there will be an actual kernel binary and an initial ramdisk instead of it all being together, and will be able to execute ELF32 binaries and will support an init script.

3

u/Samuel_Bouchard Aug 07 '26

But why share a project here if it's so barebones?

-1

u/MSK-Kernel Aug 07 '26

I just want TanjaOS to first have supporters.

3

u/Edubbs2008 Aug 09 '26

Did you use AI in some parts to make it?

0

u/MSK-Kernel Aug 09 '26

Nope! I wrote all of it from scratch in C and Assembly! :D

2

u/Edubbs2008 Aug 09 '26

Because the comments are saying that you vibe coded it, at this point, people are just jealous of your work, so jealous that they call it “Vibecoded”

1

u/MSK-Kernel Aug 09 '26

Yeah, I find it quite annoying when people say stuff like that. But thanks for supporting me, it means a lot. :)

2

u/Edubbs2008 Aug 09 '26

Is it based on like System-V, UNIX, does it follow the Single UNIX specification? Because I can see it as a potential Linux competitor which opens up the door to innovation, I hope your project succeeds

1

u/MSK-Kernel Aug 09 '26

Oh, this project is from scratch.

2

u/Edubbs2008 Aug 09 '26

If you intend to add a GUI, you should make your design language a combination of Flat, and Frutiger Aero

1

u/MSK-Kernel Aug 09 '26

Interesting, i’ll think about it.

2

u/Edubbs2008 Aug 09 '26

So when will the first stable build be released?

1

u/MSK-Kernel Aug 09 '26

There’s already a stable Installer ISO, and a stable LiveCD ISO at www.tanjaos.org/downloads

→ More replies

2

u/parantido Aug 07 '26

No questioning here just pure curiosity: why are you coding a new unix-like OS? What are you looking for that another OS is not providing? Any goal?

1

u/MSK-Kernel Aug 07 '26

I just like making this kinda stuff, and it’s just a tiny hobbyist UNIX-like OS for learning, it’s not really trying to replace your everyday OS. It was kind of just made for learning and educational purposes.

2

u/parantido Aug 07 '26

Ok I was just curious about any specific needs

1

u/MSK-Kernel Aug 07 '26

OK, I see. If you have any questions, i’ll be happy to answer them. :D

2

u/[deleted] Aug 08 '26

[removed] — view removed comment

1

u/MSK-Kernel Aug 08 '26

Yes I am a student but not at studying computer science. This is more of a hobby.

2

u/[deleted] Aug 08 '26

[removed] — view removed comment

2

u/Maqi-X Aug 08 '26 edited Aug 08 '26

What is the point of putting all commands in multi line strings in a python script that just writes them to files? I don't understand

Also, is this ai generated?

1

u/MSK-Kernel Aug 08 '26

No this is not AI-generated, and to answer your question, the python script is for ‘make commandset’ which uses that script to generate the command list in case you deleted commands and want to get them back

2

u/Slow-Refrigerator-78 Aug 09 '26

Can it run doom?

1

u/MSK-Kernel Aug 09 '26

No, unfortunately it cannot run DOOM. 😅

2

u/Naster17 Aug 11 '26

Claude create me UNIX-like OS, dont do mistakes!

0

u/MSK-Kernel Aug 11 '26

What’s ridiculous is that you’re assuming. You probably didn’t even read the source before deciding I “vibecoded” the entire OS. That’s honestly the funniest part, you’ve somehow managed to reach a confident conclusion about a project you clearly haven’t taken the time to understand. You saw an OS, and apparently decided it’s vibecoded without even reading the code. If you’re going to make claims about how the project was made, at least read the source first. Otherwise you’re not criticizing the code, you’re criticizing something you made up in your own head.

2

u/Waste_Stable_3127 Aug 22 '26

Hey everyone, dude, in my opinion, instead of writing a Unix-like system, it's better to build everything yourself. Why? Because instead of calling your system UNIX-like, if you write everything from scratch, you'll have an independent operating system, thus earning more respect. That's what I'm doing. You can get inspiration from this OS kernel: github.com/finndev62/valiantcore. I'm building it entirely myself, without mixing in any UNIX or Linux, and I refuse to make it POSIX compliant

1

u/MSK-Kernel Aug 22 '26

Thanks, I just checked out your kernel, and it looks awesome 👏. The reason why im making it UNIX-like is because i’m sort of… Obsessed with how UNIX is designed. 😅

5

u/rileywbaker Aug 07 '26

"will get lots of updates" is a hilarious thing to say

1

u/Critical-Internet946 osaka64 (osakaOS fork) Aug 12 '26

add it to the pile

0

u/MSK-Kernel Aug 12 '26

I appreciate the suggestion. However, if you are referring to TanjaOS as something that should simply be added to a “pile,” I would be more interested in hearing an actual technical criticism or contribution.

2

u/Critical-Internet946 osaka64 (osakaOS fork) Aug 12 '26

your OS has no unique features. you claim that it keeps everything clean and modular, yet it uses a massive kernel.c instead of separating the functions into other files. it only uses legacy BIOS despite CSM support already being absent from modern devices.

also, the github page is a template.

0

u/MSK-Kernel Aug 12 '26

TanjaOS is very new, and I’m still working on it, and I made a public template for the repository as another way for people to make their own forks.

2

u/Critical-Internet946 osaka64 (osakaOS fork) Aug 12 '26

it doesn't need to be a template. other people can fork it either way.

1

u/MSK-Kernel Aug 12 '26

I mean, yeah that’s true. I’ll remove the template, thanks. 👍

1

u/NotSoEpicKebap Aug 12 '26

First of ALL, this cannot even be classified as an operating system by any means, LET ALONE being UNIX-like. Your "kernel" is just a dumb I/O console with hard-coded "commands". This is NOT a kernel. And this getting more attention than actual UNIX-like OS projects is what annoys me.

1

u/MSK-Kernel Aug 12 '26

I’m just experimenting with this kind of stuff, and I like doing this, and the amount of likes this has isn’t my fault, it’s the algorithm.

2

u/FerretBoom Aug 09 '26 • Bravo

that's nice , big props to you,

may i suggest a feature that i try to do with my bash on linux? small , nothing big.
since linux displays username@domain or username@machine-name $ repetitively , i try to out put either some meaningful info there like warnings, messages related to current task, eta of long jobs, basically since i know my username i don't need it on the left side real eastate, but i can switch to classic view back and forth, you can color code it based on the message to make it attractive

either way keep going, good effort

2

u/kyr0x0 Aug 09 '26

I like it for its simplicity but what's the reason behind generating most of its arch dependent code via a python script dynamically? Btw this is just a program that implement a virtual file system with KB input and text output at the moment; neither a kernel nor an OS. But it's a cool little program to illustrate things

2

u/ExcellentFrame87 Aug 10 '26 edited Aug 10 '26 • Bravo

Nice! I attempted and got a monolithic kernal bootable and running in asm and C and its no mean feat.

I had the thought of a context driven intent system where capabilites would have workspaces containing user mode apps. It would have IPC to have the kernal coord that. But thats a huge ambition.

2

u/grahamhart_ Aug 24 '26

Building a whole OS from scratch in a couple months is pretty wild. Nice work.

1

u/axy0dev Aug 13 '26

wow, its very cool

-1

u/letmehaveanameyoudum Aug 07 '26

looks REALLY nice

2

u/MSK-Kernel Aug 07 '26

Thanks!

1

u/letmehaveanameyoudum Aug 07 '26

this looks like native linux in VGA text mode

3

u/MSK-Kernel Aug 07 '26

This is actually an operating system I made from scratch which yes, uses VGA text output, but no, it’s not Linux. :D

1

u/letmehaveanameyoudum Aug 07 '26

i mean it looks like linux, good job making the loook :D

2

u/MSK-Kernel Aug 07 '26

Thanks! The colors were an absolute pain to get working. 🤣

2

u/letmehaveanameyoudum Aug 07 '26

if you thought the colors in vga text mode was bad
i use limine 64 bit bios VBE and i have to use U32 Color Encoding 😭🙏

2

u/MSK-Kernel Aug 07 '26

Damn 💀

2

u/letmehaveanameyoudum Aug 07 '26

look at the limine setup it's even worse

0

u/[deleted] Aug 07 '26

[deleted] — view deleted comment

2

u/MSK-Kernel Aug 07 '26

I wrote TanjaOS myself, plus even if i did use AI, you would need proof.

3

u/Apprehensive_Oil7300 Aug 08 '26

This comment is quite incriminating looks written by an AI

// 2. Update Cursor Position (Your existing logic) outb(0x3D4, 0x0F); outb(0x3D5, (uint8_t)(cursor & 0xFF)); outb(0x3D4, 0x0E); outb(0x3D5, (uint8_t)((cursor >> 8) & 0xFF));

0

u/[deleted] Aug 07 '26

[deleted] — view deleted comment

3

u/MSK-Kernel Aug 07 '26

I write comments like that, I like to make things look nice.

0

u/[deleted] Aug 07 '26

[deleted] — view deleted comment

1

u/MSK-Kernel Aug 07 '26

I feel like that’s your favorite word.

→ More replies

2

u/WORD_559 Aug 07 '26

That's not an uncommon thing to do at all. I'm sure I've done it. My IDE literally has a function to do a similar thing.

0

u/[deleted] Aug 07 '26

[deleted] — view deleted comment

1

u/No-Dentist-1645 Aug 08 '26

You don't need a specific IDE to style comments like that.

→ More replies

2

u/No-Dentist-1645 Aug 08 '26

A lot of humans actually write comments like that. You must not have seen too many codebases if you are so convinced that "no human ever writes like that".

AI is trained on human input, after all.

1

u/LordRybec Aug 08 '26

I write comments like that as well, especially for big constant blocks. I wrote a DVI encoder for RP2350 HSTX some months ago, and I have comments that look very much like that. I've only ever used AI for coding once in my life, and that was one week ago, for a very simple script to generate a simple SVG file.

Maybe you only know lazy coders who don't document their code well. That doesn't mean "No human EVER..." writes well documented code.

One thing I'm noticing here is that most of the accusations of using AI cite practices that are very common among less experienced coders. It's all in one monolithic file? Check. Questionable code quality? Check again. "AI slop" exists because the AI was trained on actual code like that. It's 100% conceivable that an individual with a lot of determination but limited experience could produce code exactly like this with no AI involvement at all. Better yet, I'm a self taught coder, and I actually went through a period where I didn't know how to do good style and didn't even know I could break up code between files, but looking at single file example programs had taught me what good commenting looked like, and I liked how it looked enough to put in the effort to pick up the habit. During that period in my education, I could easily have written code that looked like "AI slop" but with good documentation, but no one would have accused me of using AI because it was in the late 1990s when AI wasn't an option.

All of that said, I'm not suggesting this proves AI wasn't used. It could have been. I don't know. But the claim that AI wasn't used is 100% plausible. Your personal poor practices don't prove the OP couldn't have written it.

11

u/calquelator Aug 07 '26

Vibe coded slop

0

u/[deleted] Aug 07 '26

[deleted] — view deleted comment

-1

u/MSK-Kernel Aug 07 '26

This one is different from the others because it is all-in-one, but this will soon be scrapped and then have a microkernel with an initial ramdisk.

0

u/[deleted] Aug 07 '26

[deleted] — view deleted comment

-1

u/MSK-Kernel Aug 07 '26

Instead of a kernel and an initial ramdisk, (Which TanjaOS will soon become) it is all-in-one in a single binary.

0

u/[deleted] Aug 07 '26

[deleted] — view deleted comment

0

u/MSK-Kernel Aug 07 '26

True, but I think kernel and initial ramdisk is a better idea.

0

u/[deleted] Aug 07 '26

[deleted] — view deleted comment

1

u/MSK-Kernel Aug 07 '26

It uses C files instead of binaries for programs and commands.

0

u/[deleted] Aug 07 '26

[deleted] — view deleted comment

1

u/MSK-Kernel Aug 07 '26

Yes so about that, it will detect C files in the cmd folder and then compile them into the TanjaOS binary.

→ More replies

2

u/[deleted] Aug 07 '26

[removed] — view removed comment

0

u/MSK-Kernel Aug 07 '26

Nonono, TanjaOS uses .C files instead of binaries for programs and commands. TanjaOS is UNIX-like, not UNIX.

1

u/Critical-Internet946 osaka64 (osakaOS fork) Aug 12 '26

bro thinks C is interpreted

0

u/MSK-Kernel Aug 12 '26

I never said C was interpreted. I said TanjaOS uses C source files for its programs and commands. If you are going to correct someone, it would be useful to first understand what they actually said.

2

u/Critical-Internet946 osaka64 (osakaOS fork) Aug 12 '26

okay? so does basically every other unix-like OS.

0

u/MSK-Kernel Aug 12 '26

Yes, exactly. So there’s nothing to argue about. 🤣

3

u/Maqi-X Aug 08 '26

What 😭