Building Your Own (Minimal) Operating System

Why, you might ask, would anyone want to build their own operating system? It’s really about being in control and knowing what’s going on.In the next few paragraphs I’ll explain what motivated me to take on this project, the recipe I used, and what I like about it.I’m not fond of confusion or complexity, so I want an operating system that is clear and simple. I don’t want to wait for anything. When I turn my computer on, I’d like it to be ready as fast as a light switch, or at the very least, in about as long as it takes to get a dial tone.
When I launch a program, I want to use it right now.
No hour-glass or wait message please. I want all of the programs that I use to be either completely obvious, or well documented with a short learning curve. There should not be any software on my machine that I don’t plan to use. All of it should be easy to maintain.

I haven’t seen anything like that. Well, at least not lately. In the 80’s , I bought a Commodore-64. As quick as you could throw the switch, it was ready to rock. There was no tinkering with the operating system, it was hard-wired. I used it to develop programs in basic and C. It was great in its time, but it never evolved.

Eventually, I bought a ‘286 pc with DOS. I never had much interest in the Windows 3.x series, and didn’t use windows until I replaced the DOS box with a new “Windows 98” machine. (When I say “Windows” I mean Microsoft’s product, and when I say “windows” I mean any graphical operating system.)

With Windows it was one damn thing after another. I don’t want to sound too harsh, because it usually worked and was
easy to use. For most people it’s a good choice. I just wasn’t happy with it. I never felt that I was in control with Windows. When things jammed up, it was usually a total mystery. “Help” didn’t help, “Shutdown” wouldn’t, “can’t find the driver”, “page fault”,
“general protection error”, etc.

So I started looking at Linux. I tried out SuSe, Mandrake, Slackware and maybe a dozen other Linux distributions. A lot of them are pretty good, but as often as not I’d run into trouble setting up the X window system or with other software installation or maintenance issues. I was actually starting to miss the “C:\” prompt.

Then I came across something different.

Gerard Beekmans’ “Linux From Scratch” is a “roll your own” Linux
distribution. You start out with about 80 megabytes of program source code, then compile and install it all (one program at a time) until you have a bootable Linux system. It’s remarkably educational, and it’s well documented. It’s not instant gratification, but once it’s working,
you know where everything is and how it got there.

A basic LFS installation is text only, but there are lots of links explaining how to install X or almost anything else you could want. I just wanted a decent platform for surfing, email, editing and a bit of programming.

I started with a basic “Linux from Scratch” installation,
then got my network connection working . After that, my plan was to add the minimum amount of software for an effective desktop environment.

John Murray’s article
“Building The Lo-Fat Linux Desktop” was my main guide for selecting lean and effective software.

Here’s what I picked:

utilities:   nano which wget
graphics driver:   XFree86
graphics libraries:gtk glib jpeg png
window manager:    Blackbox
console window:    Rxvt
text editor:       Nedit
file manager:      X File Explorer
web/file browser:  Dillo
browser,mail,news: Mozilla*
ps/pdf viewer:     GSview
image editor:      Gimp*

*(Mozilla and Gimp don’t really qualify as lean, but I like what they do and I don’t mind waiting five seconds for them to load.)

The result is a fairly boring desktop that does everything I need and very little else. I don’t even use wallpaper or desktop icons. Here’s a screenshot of it in action.
I have installed this system on several pc’s, always with good results. It’s not trying to do too much, so it’s quite responsive even on older hardware. My Celeron 300A has no problem with it. It hardly ever jams up, but when it does, I usually have a pretty good idea how to fix it.

It doesn’t start up nearly as quick as my Commodore-64 did. Booting takes about twenty seconds. When I get tired of that, I suppose I could get some help from the folks at “LinuxBIOS”. I’ve read that their boot times are somewhere between light switch and dial tone.

This installation, without the source files, takes about 450M of space. The source files take about 220M, so it all fits easily on one CD.

It was a little more work than most distributions, but I think it was worth it.

About the Author:
Steve is an optical engineer in Windsor, Ontario. He writes programs using C++ and OpenGL to solve problems in lighting design, and prefers larger computers because the little ones are too hard to take apart.


  1. 2003-01-31 8:36 am
  2. 2003-01-31 8:38 am
  3. 2003-01-31 8:39 am
  4. 2003-01-31 8:40 am
  5. 2003-01-31 8:44 am
  6. 2003-01-31 9:05 am
  7. 2003-01-31 9:05 am
  8. 2003-01-31 9:25 am
  9. 2003-01-31 9:27 am
  10. 2003-01-31 9:41 am
  11. 2003-01-31 9:52 am
  12. 2003-01-31 10:51 am
  13. 2003-01-31 10:56 am
  14. 2003-01-31 10:59 am
  15. 2003-01-31 11:31 am
  16. 2003-01-31 11:51 am
  17. 2003-01-31 12:00 pm
  18. 2003-01-31 12:21 pm
  19. 2003-01-31 12:36 pm
  20. 2003-01-31 1:15 pm
  21. 2003-01-31 2:12 pm
  22. 2003-01-31 2:26 pm
  23. 2003-01-31 2:32 pm
  24. 2003-01-31 2:36 pm
  25. 2003-01-31 2:41 pm
  26. 2003-01-31 3:08 pm
  27. 2003-01-31 3:55 pm
  28. 2003-01-31 5:05 pm
  29. 2003-01-31 5:09 pm
  30. 2003-01-31 5:21 pm
  31. 2003-01-31 5:23 pm
  32. 2003-01-31 5:30 pm
  33. 2003-01-31 5:42 pm
  34. 2003-01-31 5:51 pm
  35. 2003-01-31 6:37 pm
  36. 2003-01-31 6:47 pm
  37. 2003-01-31 7:11 pm
  38. 2003-01-31 7:15 pm
  39. 2003-01-31 7:21 pm
  40. 2003-01-31 7:23 pm
  41. 2003-01-31 7:50 pm
  42. 2003-01-31 7:51 pm
  43. 2003-01-31 7:58 pm
  44. 2003-01-31 8:01 pm
  45. 2003-01-31 8:18 pm
  46. 2003-01-31 9:19 pm
  47. 2003-01-31 10:10 pm
  48. 2003-01-31 10:20 pm
  49. 2003-01-31 11:11 pm
  50. 2003-01-31 11:18 pm
  51. 2003-01-31 11:33 pm
  52. 2003-02-01 12:25 am
  53. 2003-02-01 12:41 am
  54. 2003-02-01 2:17 am
  55. 2003-02-01 4:13 am
  56. 2003-02-01 4:15 am
  57. 2003-02-01 6:43 am
  58. 2003-02-01 12:49 pm
  59. 2003-02-01 1:27 pm
  60. 2003-02-01 1:34 pm
  61. 2003-02-01 2:12 pm
  62. 2003-02-02 3:16 pm
  63. 2003-02-02 6:28 pm
  64. 2003-02-03 12:11 am
  65. 2003-02-03 4:58 am
  66. 2003-02-03 7:31 am
  67. 2003-02-03 6:37 pm
  68. 2003-02-03 6:48 pm