8

Recently I tried to apply for some DevOps Engineering positions, but I got scared about a specific requirement that was present in almost every job description:

Experience with Linux internals and administration.

I am working with Linux servers and applications deployed in Linux/Unix for quite some time and honestly, I have no idea what they meant by "Experience with Linux internals".

My questions are:

  • why should I know Linux internals?
  • where I can find practical use of this?
  • how to learn Linux internals?

Thx

Ricardo Silva
  • 205
  • 2
  • 7
  • 4
    Do a Linux From Scratch project. – ivanivan Jun 07 '19 at 19:23
  • Can you please provide some links for examples where to start? I really think this is a good idea. – Ricardo Silva Jun 07 '19 at 19:27
  • 1
    Linux From Scratch is the name of a specific tutorial that you can search for. It's been around for many years and periodically updated to reflect trends in which components popular distros are using. – StackOverthrow Jun 07 '19 at 19:32
  • 1
    Like @TKK says, it was a HOWTO and now it is a Book. http://www.linuxfromscratch.org I did mine back in '99. I should probably re-do one soon.... – ivanivan Jun 07 '19 at 19:59
  • 1
    Being able to compile stuff from source with make etc. is always handy, as suggested Linux from Scratch is a good place to look for that sort of thing. – OrderAndChaos Jun 07 '19 at 20:52
  • 1
    Information in [this book](http://linux-training.be/linuxsys.pdf) looks good for learning linux system internals, but not the C interface. – nurettin Jun 08 '19 at 11:22

3 Answers3

8

That's a very vague requirement. Because it's DevOps you are referring to, it probably means things similar to these, including but not limited to

  • Knowledge about the kernel run-time tunables (sysctl, /proc, /sys)
  • Familiar with the usual processes running on your typical Linux machine -- systemd, cron, some syslog daemon, ntp...
  • Familiar with typical Linux filesystems
  • Knowledge about how to resize filesystems, observe the machine load, install and configure common programs needed...
  • Ability to debug basic problems by reading logs, using programs like top, vmstat, iostat, sar, strace and so forth

That's just a guess from my side.

Janne Pikkarainen
  • 31,454
  • 4
  • 56
  • 78
  • Thank you @janne-pikkarainen. I also think it was not clear what they are stating, but its present in a very high number of job descriptions. My initial though was something like Kernel... but I don't know how kernel knowledge would help in daily tasks, maybe with some serious issues, but if the frequency of issues that require kernel knowledge is that high for them, definitely I don't want to work for them hahaha – Ricardo Silva Jun 07 '19 at 09:47
  • My impression is that if you really would need a deep kernel knowledge, then that is definitely mentioned, and the job description as well is more like "... your job would be to develop kernel drivers for product X". – Janne Pikkarainen Jun 07 '19 at 11:17
4

"Internals" is a common marketing term often used in job descriptions as they are often written by HR or hiring managers who are non-technical.

You would have to go to the interview to meet the technical staff to find out what the job really requires.

"Linux Internals" usually would mean a high level familiarity with the OS, including knowledge of using and configuring the Kernel, but not programming or developing it.

I would recommend studying for the RHCE or Linux+

Koffee
  • 86
  • 7
  • Thank you very much for your response Koffee. But I wonder if you could be more specific. Try to answer my questions: why? where? and how? Thanks once again mate! – Ricardo Silva Jun 07 '19 at 18:30
  • You need to clarify what you are asking before I can answer more specifically. If you want to know how and where click the links I gave. – Koffee Sep 30 '19 at 15:38
2

why should I know Linux internals?

Understanding how it all works "under the hood" is essential in order to reason about the state of complex systems. It's one thing to just type commands from runbook, it's another to understand what those commands are doing, and be able to intelligently choose from a range of options, all of which might work at some level, the best one for any given situation.

where I can find practical use of this?

The practical use is every day! I mean here is a very simple example, you want to kill a process. You could just blindly type kill of course. But you probably ought to understand what this command really does, how it can be used for more than just killing a process, what a process is likely to do in response to different uses of kill, at what point in its execution will it act on that request, what to do if it seemingly ignores the request, what it means if it becomes a zombie after being killed, I could go on and on...

how to learn Linux internals?

You are fortunate that a lot of this stuff is common to most Unix-like operating systems, and that the fundamentals don't change very quickly, therefore learning it is an investment that will pay off throughout your entire career. Any of the books by W Richard Stevens is timeless knowledge, that's where I started and I still often reach for those books. The Design and Implementation of the FreeBSD Operating System is also very relevant. But there is no substitute for actually doing it.

Gaius
  • 1,461
  • 1
  • 12
  • 19