What is a good book about why linux has been designed the way it has? Such as why are HDs in /dev/sda, why /dev/ null, zero, urandom and such are files (or pipes). Why do we have loopback device (I see 0-7 and control on my linux distro), why we have bin, sbin, lib and usr (and the difference between them). Everything about /proc. What is inside of the kernel and what isn't? From my memory init.d isn't part of the kernel and I was unsure how an program would be executed and know when to run these. What are block and character device represented as files? and why couldn't a character device be a '1 byte' (or int) block device?

I have no idea why everything is a file (including sockets) and what happens when I write cat /proc/cpuinfo. Is that a named pipe to the OS which reads the CPU info on the fly and generate that text each time I call it?

closed as too broad by Braiam, casey, slm, terdon, strugee Mar 27 '14 at 2: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.


Here are two good online resources that throws light on design of Unix-like OSes:

The Design and Implementation of the 4.4BSD Operating System

The Art of Unix Programming

Understanding the linux kernel and Linux Kernel Development are good books to understand the kernel internals.

The classic UNIX Programming Environment is a great book that describes design philosophies of UNIX systems along with their practical usage.

This 7-part frequently asked questions is also a useful resource to understand Unix in general.

  • This looks great. Do you recommend reading them in a specific order? which should be the first 2 or 3 I read? (I think I may read all of them). I see history of in your second link so I suspect I should read the first two first (I guess the order you linked) maybe the 7 part FAQ then the two kernel links then finally the environment? Maybe its not a great idea to go in that order but that sounds like a good order to me at this moment. Maybe i'll do the 7 part FAQ first since faqs are normally short? – user4069 Mar 27 '14 at 2:32
  • I'd suggest start with the classic, then 7 part FAQ, then the Art of UNIX Programming. – mkc Mar 27 '14 at 2:35