Linux "kernel, device, display, window sys, app" stack/relationship diagram
Linux - GeneralThis Linux forum is for general Linux questions and discussion.
If it is Linux Related and doesn't seem to fit in any other forum then this is the place.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Linux "kernel, device, display, window sys, app" stack/relationship diagram
So, does anyone out there REALLY know how Linux works? It seems to me that even a lot of Gentoo and "Linux From Scratch" users have merely got a "follow the directions" understanding of how Linux works. I'd love to find, and trust me I have searched, a diagram that explains the stack of services/daemons/applications that make up the Linux desktop.
I have been a *nix server guy since 1999. Now I've attempted to bring Linux into my home and workstation, but find that there seems to be a lot of "Black Magick" under the hood. I want to know how things work, so that when I encounter a problem I can have an idea of where to start looking for solutions. I'm tired of being the guy who, anytime something goes wrong, immediately begins Googling for every buzz-word he can think of, only to find that 6 hours later he is no closer to the answer and has to go to his job having had no sleep.
However, this diagram is severely lacking in detail. A concise diagram should include:
Kernel
Modules
Drivers
Devices
File Systems
Swap File
Boot Loader
Run Levels
Frame Buffer
Boot Splash
Daemons
Console
Virtual Terminals
Shells
Environment Variables
Command Line Interface
Command Line Applications
Windowing System
X11
X.org
XFree86
Display Manager
Desktop Environment
Window Manager
File Manager
GUI Applications
Okay, I realize some of those things may be a little too detailed to be on any system overview diagram in existence, but once I started I just went with the flow.
I think something with most of this should exist.
If it doesn't exist, I will make it. Please pick a portion that you have a strong understanding of and give a breakdown in text. I will make the diagram. I will manage the project, make a clean vector file, host it, share it, keep it up to date, whatever. I just think that we'd see a lot less stupid questions if there was a way to learn this without beating your head against it for 12 years.
Well, one first step for getting a good idea of how Linux works under the hood is to install Slackware. Slackware is designed to let you have full control over how things are installed, without making it difficult. As far as I know, no significant arbitrary decisions are made for you in the installation process.
Then browse through the /etc directory (especially, but not limited to, the /etc/rc.d directory). Issue every man command suggested by the files that exist there.
I have an O'Reilly book on my shelf, Understanding the Linux Kernel, which I intend to read some day. Its table of contents looks like the book will answer many of your questions. It looks like you can read the kernel 2.6 version here:
What you want to know: boot sequence (takes care of: boot loader, modules/drivers (same thing), devices (depends what you are talking about, either way, its covered, device drivers in the kernel export devices as files, udev (located outside of Linux) creates these files in /dev for users to use), shells, environment variables (a aspect of shells), console, virtual terminals, run levels, and CLI (its the same as the shell, as the shell implements the CLI!!!! (on top of a terminal/virtual terminal/console/whatever they are calling it these days), boot splash.
GUI system: takes care of framebuffer (a graphics display located in Linux), X windows (the GUI system (windowing system) of almost all *nixes, (Linux can use its framebuffer as a "alternative" (as in: no applications!!!)) (X windows is implement by: XFree86, Xorg, X11 is the 11'th version of the X standard), window manager (X dosent manage windows for you, a 3rd party program does that, the window manager is this program), file manager (a GUI application to allow you to manage your filesystem (in CLI, the shell and programs work close enough with files that using a file manager there is almost pointless (but some do exist), in GUI, you dont have that luxury, so you need a file manager), display manager (its part of X, to allow you to use a to login to a display), desktop environment (a collection of libraries, daemons, and programs designed to implement a environment in X for the desktop (without a DE, all you have is a loose nit collection of GUI toolkits, programs, etc, and very little standards, each DE defines its own standard set of libraries, and so the resulting desktop feels integrated and consistent (as possible, anyways)).
sysadmin/basic stuff stuff: filesystems (really, you must know what this means), swap file (should be: swap space, space on the harddrive used for swap (named from the verb swap, as in, to swap memory located in the RAM, with that on the harddrive, thereby increasing the amount of memory available (called virtual memory in Windows i believe)), kernel/device drivers/modules/whatever, basic system config files, system logger, daemons (programs that provide services, but are not used directly from the command line, such as the system logger, it logs events, but its pointless to run it from the command line. Or Cron, used to schedule tasks, if tasks must be automatically started at a given time, what good would a program that wasent a daemon be? (all daemons disconnect from the terminal, but remain active, essentially, allowing the user to do whatever).
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.