My question is: is there a document (or collection of documents), that describes (in sufficient detail to work with it) the design decisions that are specific for Ubuntu and thus distinguish Ubuntu from other distros / distro families (like CentOS, Debian, Red Hat etc.) ?

That is, I'm not asking for a technical introduction to Linux in general intended for a Linux novice, but for a technical description of Ubuntu in specific aimed at the experienced user / admin.

Background: Having worked and lived (as a non-IT-person, but hobbyist programmer) with Linux systems for some 20 years and with Ubuntu since 12.04, I feel pretty confident with looking "under the hood" of the system and making adjustments that may not be possible from the GUI. Also, every now and then I'm inclined to try to find the reason for some unexpected behaviour or to resolve a problem myself for which I cannot find a solution on the web.

Doing this, I find it sometimes very difficult to figure out how things work in the first place. As an example (only), with my relatively fresh 18.04 install, I notice that the user switching fails every now and then. Googling, I have found out that this apparently coincides with a lightdm crash which is "persistent", i. e. restarting the lightdm service fails until I reboot. Now I'm stuck with understanding why this fails.

Here I'd like to have some kind of documentation that describes the system "under the hood", e.g. what software components are used (in which versions), how system startup works, how services are started, what is configured where, and so on. The "official Ubuntu documentation" for the desktop apparently is aimed at the desktop user only, not at somebody with my ambitions. Information Google gives me, in contrast, is very diverse, often contradictory, often outdated, and so not very reliable. This why I'm looking for a reliable single point of information about my system.

Thanks for any help!

closed as too broad by waltinator, karel, pomsky, N0rbert, K7AAY Oct 10 '18 at 20:55

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.


For desktop you can see an HTML page: https://help.ubuntu.com/lts/ubuntu-help/index.html There are similar resources for 18.04 server: https://help.ubuntu.com/lts/serverguide/index.html

It's early days for 18.04 so many users are discovering it quirks and as time goes by the resolution to issues will become clearer.

Link only answers aren't the norm or encouraged on Ask Ubuntu but generally, most users I guess find their way around by regularly catching up on Ask Ubuntu and asking questions when Google or other resources fail to deliver. However, as these links are to official Ubuntu help site, they should remain sustainable.

  • Both documents are what I refer to as "official Ubuntu documentation". While the server version is definitely more technical than the desktop version, both explain how to use a system (application level), but not so much (at least I don't see it) how the system itself works. Currently I'm asking myself questions like "Am I running Xorg (assumed from process list) or Wayland (hinted at by Google results)? Which process starts the display server (presumably systemd, but where configured)?" None of this is covered in the linked docs. – MHvM Sep 7 '18 at 20:05
  • @MHvM If you have specific questions, then ask those specific questions separately. – pomsky Oct 2 '18 at 7:10

It is probably not a canonical answer (pun intended), but if you want to learn how different components cooperate under the hood, the best way would be to manually assemble yourself the system. I know what I'm talking about because that's how I learned GNU/Linux long ago.

There are "LEGO distros", they tend to have amazing documentation, lots of newbies guides, and basically will guide you through every step. You'll only need to have enthusiasm, and to ask yourself questions "why do I need to make that step? What happens if I skip it?". Don't be shy to experiment.

A shallow list of some of such LEGO distros, from easiest to hardest:

  1. Archlinux: binary packages, but offers ability to build from source code if you really want it.
  2. Gentoo: everything being built from source code. It might be hard distro, though it's the one I started learning GNU/Linux from.
  3. Linux From Scratch: absolutely crazy project that doesn't even provide you with package manager. You really have to assemble everything from scratch. In my opinion whilst the LFS book is definitely worthy reading, it contains so many fun facts, but I wouldn't recommend going from theory to practice.
  • I understand this is certainly the best way to learn Linux as a whole. That would be fun, had I only way more spare time than I do. For now, I'm happy to use a "stock" Ubuntu system, and only wish to understand it to a deeper level. I suspect looking at other distros wouldn't tell me so terribly much about how things are done in Ubuntu. Am I wrong? – MHvM Sep 7 '18 at 20:08
  • @MHvM somewhat. The only difference between GNU/Linux distros is package manager, and configuration idiosyncrasies (like /usr/bin/ being an actual directory vs being a symlink to /bin/). If you know well one distro, you can tell you know all of them, excluding package management part. – Hi-Angel Sep 7 '18 at 20:23
  • @MHvM you need to understand that a GNU/Linux distro is basically a Linux kernel and a bunch of software packages slapped on top of it. Those software packages are developed independent of any distro (often they're even cross-platform, meaning you can run them on non-Linux system too). This means that in theory you can even transform one distro to another. So, to "learn Ubuntu under the hood" you need to simply learn why those software packages are used, and how do they work. – Hi-Angel Sep 7 '18 at 20:41
  • Having worked with a range of different Linux distros (mostly Debian-based, though my first one was SuSe) I understand the difference between kernel and software packages, as well as the difference between OS and application software. I'm specifically looking for resources that tell me in the first place which software is used on Ubuntu system-level, in addition to "why those software packages are used, and how they work". See eg. my remark about Xorg (apparently used in 18.04) vs. Wayland (default in 17.10, I presume). – MHvM Sep 7 '18 at 20:53
  • @MHvM "am I running Xorg or Wayland" — you can tell it e.g. by checking whether "Xorg" process is present. Both Xorg or Wayland-enabled compositors are developed independently of particular distro. "Which process starts display server" — you probably want this article. Again, independent of particular distro. – Hi-Angel Sep 7 '18 at 21:03

Not the answer you're looking for? Browse other questions tagged or ask your own question.