Linux / Debian Story

I was introduced to Linux in the mid-90's through a membership of one of those book clubs where they ship you a book and hope you forget to ship it back. It was Teach Yourself Linux in 90 days or something like that and it included a RedHat install CD. At the time I had access to an "office" (a computer storage room with a window, a desk, and a couple of network ports) with some spare old computers as a perk of a tech job for a department on campus so I tried installing it.

This was a bit of a process, even with the help of a book. I was thrown head first into video modes, block devices, and BIOS settings. After some effort I was rewarded with a login prompt. (I gave up on the graphical mode on that system.) I had previously had a short term job for a department where I honestly didn't know what the person meant when they asked if I wanted a K shell or a C shell. (I choose C since I had taken a C class, but it didn't really help. My mad VMS shell skills barely saved me.) I noticed the CS department offered a UNIX class so I signed up for that. It was well worth it. I enjoyed the instructor's personality and approach in teaching various tools and how to use them in the UNIX way. I was hooked and the login prompt in the office became a friend as I did my homework in my own "UNIX" lab.

The "C shell" job had introduced me to the idea of dynamic web pages and databases, but I didn't want to learn about Access or anything else in the Microsoft stack. I wanted something I could rpm install on that RedHat system. I checked out books from the library about relational databases and learned about SQL statements and data normalization. I found rpm packages for MySQL and PHP and started building a little computer inventory system, keeping the old computer on all the time as a web server I could access from the different professor's offices.

Later these skills and the C and C++ classes gave me the background to be hired on to the company where I now work. I remember the main questions being about relational databases and SQL once my skill list of C, C++, and MySQL and PHP on RedHat Linux had gotten my the interview. They had two VA Linux servers with some professional versions of RedHat, a Colbalt Cube 2, and a Colbalt RaQ. My UNIX class and experience with my personal server had me well on the way to figuring out how these systems were setup and how to maintain them. I upgraded the VA Linux systems once the support contract ended and even had us subscribe to the first version of RedHat Network. When they took on a more enterprise focus, it didn't seem like our small setup really fit their pricing models. Besides, there had been a fly in the ointment the whole time. Dependencies.

From MySQL to mod_perl, everytime I wanted to install something it went like this. Search for an rpm package of the thing I want to try from the site. Download it. Try installing. Find out I grabbed the package for the wrong release (I quickly learned how to read the name and avoid this) and download the right one. Again try rpm install and get told that a dependency was missing. Before I was stuck at this point. With the help of I would get the package name, download it from and try installing it. Rinse and repeat. I was manually performing what should have been an iterative and recursive algorithm and it was frustrating. Plus the instructions for upgrading systems (we had added a few) went like this: reformat and re-install. What?

So at the end of the RedHat network experience I was ready for something different. Something better. I had read about this completely community managed distribution called Debian that had tools called apt-get and aptitude that would automatically install all the package dependencies when I did apt-get install mysql-server. A lot of the project packagers, Debian Developers, ran their own systems, for years, and they had sorted out upgrades without reformat and re-install. They even had a way to bootstrap from another distribution to Debian or from one architecture to another. RedHat got yum and did Fedora. Other distributions got archive package managers. I've been happily apt-get installing or aptitude browsing and installing and have never looked back. Thank-you Debian.


I am interested in learning more about UserModeLinux. Currently all my systems are Sarge though.


Getting my head around the GNU Build system (AutoTools) is turning out to be more work than I expected. I'm writing up some notes to try and keep things straight and document what seems to work best on DebianSarge.

Upgrade a live RedHat 7.3 system to DebianSarge.

I have a spare 4G partition on /dev/hdc2 so debootstrap should hopefully work out. I am basing my upgrade on the notes by Joe Drew at

I tried going right to Sarge, but it's debootstrap depends on a newer version of glibc: /usr/lib/debootstrap/pkgdetails: /lib/i686/ version `GLIBC_2.3' not found (required by /usr/lib/debootstrap/pkgdetails)=. Searching around I found more than one person suggesting that you use debootstrap for the version it was created and then dist-upgrade. So, as Joe's directions suggest, I bootstrapped to woody.

Differences from Joe Drew's notes:

Other points:

Power state management

Including powering off, halting, booting, and such (OffAndOnAgain) to work better with ?UninterruptiblePowerSupply setups and remote boot via WakeOnLan.

MS Front Page Server Extensions for Linux

?SargeApache2FPSE - Trying to get MS FrontPage 2002 server extensions working with the apache2 in Sarge. I've since decided that I'd rather stick with Apache1.3 for FPSE and mod_perl stuff, so see my notes at ?SargeApacheFPSE.

File systems

DevFAQ - udev, devfs, dev. What is the Debian way things are done? I need to refactor this. The notes about ttys disappearing are pretty dated - though I suppose the problem could happen again some time.

?KernfsFAQ - usbfs, proc(fs), ptyfs, devfs (dual-homed), and other kernel based file systems. Still very much in the research stage. I am expeciting this to be a well formatted FAQ on the in-memory filesystems the kernel auto-manages like proc.

I haven't read enough yet to know if other special/important filesystems like tempfs would require their own FAQ or not


PerlFAQ - I've had lots of questions cross my mind about how to do Perl the right way in Debian, especially when tempted with CPAN. Looking around it appears that others have wondered, or tried re-inventing the wheel.


?BuildYourOwnKernel - A quick mini-HOWTO and links to other pages talking about compiling a kernel on debian using the kernel-package tools. I'm interested in trying out a SELinux kernel.


?SecuringDebian - An overview of areas to consider when trying to make your Debian system more secure with links to related and sub topics like SELinux and MultiUserManagement. Using a 'change root jail' like described in Build a chroot can be good for security and for building packages or testing stuff. Maybe there should be a ?CategorySecurity available for these pages.

iptables - A page on iptables has been started. Expanding the sections on fw tools will be good, as would brief discusions on DROP vs REJECT vs REJECT with-icmp-port-unreachable.

SecuringNFS - Mostly taken from the Security section of the NFS-HOWTO adapted to DebianSarge.

autoconf & automake

I'm trying to get my head around autoconf and automake. While experimenting I made an error in my, I forgot to close the version string and it gives this error:

 NONE:0: /usr/bin/m4: ERROR: EOF in string

So I Googled around and found pages full of people asking about this error. Most of them had no response, a few had lame responses like "update m4" or something. That may have been valid in some cases, but my autoconf & friends were all used to build the rest of the packages on my system so I was sure it wasn't that. It turns out the error really isn't too cryptic. It means I forgot to close a string. It would be nice if it said the line number the string started on. Oh well. It turned out to be the version string in my case. So, if you get that error, make sure your open and close brackets match up.

make-kpkg, distcc and ccache

I was having trouble making make-kpkg use distcc and ccache via the immediatly obvious ways as per the make-kpkg man page so I searched the web and found a lot of other people had asked the same question. I then found an answer:

I tweaked that solution a little to a $HOME/bin "masquerade directory" of ccache, CCACHE_PREFIX="distcc", and the rest of the options mentioned in that article.

 DISTCC_HOSTS="fastest faster localhost"

Be sure to read the distcc and ccache man pages for help with the "masquerade directory" and other options. Once all this is set, use make-kpkg as per the standard suggestions.


Do random edits of kindness and continue to benefit from other's great contributions.