I have been using Ubuntu, mainly as a production system for a very long time. Fedora Core and Mandrake before that. I am a developer, mostly working over networking core - L3/L4. I wish to graduate to a power user. Thought about shifting to Arch Linux, but then it would take a lot of time configuring system.

All you Linux power user, what suggestion you have, for someone who wish to learn Linux internals, more from operations point of view than development?

8 Answers
8

I'll offer a slightly different suggestion. I see many people, once they get comfortable with a particular distribution, fall into a cycle of perpetual changeover. They install a new shiny distro, but they can't get their webcam to work. So they switch. Now the webcam works, but something else doesn't work, and they switch again. (Then they get a job and are restricted to RHEL...). You might get the impression that there's some sort of expert level-up progression of Ubuntu -> Arch -> Gentoo ( -> FreeBSD?), but that's not strictly necessary, and plenty of people get into a trap of learning how to merely use distributions instead of build or change them.

Rather than run around in circles, it pays to really get to know how a distribution that already does most of what you need works. You know Ubuntu well. What I will advocate is to dig into the Ubuntu community and documentation to find answers to the following questions:

What are the core components of a minimal install?

How do you configure installed packages?

Where can you find the corresponding source to an installed binary package?

What is the complete path source code takes to arrive on your computer as a binary?

How do developers build binary packages?

How can you rebuild a package from source?

What steps should be taken to upgrade package source versions?

What are the best practices for building and installing programs?

Where is the documentation for building and configuring programs stored?

Who reviews and approves changes to the distribution itself?

Finding the answers to these questions will be valuable no matter what distribution you decide to investigate. You may even already know the answer to some of these.

In the case of Ubuntu, many of answers will be similar to Debian. For example, best practices in packaging are codified in the Debian Policy Manual.

I've used over 50 distros over the years (since 1999) and have always come back to Arch. We have it running in Production for quite a few apps and it's pretty stable, as long as you pay attention before updating. FreeBSD runs some of our apps as well and that is actually my favorite OS, as it's unbelievably stable and fast. If you recompile everything (make world, etc...), it's exceptionally fast. I agree with this response. Truly understanding why things are set up the way they are, etc... is invaluable.
–
jschorrApr 14 '11 at 3:34

If I could, I would upvote it 1000 times. It makes PERFECT sense.
–
SalilJul 17 '12 at 12:22

In addition to jldugger's answer, if you want to learn how things fit together, I'd recommend working your way through Linux from Scratch, which will teach you how to compile your own Linux install. It's sort of like doing a gentoo install by hand. It's not a distribution to use; it's something to do and then throw away once you've done the work. You can then continue using your Ubuntu install with a new found understanding.

+1 - This, plus jldugger's answer -- Even Gentoo (of which I am a devoted fan) will only teach you Gentoo, not 'Linux'. Given the choice that using Linux provides you, if you want to be a power user, you need to learn about all the various choices -- and each distro is just a particular set of choices.
–
romandasJul 4 '09 at 2:09

Well, FreeBSD won't really help you learn system internals for Linux. I'm partial to Gentoo, and Slackware is another option.

For any option that will give you a really solid understanding of how the system is built, you're going to have to spend a fair bit of time configuring everything for the first time. That's how you will learn. Personally, I learned a lot more about Linux going through the default install to set up a desktop on Gentoo than I had in a couple of years of work with Fedora / CentOS; this was simply because I had to do everything for myself and research the parts to make informed decisions. It doesn't hurt that portage is the best package manager out there IMO.

I would also point you to the docs for the Gentoo Handbook which walks you through a minimal install (can be performed from pretty much any livecd or an existing linux install even) so you set up many of the basic components and end up with a relatively barebones system from which you can start building your desktop.

Debian could be a good distro to look into, since Ubuntu is based on that it would still be fairly familiar. It will end up taking time to configure as well, but it uses apt, so it will be significantly less time than you would spend configuring a more stripped down system. Also, Arch does take time to configure and it handles packages a little differently, but I wouldn't completely brush it aside, as it's a very solid distro with an impressive community and tons of documentation.

I'm in a similar position as you are. I've used Ubuntu/Debian for years and can set up a server in no time. What I like about the Ubuntu/Debian community is the overwhelming amount of information that is available for these systems. But, there is more to Linux than Ubuntu/Debian and even though how much I like Ubuntu/Debian I'm always keen to look to other distros as well.

I was actually looking into Arch the other day myself and to me it comes across as a very solid and well maintained distro. In a way it reminds me of Debian but it's workings and approach are quite different. I might give Arch another, more intensive, try and really get a server up and running with it. Only then you can tell if you can actually work with a system.

On the other hand. Trying out different distros is fun but, it can also be very valuable to be very good with a single distro rather than knowing bits and pieces about many different ones.

You should definitely give Arch Linux a try: it's the only distro that I have ever used that really just works. Pacman+AUR is just so... easy to use. Dependency management also just seems so natural compared to apt-get or something similar. Plus, they strictly adhere to the KISS principle, which is another plus.
–
thebrokencubeJul 8 '09 at 6:50

Maybe check out Slackware. I've been running it for quite some time (have switched to Ubuntu and Mac now). It really helps to learn the real internals of Linux since it is pretty much a vanilla distro with not much on top but a very basic set of Tools.

If you really want to learn linux in general, short of building it entirely with LFS, I'd suggest going with slackware. It's lack of almost any automation and plain vanilla software setups will force you two learn all the standard config files (which in my 12 years of *nix admin experience is the most useful and portable *nix knowledge you can posses) and how to resolve package dependencies.

p.s. If you want slightly more automation, such as package dependency resolution, ArchLinux would be a very similar learning experience. (and you'd have the benefit of bleeding-edge software, in case you use this as your primary desktop)