Initial commit - Begun rewrite of website generator
This commit is contained in:
80
pages/2012-05-29-Hoby-Kernel-Restart.md
Normal file
80
pages/2012-05-29-Hoby-Kernel-Restart.md
Normal file
@@ -0,0 +1,80 @@
|
||||
layout: post
|
||||
title: "Restarting a hoby kernel"
|
||||
subtitle: "Once more, from the top... "
|
||||
tags: [osdev]
|
||||
|
||||
Many years ago, I got interesting in trying out Linux. Having used Windows
|
||||
since my parents started using Windows computers at work and declared our old
|
||||
Macintoshes obsolete I realized it would mean quite a change and didn't really
|
||||
want to go all in right away. Somehow I found out about VMWare Workstation - an
|
||||
Intel processor emulator made for running virtual computers within Windows and
|
||||
installed one of the first versions of Ubuntu in it.
|
||||
|
||||
I played around with Ubuntu Linux for a while, but then I started thinking
|
||||
about the computer emulator I was using and wondered whether I could make
|
||||
a program myself that would boot in it. In other words, could I write a program
|
||||
that ran by itself on a computer with no operating system?
|
||||
|
||||
The answer turned out to be yes. With a lot of help and tutorials from what
|
||||
later became [osdev.org](http://www.osdev.org) and many more that
|
||||
I unfortunately can't remember or find anymore, I wrote a small binary
|
||||
executable in Assembly that could run of the boot sector on a floppy disk.
|
||||
I was amazed! Could it really be this simple? I immediately set out to write an
|
||||
entire operating system. Nothing fancy; I just wanted to boot the computer and
|
||||
get into a desktop environment with a text editor and a compiler so I could
|
||||
keep adding to the system from within it. Shouldn't be too hard, should it?
|
||||
|
||||
Almost ten years later, I think I got the routines for basic BIOS-assisted
|
||||
screen printing down...
|
||||
|
||||
There are several reasons why things are moving so slowly. First and foremost:
|
||||
It wasn't that easy. Operating systems are advanced stuff, and combined with my
|
||||
own lack of any formal education or experience in programming or computer
|
||||
systems this means progress is slow.
|
||||
|
||||
Next is a lack of time. Back when I found VMWare Workstation and started this
|
||||
journey, I was on summer holiday from school and had all the time in the world.
|
||||
Then school started again. Then came the Christmas holiday and I realized I had
|
||||
forgotten everything. So I threw everything out and started again from scratch.
|
||||
This time I got a bit further. Then school started again.
|
||||
|
||||
And that's how it's been since then. School started, ended and begun again.
|
||||
Then I did a year in the army. Then university (engineering physics). Then
|
||||
I met a girl, got engaged, bought a house, worked for a year with project
|
||||
management, went back to university... Still, every now and then I've restarted
|
||||
development of my operating system dream.
|
||||
|
||||
So, how will I ever get out of this reset loop? Well, I've got a plan. Most
|
||||
important, I think, is to have realistic expectations. That shouldn't be as
|
||||
much a problem as it used to be. As time has passed I have grown to understand
|
||||
my limitations better than I did when I was 15. Also, my main goal of
|
||||
programming now is recreation. A moment of peace by myself when I can
|
||||
concentrate on a problem I appreciate. If I never get a stable virtual file
|
||||
system going, that's ok. If I build a working tcp-ip stack and get a web server
|
||||
running under my own operating system, that's ok too, but it's not my goal.
|
||||
Still, this doesn't mean I want to keep rewriting the code for setting up the
|
||||
Interupt Vector Table for the x-th time next time I have a week of university,
|
||||
which brings me to the next part of the plan.
|
||||
|
||||
Documentation. I'm going to restart my development efforts once again, but this
|
||||
time I plan to be more careful about documentation. My thought is that if
|
||||
I write down what I do and why, I won't have to do it again in six months but
|
||||
can just read through my old notes. Who knows; this plan might just be crazy
|
||||
enough to work.
|
||||
|
||||
I've obviously tried this before. It worked somewhat but I made a big mistake.
|
||||
I called my notes a "tutorial". I did that because I wished it to be
|
||||
a tutorial, that beginners could learn from my years of mistakes. Some people
|
||||
didn't like this and a few unnecesarily harsh comments got me of the osdev
|
||||
scene for a while. Then university started again and I was back in the loop.
|
||||
|
||||
This time I won't make that mistake. I still wish to make those notes public,
|
||||
though, because I still think that I and possibly others may benefit from them.
|
||||
I'll be clear though, that I am not a profesional programmer and have never
|
||||
pretended or wanted to be one. I appreciate feedback in the case anyone reads
|
||||
this and I can be reached through email or twitter (links below). Please try to
|
||||
stay constructive, though.
|
||||
|
||||
Anyway, this is already way more text than anyone would bother to read, so
|
||||
I guess I'll just cut it off here and we'll see where this series of notes
|
||||
finally takes us.
|
||||
Reference in New Issue
Block a user