Carlinux

Carlinux is my own operating system, built on a linux kernel, that's intended to power a computer in a car. The basic problem is this:

My CD player is something like 7 years old, and it finally quit playing CDs some time ago. Right before that event, my kids managed to rip the antenna out of the car. So now I'm stuck without any music on the drive, which is very frustrating, to say the least. Since we're always broke, I need some way to play some music in my car. When you look at the music collection I have on disk, it's pretty obvious that if I could put a PC in my car, I'll have plenty of music.

Thus the idea was born: Carlinux.

It starts as a simple program to play music with a user interface that does not have a visual component, but may have an audio component (for what should be pretty obvious reasons). It then goes on to become...well, it doesn't quite exist yet so it hasn't become anything.

To start, I grabbed a snapshot of Damn Small Linux and threw it on a usb pendrive. It worked fine, I modified inittab to start my own little python app instead of getty, and I could control it. There was a minor problem, though, which is that the existing version of DSL doesn't support sound out of the box! This is a dealbreaker! To solve this problem, I looked at a number of solutions, including getting a 2.6 kernel into DSL, the T2 project, and custom build scripts for some of the other distributions. None of these solutions were satisfactory for reasons I don't feel like discussing.

I wound up deciding that Linux From Scratch had all the answers, by providing a completely customizable linux installation. The problem was that it also resulted in something that wasn't reusable. I could build a complete operating system with it, and customize it to the level needed, but what about when I want to change it later?

I decided to go with Linux From Scratch, but to read the book differently than it was originally intended. I decided that I would write a python program as I read that would do the steps described. I have made significant progress with this approach, and unless I have to change tasks in the next few weeks, I anticipate having the first version of carlinux up and running in my car pretty soon. I also look forward to it!

The planned user interface right now has no feedback from the computer. The computer itself will likely be put under the passenger seat in my car, and I'll use a DC/AC inverter that I already own to provide power from the lighter socket. I managed to pick up a bunch of scrap keyboards a couple of months ago, and I will plug one of them in as the input device for the machine. The thing will load the kernel, initialize hardware drivers, and plunge straight into the carplayer application that I am writing. Carplayer is a python application that uses ncurses to get unbuffered keyboard input, and potentially can provide a visual interface to a variety of devices using ncurses. It'll use programs like mpg321, ogg123, and others to play the actual music. The operating system itself and at least one playlist and the songs will be installed on a usb pendrive, from where it will boot, provided the motherboard I've chosen can remember to do so every time without having to have a certain BIOS flag triggered on boot. I will probably use an extra hard drive to store more music, but since all I have is desktop hard drives, I will probably trash the hard drive in the process. Hence the storage of music on the usb stick to ensure I'll always have music to listen to. The advantage to using a usb stick is that I can plug it into my laptop for OS updates, and also music updates.

The source to this monster is only available via subversion:

svn co https://svn.davefancella.com/carlinux/trunk


Contact me! I want to hear from you. Send your mail to <dave (a) davefancella com>


Home Resume Articles Software Hobbies About