Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How to learn about Linux system internals?
5 points by rory_isAdonk 3 days ago | hide | past | favorite | 9 comments
Coming from reading a SRE job posting at Google i saw:

"Experience with algorithms and data structures and/or Unix/Linux systems internals (e.g., filesystems, system calls) and administration."

I have a good grasp of algorithms, at least to the extent that I could further my knowledge in this domain alone.

How would you suggest learning about Unix/Linux systems internals?

I was thinking of setting up a linux server and managing it, any suggestions for good places to start in regards to practical things i could do with it which would expose me to the internals?

Although I personally haven’t got any experience with linux internals (insofar not needed as a user) I’d think https://www.kernel.org/doc/html/latest/ might be a good place to start. You might want to find out how much actually is about system internals instead of administration. I think system internals are a much broader subject than what is needed to be a very good linux administrator.

Thanks! I'll go dig here.

Either they mean something you can learn by reading "Advanced Programming in the Unix Environment" or something you can learn by reading "Linux Device Drivers".

In the first case, I'd suggest trying to write a daemon that opens a socket and/or a fifo or pipe, sends some data, forks, execs, reacts to SIGUSR2, gets started by systemd, etc.

In the second case, implement a /dev/reversestring or whatever. Perhaps make your daemon use it :).


To me, the place to start is Bach's Design of the Unix Operating System because provides the right context for Advanced Programming in the Unix Environment. Advanced Programming sort of presumes familiarity with its concepts and reading it first is probably faster than not reading it first. YMMV.

Of course there are implementation differences between Unix and Linux, but I wouldn't be surprised if Torvaldes wasn't reading Bach when he started.

You may be right. I didn't read the book you mention, and when I used APUE I was already very familiar with the Unix world, so I used it mostly as a reference, a way to learn what was not exactly in the man pages.

It is very well written. A technical book. Not a textbook. Well written in the way Bell Labs could produce to bring its cadre of technical staff up to speed...written to create competence not differentiate for the purpose of assigning grades.

You can probably find a pdf online or a used copy from a bookseller.

I have never applied at Google so I don't know what they are looking for exactly, however I read "Linux Kernel Development" by Robert Love a few years ago and I really enjoyed it. It might be the best technical book I have ever read now that I think about it.

This might help, its a bit overkill maybe, but it will give you great knowledge about linux internals http://www.oldlinux.org/download/ECLK-5.0-WithCover.pdf

I would start with courseworks for rhcsa/rhce. Every distro does some stuff different but the redhat certs cover all the basics and more.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact