Results 1 to 5 of 5
So I use Ubuntu, and it's just fine. But, I really have no idea what the hell is happening. I have a rather vague understanding of Synaptic, when I see ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
- 02-27-2010 #1
- Join Date
- Dec 2009
A Better Understanding of Linux
So I use Ubuntu, and it's just fine. But, I really have no idea what the hell is happening. I have a rather vague understanding of Synaptic, when I see a tar.gz package I just think "oh, ./compile, make, make install". I have absolutely no idea what is happening, though and I don't like that. I abandoned the Windows bandwagon in order to gain a deeper understanding of how an operating system works and I'm not much further than when I started out.
I've decided to set up a virtual machine and try and install Arch Linux in effort to gain a better understanding...but I'd also like something more theory-focused-- which, of course, means some literature.
So is anyone familiar with a book that isn't the classic "How to switch from Windows to Linux" and that focuses on pragmatism over understanding. I want something that delves deep and is specific--something focused on a true understanding of Linux and how it's tied to the hardware of the system. So if anyone can recommend either an online source or a book that does exactly this, please refer me to it;I want it to be as rudimentary as possible and not rely on any existing knowledge.
Maybe after that I'll try (and probably fail) Linux from Scratch.
P.S. I'd also like to finally learn a programming language...and maybe doing it in parallel with trying to understanding Linux. What would be the best language to do this? I'm going to be a future physics major, once in college, so I thought it may make sense to learn Fortran, especially given that it's so old (and thus not convoluted with all this high-level crap).
- 02-27-2010 #2
if you only learn one programming language, learn C. If you learn 2, add C++.
Why? Well, nearly every program as well as the kernel you use is written in that.
The first thing to understand is the distinction between the kernel, Linux, and the wealth of userspace applications that run on it. Together they form the operating system.
For the kernel, here are two good books, available as free ebooks:
Linux Kernel in a Nutshell
Understanding the Linux Kernel
For the userspace tools, much of it is provided by the GNU project.
On Ubuntu/Debian, you can install the source of every package with
apt-get source NAME
Then you can play around with the code, compile & replace the original version with yours.
- 02-27-2010 #3
I would also recommend reading these: The Art of Unix Programming
Basics of the Unix Philosophy
Whatever other language you learn, I would get comfy with shell scripting. They are ubiquitous on linux systems. For example, the main startup script for Arch Linux, /etc/rc.sysinit, is a BASH script.
Advanced Bash-Scripting Guide
- 02-27-2010 #4
^ what they said ^ with one small qualification
Originally Posted by GNU-Fan
- 02-27-2010 #5
It boils down to how you define "operating system".
For example, Apple calls "Mac OS X" the operating system and the kernel is named "XNU". On the other hand, the free BSDs do not maintain a distinction in names, but still keep kernelspace and userspace code distinguished clearly.
A kernel by itself doesn't operate much. It merely crashes.
It is also interesting to look at Android, which is called an "operating system". Even though at its core ticking is Linux (if with small modifications).