HN user

klange

180 karma

[ my public key: https://keybase.io/klange; my proof: https://keybase.io/klange/sigs/rfkkoBOy_waRt0hn2kwcbqhvvl0UMy4PiCQhPMgeJIk ]

Posts1
Comments13
View on HN

I really like xv6 for its simplicity and restricted scope. It feels like a better Minix in the sense of being a codebase intended for university coursework. If your goal is learning the very basics of what an OS does, xv6 is a good place to start. ToaruOS can cover the same ground - of course there's paging and IPC and threads - but I don't have a cache of PDFs sitting around describing it, and there's no intentionally missing bits waiting for a student to fill them in for homework. If xv6 is "Operating Systems 101", then ToaruOS is a 300-level seminar/workshop.

My intended audience is hobbyists who are looking for a reference for writing their own OS - the sort of people we often find on osdev.org, or the #osdev channel on Libera, who have stumbled through an old tutorial on x86 bring-up and want some example of how "the next steps" work.

I wouldn't say I "own" that channel in any respect, I'm just responsible for dragging it over from Freenode during the exodus... we've got the same same staff as we did before the move and I'm not even the "founder" according to ChanServ.

When I started the project a decade ago, my aim was specifically to understand POSIX/Unix and to "learn by doing", so of course there's some POSIX-like elements underpinning the design. Back before I decided that literally anything can be in scope and was using third-party components, this aided in porting software, as other commenters have pointed out. These days, it gives more purpose to things I build for the OS if they can also reasonably be built for Linux or macOS - things like my editor (which I wrote for the OS and now use as my daily driver in Linux), or my Python knock-off.

As for the microkernel bit, this might sound like circular reasoning but I didn't go for a microkernel because no one really uses microkernels. It's not that I think microkernels are a bad idea, ToaruOS does push plenty of stuff into userspace. Rather, my main goal at the moment is to provide an educational resource that more accurately models the way "real" OSes work than the typical academic OS projects.

A few years ago, some colleagues and I wrote a NES "demake" of Splatoon, in C, over the course of ~2 days. https://github.com/SplatooD/splatood

I definitely think our ability to do interesting things quickly (in terms of runtime) was hampered by the use of C over assembly, but it did allow us to get a functioning game done in a very short period of time.

The code in the repository builds a multiboot-compatible x86 "kernel" that can be booted with GRUB or iPXE or any number of other bootloaders supporting the format.

The trick is that ISO 9660 sector IDs used in file offsets are relative to the start of the disk, so you can craft a file entry with offset 0 and size equal to the length of the CD.

I'm the author. This wasn't something anyone was supposed to 'find', it's not even really a 'project', just a quick hack to demonstrate a point; I don't even think it's valid to say the project name is "taylor", it's just the name of the repository - I probably should have just called it "swift-on-baremetal" or something equally boring. I have a history of my stupid little 'projects' showing up on HN.

We had the physical buttons wired up and replaced the touchscreen with a larger (non-touch) LCD panel circa late 2011. We wanted to get some LCD modules to replace the empty panels next to the buttons, but I don't know if they were ever wired up (I know we built them, but I recall there being a major blocking problem).

I'm amazed the thing kept tweeting a year after I graduated.

When avuserow says "upgraded" he means we "replaced it with a not-much-newer HP desktop running Ubuntu", so it's still a random x86, running Linux, on a full-sized motherboard. It lives outside the case these days, though.