Designing a Course in Linux System Administration
This has been a tough one. A plethora of books about Linux are available, but I have not found one that I felt would be a great one to use all by itself in a classroom setting. Naturally, the first book I thought about using was Running Linux (Welsh, et. al., O'Reilly), because it tells you how to do just about everything in Linux. However, it doesn't contain too much in terms of open-source and Linux history and philosophy. The last time I ran this course, we used Running Linux in conjunction with The Cathedral and the Bazaar (Raymond, O'Reilly). Again, this a great book on its own, but for students only beginning to get involved in Linux and open source, it can be a little over their heads. These book also is available online (see Resources), so you can pick and choose which parts might be applicable at the time, instead of ordering the entire book.
Last summer I ran a Linux camp for high school students. We used the book Linux for Non-Geeks (Grant, No Starch Press). This book is nice if you are going to work with Linux on your desktop--which was fine for the camp--but it does not contain much about system administration. Transylvania is a liberal arts school, so we tend to ask the question "Why?" a bunch. I want to be able to show the students what is going on from the boot process to shutdown and most everything in between. When a student boots Linux for the first time, a lot of information scrolls across the screen. I want to make sure that students know what it all means or at least most of it. Knowing why and how things are working makes it easier to troubleshoot when they aren't.
These boundaries led me to a couple of books. The first was How Linux Works (Ward, No Starch Press), and the second was Learning Red Hat Enterprise Linux and Fedora (McCarty, O'Reilly). Both books went into some detail on the boot process, from the boot loader, to init, to the login prompt. These were ideas I wanted my students to understand. Most books skip or haze over these concepts, but these two books take some time and depth to explain what was happening. I wound up going with How Linux Works.
This choice obviously varies according to the audience. Being a liberal artsy kind of guy, I wanted a book that is fairly non-technical yet has a lot of essential information. I feel that How Linux Works does that, but I am not knocking any of the other books at all. I have all of them, and I think they all are useful. But, when you are choosing a book for your class, you shouldn't simply pick your favorite. Make sure you pick a book that caters to the material you are going to teach, as well as the level of the class. If you have a room full of upper-class computer science majors, the more technical book might be a better choice. I am running an introductory course this time, though, so I wanted to find a book that was readable, yet covered the material I felt was important. I plan to use Learning Red Hat Enterprise Linux and Fedora as a reference, as well as a few others. Here are some of the other books I considered: Linux Cookbook (Sturtz, No Starch Press), Linux Cookbook (Schroder, O'Reilly), Red Hat Linux Fedora Linux 3 Bible (Negus, Wiley Press), Official Red Hat Linux Administrator's Guide (Red Hat Press) and RHCE Red Hat Certified Linux Study Guide (Jang, McGraw-Hill).
By the way, a book called Linux: The Textbook is available. With a name like that, you might think this is an obvious choice. Unfortunately, it did not cater to what I wanted to do in the course. It talks a good bit about applications and programming, but I am not going to touch on those topics too much. It also is a bit dated; there has not been an update since 2001.
Okay, we have four weeks for our class, five classes per week at two hours per class. In sum, we are looking at forty hours for the class, which is not much time. Here are the topics I am hoping to cover in some kind of approximate order of introduction:
A brief history on the origins of Linux.
Open source vs. closed source
Superuser versus regular user
The directory structure
Basic commands, including cd, ls, mkdir and cp
The boot process
Command line versus GUI
Security, including SSH, packet sniffers, rootkits and logs
Software administration, including source, RPM and apt-get
Applications, including XMMS, The GIMP and OpenOffice.org
Eye candy, including the X Window System and Flash
Compiling the kernel
Can I get all of this done in only 40 hours? Obviously these topics are not set in stone. A lot will depend on the speed of the class. If they can assimilate the knowledge in a reasonable amount of time, we should be able to hit most of these topics. If it goes a little slow, though, I will have to cut a few topics.
- High-Availability Storage with HA-LVM
- DNSMasq, the Pint-Sized Super Dæmon!
- Localhost DNS Cache
- Real-Time Rogue Wireless Access Point Detection with the Raspberry Pi
- Days Between Dates: the Counting
- You're the Boss with UBOS
- The Usability of GNOME
- Linux for Astronomers
- Multitenant Sites
- PostgreSQL, the NoSQL Database