Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am looking for a good source of information on the design and components of Ubuntu. The vast majority of items I have dug up so far have been user guides or programming info. I am looking for information regarding component analysis and overall design. i.e. how does the process scheduler in Ubuntu work and what schedulers are available? Does anyone know where I could find this kind of information? (info on any version would be useful)

Thanks for your consideration.

share|improve this question
up vote 0 down vote accepted

Ubuntu is a collection of well-known open source software. The key pieces you should learn about are:

  • Debian. Ubuntu is "just" a eye-candified and glorified version of Debian, with couple of Ubuntu-specific software pieces and a consistent theme thrown at it. Debian is famous of its package management, so especially learn dpkg (which takes care of single packages) and apt (which for example takes care of dependencies of those packages: "Hey, in order to install foo you also need bar. I will install it for you!")

  • Debian/Ubuntu are typical Linux distributions using GNU user-land components and Linux kernel. Linux kernel is the thing for you to take a look at if you're interested about process / I/O schedulers, device drivers and stuff like that. Kernel newbies might or might not ease-in your way to kernel. You also should download the latest kernel sources, extract them and read the docs under its Documentation and of course, browse the code. Compiling your own kernel is a magnificent way to learn about kernel, since you'll get to see and select schedulers, drivers, security models and stuff like that.

  • Other software packages are collected around the world. It wouldn't make sense for Ubuntu (or any other distribution) to document those - that would be duplicate work. It's better to tell user to take a look at the actual project. If you need more information about the default desktop environment in Ubuntu, you should learn about Gnome.

You didn't specify what kind of things you'd like to learn. About desktop environments? Server-side things? Generals about how operating system works?

While typing this I just realized it might be a good idea how I learnt about Linux back in 90's. So here goes.

  • First I learned the shell basics. As I had Amiga background, I was already aware about things like process list and scheduler (I used Executive in my Amiga, which allowed very accurate process priority fine-tuning with various scheduler classes and so on). So in Linux I combed through the process list and if there was something I wanted to know more, I tried man interestingcommandname and tried to see if there's additional documents about the program under /usr/share/doc or so. When I learned Linux, there was no Google (or it was just a baby), newsgroups and source code were the best place to go. :-)

  • For fun I spent wayyyyyyy too much time in browsing around directories like /bin, /usr/bin, /sbin and /usr/sbin. I tried all kind of commands and read their man pages. Soon I discovered this truly wonderful thing called pipes and started to pipe one command to another and yet another, just to see what happens. That made me acknowledge the infinite power of shell, and soon Perl.

  • Sooner or later I discovered /proc and sysctl. I was at awe. Wow, so many knobs to tune! That, of course, lead to yet another thing: I decided to compile my own kernel. Boy, I was proud when my self-compiled kernel managed to boot! Probably everything was misconfigured, but that didn't matter -- back then things like hotplug were not as common as nowadays, my configuration needs were very static.

  • Debian was the first distribution I ever installed. That was actually installed on my beefy Amiga 1200 with 68060 processor and whatnot. Later, on my first PC, I installed Red Hat. Back then it was quite a different beast. Today the most challenging thing while installing Red Hat is to figure out your subscription key. Back in 90's you needed to know things like IRQ of your network card... anyway, at that point I became aware about the differences between Debian and Red Hat and realized that there's not a one Linux distribution, but many, and they are not all the same, even if they are similar. So, if you truly want to learn Linux, I suggest you not only to learn Ubuntu, but distro-hop between couple of distros and see how things can be different.

For bonus points, install Gentoo and truly learn about the internals of Linux distributions. I can guarantee you that if you install and use Gentoo, you'll soon understand much, much more about Ubuntu, too. Things like disk partitioning, PAM, nss, popular libraries and stuff like that will become clear to you, if you pay attention.

(If some "Gentoo users are ricers" fellas are reading this: yes, many of them are. No, staring at gcc output does not make you wiser or your computer faster. But nevertheless installing and using Gentoo is a great learning experience and USE flags and easy ebuild patching are something I miss while using other distributions)

share|improve this answer
Thank you so much. My ignorance surrounding the composition of Linux distributions was probably my biggest hurdle to getting started. Focusing my attention to the Linux kernel has turned up a lot of useful info. I think I will follow your example and try poking through some man pages as well. – Cactusman Nov 5 '10 at 6:02
:) Glad to hear I was able to help you. – Janne Pikkarainen Nov 5 '10 at 7:08

The process scheduler is part of the Linux kernel rather than something contributed to the GNU/Linux operating system by the Ubuntu distribution. A Google search of Linux kernel reveals a number of on-line sources of information on the kernel in general and a search of Linux scheduler turns up a number of articles on the scheduler itself.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .