Top products from r/linux

We found 115 product mentions on r/linux. We ranked the 645 resulting products by number of redditors who mentioned them. Here are the top 20.

Next page

Top comments that mention products on r/linux:

u/coned88 · 1 pointr/linux

While being a self taught sys admin is great, learning the internals of how things work can really extend your knowledge beyond what you may have considered possible. This starts to get more into the CS portion of things, but who cares. It's still great stuff to know, and if you know this you will really be set apart. Im not sure if it will help you directly as a sys admin, but may quench your thirst. Im both a programmer and unix admin, so I tend to like both. I own or have owned most of these and enjoy them greatly. You may also consider renting them or just downloading them. I can say that knowing how thing operate internally is great, it fills in a lot of holes.

OS Internals

While you obviously are successful at the running and maintaining of unix like systems. How much do you know about their internal functions? While reading source code is the best method, some great books will save you many hours of time and will be a bit more enjoyable. These books are Amazing
The Design and Implementation of the FreeBSD Operating System

Linux Kernel Development
Advanced Programming in the UNIX Environment


Learning the actual function of networking at the code level is really interesting. Theres a whole other world below implementation. You likely know a lot of this.
Computer Networks

TCP/IP Illustrated, Vol. 1: The Protocols

Unix Network Programming, Volume 1: The Sockets Networking API

Compilers/Low Level computer Function

Knowing how a computer actually works, from electricity, to EE principles , through assembly to compilers may also interest you.
Code: The Hidden Language of Computer Hardware and Software

Computer Systems: A Programmer's Perspective

Compilers: Principles, Techniques, and Tools

u/exacube · 2 pointsr/linux

First, you need to learn C and be very comfortable with it -- this happens when you work on a large project with multiple source files, especially when you start one from scratch yourself.

Second, you need to learn about operating system/kernel fundamentals -- C is just a tool/language. You need to know a lot about what you're developing! So get a book on OS -- or , or reading lecture notes from your school (preferrably from a very good Computer Science school). Here's one:

Third, start exploring the kernel source code and try and figure what things are and how things work. Subscribe to linux mailing lists, read more articles on how Linux internals work, etc.

The most important step here is step number 2! It will require the most work and the most effort.

It'll be challenging and fun, and will take quite a lot of time :) Be persistant and good luck!

u/AlienBloodMusic · 3 pointsr/linux

Download and install CentOS. It's the built-from-source version of RedHat Enterprise Linux. They are identical for all intents and purposes. Almost every business that's running linux is running either Cent or RHEL.

Use it as your primary OS, but that's not going to get you the experience you need to be a sysadmin. Use the RHCE Book to learn how to set up an apache server & other sysadmin tasks. Seriously, read the book & do the labs, you'll learn a lot about linux. (If you've got the $800 to spare, you can take the certification exam but IMHO the certifications don't get you much.)

Once you've got that down, check out the BASH Programming guide on tldp for shell scripting, and then maybe MIT's Introduction To Computer Science and Programming - completely free online course.

That ought to be a pretty good start. Good Luck!

u/cheerupcharlie · 2 pointsr/linux

I enjoyed Just For Fun - The Story of an Accidental Revolutionary.

There is an audio-book version available.


Unsure of the audio-book availability but these are recommended as well:

  • The Cathedral and the Bazaar (Eric S Raymond)
  • In The Beginning...was the command line (Neal Stephenson)
  • Free Software, Free Society (Richard Stallman)
  • Hackers: Heroes of the Computer Revolution (Steven Levy)

    EDIT : added some more books
u/mcur · 14 pointsr/linux

You might have some better luck if you go top down. Start out with an abstracted view of reality as provided by the computer, and then peel off the layers of complexity like an onion.

I would recommend a "bare metal" approach to programming to start, so C is a logical choice. I would recommend Zed Shaw's intro to C:

I would proceed to learning about programming languages, to see how a compiler transforms code to machine instructions. For that, the classical text is the dragon book:

After that, you can proceed to operating systems, to see how many programs and pieces of hardware are managed on a single computer. For that, the classical text is the dinosaur book: Alternatively, Tannenbaum has a good one as well, which uses its own operating system (Minix) as a learning tool:

Beyond this, you get to go straight to the implementation details of architecture. Hennessy has one of the best books in this area:

Edit: Got the wrong Hennessy/Patterson book...

u/testeddoughnut · 1 pointr/linux

Trying to address all your questions.

  1. There are many different ways to learn, it kind of depends on how deep you wanna go. If you're just wanting to get your feet wet, put Ubuntu or CentOS on a VM (something like virtualbox) and fuck around with it. Try to follow guides on setting up a Wordpress or deploying some other software.

    For more in-depth, study like you're planning on taking the RHCSA/RHCE exam. The objectives (RHCSA/RHCE) do a good job of covering the fundamentals. The book by Michael Jang is an excellent resource for this.

    If you want a "fuck you, eat linux" type approach, I'd recommend doing a Gentoo or Arch install. This won't teach you everything, but you will learn about some of the lower level parts of the OS that make it tick. I'd still recommend this (especially the Gentoo install) after you get the fundamentals down.

  2. Windows and Linux tend to have their roles, but I find Linux tends to be more flexible. Linux does have equivalents to some of the things you list off, for example I have a domain setup in my house using FreeIPA, but in the enterprise world the Microsoft equivalents are still king. Linux is just a tool, so it really depends on what you're trying to do.

  3. Generally by the time you get to a senior level you'll have specialized into some niche or another, at least in my experience. The fleet that I help to manage at work has some Windows components, but I only work on the Linux parts. It really depends.

    There are definitely some distros that are more "enterprise" than others. Generally I see mostly these deployed for enterprise use:

  • RHEL(Red Hat Enterprise Linux)/CentOS
  • Ubuntu (LTS versions)
  • Debian
  • SUSE (much rarer than the previously mentioned)

    Other distros like Mint, Fedora, Gentoo, Arch, etc. are only really used for desktops unless you really hate yourself or your admins. I have seen some Gentoo or Arch servers out in the wild before that customers have deployed.. but it's rare. Generally the big three (RHEL/CentOS, Ubuntu and Debian) are what are in demand skill-wise. There are some specialized distros used in enterprise that aren't as common (Scientific Linux, CoreOS, etc).

    CentOS is essentially RHEL with all the proprietary bits ripped out (some other small differences). I was able to study for my RHCE with CentOS without issue, they're that similar. You will run into trouble if you start going for some of the more specialized RHEL certs using CentOS.

  1. Networking is a good skill to know. When I was first starting off I got my RHCE and CCNA since I didn't know which direction I wanted to specialize in. I ended up focusing on Linux, but my slightly-more-than-basic knowledge of networking has been a huge help. Hardware (other than the basics of switch vs managed switch vs router) isn't as important as networking concepts (how subnetting works, DNS fundamentals, VLANs and what they're used for, etc).

    I hope this helps!
u/[deleted] · 1 pointr/linux

FYI, Linux in a Nutshell is a great book, but a large portion of it (1/4) is essentially man pages. I still recommend the book for those interested in learning how to use Linux, but for those interested in how it works, I prefered: Understanding the Linux Kernel. This book details much more of the inner workings of Linux. It is not the caliber of a "in a Nutshell" book, however, and may be a very intellectually challenging read for some. I found myself understanding chapters very quickly, but needing to reread them because of how much information there is to retain.

u/coolhand1 · 13 pointsr/linux

1.) We always post open positions on but if your in the market send me a pm and we can discuss this further.

2.) You don't need to be certified however it is a requirement that before you start supporting customers that you have your RHCE. We have some great instructors here and the one who taught me is Chris Negus author of the Linux Bible

3.) Didn't eat breakfast but the new cafeteria is amazing!!

u/zyrkan · 7 pointsr/linux

As you can imagine, the kernel is a gigantic project, so it's hard to jump in and understand how things are working. If this is your first exposure to any operating system stuff, I would suggest backing up and learning a bit more of the basics. You'll find information like that under the terms "computer architecture" and "computer organization". Modern Operating Systems by Tanenbaum is a classic read to get started.

If you really want to dig at the kernel code, I'd recommend Robert Love's Linux Kernel Development. It gets into the details of process scheduling, interrupts, memory management, file systems, etc. and looks at the code. But I'd warn you that it's pretty complex and can be quite slow to learn.

There are a few free linux kernel books online such as Advanced Linux Programming and Linux Device Drivers. Even if some of the information is outdated, you'll get a lot of information about how the kernel works in general from these resources.

Hope that helps, and enjoy.

u/the_gnarts · 1 pointr/linux

> However, I've never done any development work for it. At my company, we will start to have some Linux work for our embedded processors. Before that work comes along, I'd like to start getting an appreciation for it and getting myself a good grounding in it.

Is it really going to be actual kernel work like writing drivers?
Most embedded platforms are vendor supported anyways
so there’s little to do kernel side unless your company has
very specific requirements.

If instead you’re going to do low-level userspace things,
the best resources for learning kernel APIs are the [Kerrisk]
( as a reference
and a LWN subscription to stay up to date.

u/CannedCorn · 5 pointsr/linux

"Linux Kernel Development 3rd Edition" is fairly modern (2010) and really good:

Also... not kernel internals specific but an AMAZING book about programing against the linux kernel is "The Linux Programming Interface":

It was written by the guy who wrote a lot of the linux man pages and is one of the best books about how linux works from a programming interface perspective that I've ever read.

u/ghostrider176 · 1 pointr/linux

>Any good books you would recommend?

I never really read any technical books on Linux. Most of my training on Linux has come from working for various vendors and institutions as well as a fair bit of hands on experience (both on the job and off in my lab at home).

I've seen the UNIX and Linux System Administration Handbook mentioned in this subreddit a few times so I assume it's gotta be decent. I remember reading the sample of it somewhere and confirming that what was inside was exactly what I would expect from such a book.

If you're looking for online help then I can help you a bit more with that. First off, the Linux From Scratch project is really time consuming, tedious, and probably over your head (it's still over mine, don't get discouraged). I went through the project once and didn't even come close to finishing it. Towards the end of my attempt I was really just skipping large sections of text and going through the motions of compiling things. However, I still learned some good points about the inner workings of a GNU/Linux system and recommend the project to all people who want an advanced understanding of it; Even if you abandon your lab of it or fail it miserably, I'd wager you'd still walk away with something of value.

The Arch Linux Wiki, or "ArchWiki" as it's referred to on their website, is a surprisingly informative community information repository. It has its faults: You won't find everything you're looking for, some tutorials are little more than hastily pasted step by step guides with absolutely no explanation, and as expected it's written for the Arch Linux distribution. However the utilities and programs Arch uses are the same that every other Linux distribution uses and, much like the Linux From Scratch project, visiting and poking around a bit my steer you on the way to a stronger understanding.

Finally, The Linux Documentation Project is a good bookmark to have (though I don't go there much any more).

u/Herdo · 2 pointsr/linux

I just bought "How Linux Works" published by no starch press.

Excellent so far, and while I was familiar with all the topics in the book to begin with, I still learn something new every chapter. It's listed as an "Intermediate" level book, but there is a wide range of topics from absolute beginner to some more advanced stuff, all with easy to understand explanations. The topics build on themselves nicely, so you aren't just dropped into a chapter having no idea what the author is talking about.

Supposedly most of the no starch press books are great. /u/C0rn3j mentioned "The Linux Command Line" as well.

u/theevilsharpie · 0 pointsr/linux

> I want to learn how linux (and computers) work.

If you want to learn how Linux (and computers) work, take a course on operating system design and development. It's offered at any university that has a respectable computer science program, and you can probably find online courses that teach it for free. If you're more of a self-starter, grab a textbook and work your way through it. A book on the internal workings of Linux in particular might also be helpful, but IMO the development of the Linux kernel is too rapid for a book to provide a useful up-to-date reference.

If you want to learn Linux as a day-to-day user (which is what I suspect you're looking for), pick Ubuntu or one of its derivatives. They are easy to get up and running, while still allowing you to "spread your wings" when you're ready.

u/SweatyAcademic · 1 pointr/linux

>shell prompt

If you have money, this one is a good option

These two are good and available for free, I suggest you start with them.

> administration

This one is the best.

u/perfecthashbrowns · 8 pointsr/linux

This has been one of my favorite books:

And I read through this entire book:

They are both great!

Edit: I can't type much because my internet is going out regularly at the moment, otherwise I'd love to elaborate further.

u/kramer314 · 3 pointsr/linux is super high quality (and free! although if you have the money I think it's well worth donating and / or purchasing a hard copy)

I also like and

u/ggpigg · 3 pointsr/linux

Yes, Michael Jang's book - RHCSA/RHCE, this book is not cheap BUT it may be one of the best I have ever used. I've almost finished this and am hoping to try for my red hat cert in December. The book is literally step by step.

u/peppajiggapuff · 3 pointsr/linux

I find reading books is the best way to expand ones horizon on a certain topic. UNIX and Linux System Administration Handbook should be an excellent read for you.

u/enroxorz · 6 pointsr/linux

No, and I'll tell you why. Arch isn't a horrid distro, I just don't like the Arch philosophy or mentality that a lot of the newbies have. People use Arch for the wrong reasons, mainly "to learn Linux", which kinds grinds my gears. Hell, I just had this talk with someone today so it's kinda fresh in my mind.

  • Some people think you get a "performance" gain from switching. The only distro I know that you can get that claim is Gentoo, and it's minimal compared to the hassles inherited in getting the system up and running (last time I touched Gentoo was 2005).

  • Rolling Release sounds nice until a tool that you have been using for ages goes away (ifconfig, route). I want stability and the choice to not upgrade to the latest and greatest, especially on teh server side (sarge has been keeping one of my sites up and running for ages and never had an issue)

  • "Learning Linux" is misleading. I hear this a lot, and it's malarkey. Any distro can "teach you linux". Just because your installation is a hassle doesn't mean you are a good teacher. If you want to learn how a distro works, Linux From Scratch is a way better project. Other than that Learning Linux, for the average user, should be centralized to knowing your system in a high level AND understanding your CLI and Shell

    Also, if you want to learn OS concepts, read Operating Systems Concept by Silberschatz or Modern Operating Systems by Tanenbaum, both better sources of learning what an OS does than Arch.

    My final word before I get downvoted to oblivion, just because something is harder than it should be doesn't mean it's a good educational tool. If that were true, you'd be using a BSD derivative over Arch Linux.
u/ccondon · 2 pointsr/linux

Well yes. It has a lot of features, and it was O(1). The scheduler has to be able to support nicety, among other things that I can't think of at the moment. For a good introduction, see this book by Robert Love. I used the second edition. The third edition talks about the newer, O(log n) scheduler. The O(1) scheduler performs better for servers with many tasks and little user interaction, whereas the newer one is apparently much better at minimizing latency for applications with a lot of user interaction, as a desktop would have.

Granted, a round-robin scheduler is O(1), and certainly much faster than the O(1) linux scheduler, but it lacks all sorts of important behavior.

u/idontchooseanid · 1 pointr/linux

Do you want to know which parts make an OS or how it's actually run in runtime. Former, is easy just install Arch, Gentoo or Linux From Scratch. Latter is a lot complicated nowadays but is a great start or there's if you want to go deep.

If you do both and combine the knowledge, your beard will grow 100x.

Source: I did but I am hairless 0*100 = 0 :/.

u/rpetre · 2 pointsr/linux

Read a lot. Man pages, guides, examples, source code. Experiment. True, with only one machine you probably won't get to get exposed to, say, networking stuff (you can emulate complex networks using VMs, but you still need to know a lot to set up such an environment). Still, there's a lot of things to learn about the system just by mucking with it. Having a machine you can reinstall whenever you want helps a lot, get an old PC or laptop and use it as a test bed if you don't have a spare server, making it a webserver today, a mailserver tomorrow, a firewall the next day and so on.

Take any problem as a challenge to dig deeper and understand why. Granted, in the Google age, the solution to most problems are just a search and a copy-paste away, but getting to understand what happens with the machine and what's the most elegant way to control it takes a lot of research and practice and failures. Learning "why" is way more important than learning "how", since tools evolve and change and the manuals are always close, but knowing what to look for is a skill that takes time to develop.

Speaking of failures, try to come up with as many ways as you can to make things fail and try to find solutions to most of them. Good sysadmins understand failure and actively explore ways to prevent or handle it.

If you don't mind reading thick books, I heartily recommend Evi Nemeth's Linux Administration Handbook (pretty hands-on) and Tom Limoncelli's Practice of System and Network Administration (about the mentality and processes and non-technical stuff). You might find the latter a bit boring, since it has zero scripts and commands in it, but sooner or later in your career you'll love it.

I'll stop because I ranted too much already, but as a final word, keep in mind that SA is primarily about maintaining infrastructure that helps people, so don't get too caught up by the tech to forget that service availability comes first, shiny toys second ;)

u/flexmyclock · 6 pointsr/linux

I've heard good things about "The Linux Programming Interface"

"Modern Operating Systems" like others suggested is also fantastic.

u/chadillac83 · 5 pointsr/linux

Read this, found it amazingly useful and packed full of knowledge, I recommend this book even to Linux noobs that are trying to get a better feel of the system for desktop use... once they have the basics down that is.

u/paradigmarson · 2 pointsr/linux

You'll need a good book and a good community (university? Linux User Group in your area?).

Don't try to learn from crappy outdated tutorials. Don't try to learn it all on your own. Choose a distribution carefully and be loyal to it for a while -- no novelty-seeking, optimistic "This distro will be so much better" distro-switching. Don't get obsessed with it -- it's a set of tools, not a way of life (hopefully).

I highly recommended:

u/LvS · 23 pointsr/linux

Linus wrote a book called Just for fun about this whole thing. It's a pretty nice read if you like Linus' style of storytelling.

u/appleade280 · 3 pointsr/linux

You might be interested in trying gentoo, especially before trying LFS.

Edit: Also, if you'd like to read about the kernel itself you could check out this book, I enjoyed it.

u/cubicledrone · -2 pointsr/linux

Look at me, everyone! I'm smarter than the authors of:

Please lecture us. After all, those men are only a Harvard graduate decorated by the president of the United States and a Princeton professor with a PhD in Electrical Engineering.

u/hanshagbard · 1 pointr/linux

Best thing there is to do is learn the basics of the operating system and how everything works first, that is if you really want to know how everything works and have a chance of doing something in linux.

Check out

I used it when i got to really learn linux and it really helped me understand exactly what everything was.

u/nbrenckle · 1 pointr/linux

Any of the OReilly books are excellent. And if you are looking to learn programming/scripting, I'd go with whatever installs easiest on your iMac, which might be OSX. Also, you can check out Linux Administration Handbook (or the general 'Unix' one)

u/unix-like · 7 pointsr/linux

I consider Classic Shell Scripting by Robbins and Beebe to be the greatest book on the topic. It is so extensive yet readable that it is really worth getting a copy. I owe it to this book that I first really got into Unix as a whole. The authors speak from positions of vast experience and go out of their way to teach you the POSIX way, which is not only handy on exotic Unixes as opposed to Linux, but also on Debian and its derivatives now thanks to dash. Keeping scripts POSIX-compliant pay off a lot cause dash is (in my experience) 1.5 - 2 times faster in trivial looping applications.

u/Sileni · 1 pointr/linux

The industry standard is Red Hat. Get this book and study with your own box set up with either CentrOS, (the free Red Hat) or Scientific Linux (which is very much like Red Hat).



After you have done this, and proved to yourself that this is what you want, there are plenty of pay for training, exams and certifications to spend your money on.

u/EirrinGoBragh · 5 pointsr/linux

Read here:

Program. Then read here:

Program some more. Then maybe read here:

And program some more. Yes, I know two of the links are to amazon. I'm sure if you look real hard you can find other formats.

u/Lunarblu · 2 pointsr/linux

I recommend this book to everyone I taught Linux to. As some people have already commended on learn to program first. Linux knowledge will come.

u/AnthonyJBentley · 1 pointr/linux

A lot of Kernighan’s (co‐authored) books age surprisingly well. It’s a real testament to his writing style that they are still relevant today despite examples tending to be in PL/I or Fortran.

u/ablakok · 2 pointsr/linux

Well, there is The UNIX Programming Environment by Kernighan and Pike (K&P). It's a little dated but it covers sh and awk, including the use of grep, sed, lex, yacc, and the like. You might want to combine it with a more modern book to learn the latest enhancements to bash.

u/rowboat__cop · 0 pointsr/linux

The Linux Programming Interface by Michael Kerrisk.
Hands down the best systems programming resource ever.

u/CameronNemo · 5 pointsr/linux

Haha, sorry it is a commonly referenced book I did not even think about it.

Brian Kernighan and Dennis Ritchie (early developers / creators of UNIX) wrote a book called The C Programming Language. Make sure you get the second edition though.

u/guffenberg · 3 pointsr/linux

I second this one

It could be a good idea to check which books some well regarded universities are using.

u/off_z_grid · 4 pointsr/linux

First off, what are you doing now?

Here is some advice from a 20-year sysadmin who does devops and hobbyist development stuff:

Buy this book. You won't get better advice from anyone anywhere. It's expensive, but BUY THE FREAKIN BOOK:

Install some VM system like VitualBox and start playing with either Debian OR Ubuntu, AND CentOS. Install both numerous times and give yourself some extra partitions to format and play with. Read about some feature or thing and then go mess with it.

Eventually go after RHCSA/RHCE.

Learn the bash shell. Learn how to write real scripts with while/until loops and if/thens, arrays, and other stuff. That'll take time, but put some focus on it.

Don't get overwhelmed. Just start learning one thing, then the next, and go from there. The rabbit hole goes deep.

u/BigDallasJohn · 2 pointsr/linux

You might want to read Just For Fun, it explains his stock holdings in some parts of the book, specifically in relation to Red Hat, SUSE, and how stock splits work from a kernel developer's perspective.

He was given EARLY Red Hat stock and they've gone on to gorilla the market in revenue.

u/gachimuchi4 · 6 pointsr/linux

Don't listen to the useless advice that says just keep installing and smashing your head against the keyboard until you learn something. Follow a course that gives you a study guide and an organized approach to the topic and you will faster, and better.

The topics are presented in a logical order that build upon each other.

Study for the RHCSA and go get it. The bonus is at the end of the day you can also get a job with it.

Resources (these two should be all you need):

u/IWentOutside · 6 pointsr/linux

I've found The Linux Programming Interface to be one of the best in-depth books I've ever tried to read on Linux. Only issues with it is it's not too hands-on, so it's a bit difficult to retain, and maybe the price, bit would have to say it's still totally worth it.

u/jeremiahs_bullfrog · 1 pointr/linux

Well, it is copyrighted by Kirk McKusick, who was a core contribute in the early days of FreeBSD, and he has a restriction that it only be used tastefully (so there's some subjectivity to it). I don't know if he still works on it as a core contributor though, but he did recently release v2 of The Design and Implementation of the FreeBSD Operating System, so he's involved in some capacity.

I'm not sure of the legal restrictions on the new FreeBSD logo, Beastie or Tux so you may very well be right they they don't need to be defended.

u/daniel48 · 2 pointsr/linux

You're one of the coauthors of Linux Device Drivers, published in 2005... Are there any plans of releasing a more organized, updated edition? Would you recommend any other texts for programmers wanting to learn driver development?

u/vekrin · 3 pointsr/linux

Around my office this is known as our bible: UNIX and Linux System Administration Handbook (5th Edition)

It might be overkill as some of the topics aren't important if you aren't working as an engineer or devops.

Check out the table of contents and summary it might be interesting. It's one of the best no nonsense safari books out there.

u/hbdgas · 2 pointsr/linux

Also Red Hat study guides like this one.

u/ryanklee · 3 pointsr/linux
  • Read books. Like this.
  • Try other *NIXs.
  • Compile your kernel.
  • Build (and maybe maintain) a package for your distro.
  • Learn some shell scripting in bash.
  • File detailed bug reports.
u/jbod-e · 1 pointr/linux

Load it onto an old computer and play with it.

Checkout this book: How Linux Works: What Every Superuser Should Know

Checkout this book: The Linux Command Line: A Complete Introduction

u/trabant00 · 2 pointsr/linux

Find an intern job at a small company that does linux based IT consulting, there are plenty of those. The pay will be shit, the hours will be long but what you'll really looking for is a good tutor. Read

u/Sergio89BSD · 1 pointr/linux

I strongly recommend Understanding the Linux Kernel, 3rd Edition:

Although it's based on version 2.6 of Linux, I think its level of detail is unmatched.

u/iovnow · 2 pointsr/linux

I had professionaly been a linux admin for 10ish years before i took my rhcsa. I found it very easy but still learned some in my two weeks of classes before the test.

u/jabjoe · 0 pointsr/linux

I hope that is sarcasm, if not, here's some bed time reading.

Unix is more than a simplified Multric knock off and C is more than some language cobbled together.

u/SyrianRefugeeRefugee · 0 pointsr/linux

"The" book CS students read, and would be good for you, is:

It goes deep into OS design, but if you read it, then all the mysterious tips, explanations, and pointers you find online will make sense.

u/hilaryyy · 1 pointr/linux

lol, i should probably link to the study guide that's out and not the practice exams that aren't. XD

Fix't link

u/0theus · 1 pointr/linux

> Is there some sort of golden rule book whose laws must not be violated?

Yes. The Design of the UNIX operating system and there's The UNIX Programming Environment :\^)

u/sdoconnell · 2 pointsr/linux

I recommend you get Michael Jang's study guide and then setup a lab and practice, practice, practice.

At the risk of a self-plug, I'll offer up ELLIS (Enterprise Linux Lab Installer Script) for setting up your lab. It will give you all the infrastructure needed to practice for the exam on a single lab machine.

u/RMSBeardedLesbian · 0 pointsr/linux

I'm working my way through Damian Tommasino's RHCSA/RHCE book right now. It's fine for me (I've got some experience), but a lot of people on Amazon hate it.

This book has better reviews.

As others have said, Linux+/LPIC-1 is decent, but Red Hat certifications are where it's at.

u/derpological · 0 pointsr/linux


u/WannabeDijkstra · 2 pointsr/linux

The Design and Implementation of the FreeBSD Operating System by Marshall Kirk McKusick

Though it uses FreeBSD-specific details, its breadth and level of detail is really high, with most of the concepts being applicable to nearly all Unix-likes, and much of it to operating systems in general.

The second edition came out just a few days ago, which I link to.

u/tbolt871 · 2 pointsr/linux

I found this book useful:

u/wademealing · 3 pointsr/linux

These books specifically:



And most importantly a wasted youth reading far too many online newsgroups, rfc's and troubleshooting technical issues.


u/ashayh · 1 pointr/linux

No one has mentioned this (and it's predecessors) so far???
Unix and Linux administration handbook.

u/CatZeppelin · 8 pointsr/linux

I always find myself looking at man pages while programming in C, the illusion of speed while using Google can be counter-productive -- blog posts are always filled with misinformation that hampers your ability.

I recommend spending quite a bit of time in userland first. In kernel land the stakes are much higher, after all who's going to look after the kernel. To name a few issues:

  • 8K stack on 32bit kernels, or 16K stack on 64 bit kernels (I believe it can be changed via a config). This means you need to use vmalloc and kmalloc to have a large array.

  • If you corrupt memory in the kernel, your system will crash.

  • No FPU. Only use integers. Remember you're executing in a process context.

    I would start with something very simple, look at the linked-list structure of task_struct and thread_info in <linux/sched.h>


    struct task_struct {
    volatile long state; / -1 unrunnable, 0 runnable, >0 stopped /
    void stack;
    atomic_t usage;
    unsigned int flags; /
    per process flags, defined below */
    unsigned int ptrace;

    ifdef CONFIG_SMP

      struct llist_node wake_entry;<br />
      int on_cpu;<br />


    and thread_info

    struct thread_info {
    struct task_struct task; / main task structure /
    struct exec_domain
    exec_domain; / execution domain /
    u32 flags; / low level flags /
    u32 status; / thread synchronous flags /
    __u32 cpu; / current CPU /
    int preempt_count; / 0 =&gt; preemptable,
    &lt;0 =&gt; BUG

    To learn Linux, or any large software project you need to get your hands dirty. Hack the kernel as you please, after all that's why linux is open source.

    Book recomendations:

    Linux Kernel Development

    Modern Operating Systems

    Have fun hacking!

u/RussJancewicz · 9 pointsr/linux

People might argue that you really don't need to learn C. They are lying to you. Go buy this read it over the summer, it will do nothing but help you with anything else you ever decide to code in even if you never touch C again.

u/_Guinness · 15 pointsr/linux

You're asking a very, very very large question here. I'll try and directly answer this but I may go off on some detail. Also these details will be summarized so anyone reading this, you can pick it apart. It isn't meant to be exact.

&gt; What exactly is a packet?

Its just a chunk of data. This chunk of data contains all types of things it will need to get where it is going safely. Source. Destination. Checksums. Settings. And of course the data within. In TCP this chunk of data can be up to 64 kilobytes. However before this chunk of data hits the physical wire, it has to be split up into its Maximum Transmissible Unit. Which is just a fancy way of saying "this is the agreed upon maximum chunk of data size for this network". Typically the MTU is around 1500 bytes. It is also known as a "frame" since an MTU of 9000 is also called "jumbo frames"

Think of an MTU size like the gears in a car. A lower MTU size is like a lower gear. It gets you going faster, since once you have 1500 bytes of data you can fire that packet off, instead of sitting around waiting for 9000 bytes of data to fill up.

The downside to this is that each packet sent requires a series of interrupts. And interrupts can be costly (especially back in the day!). When an interrupt fires, it goes to the kernel and says "HEY! I NEED SOMETHING DONE!". The kernel says "alright little buddy, lets get you what you need." and then the kernel assigns a core to handle the interrupt. When the interrupt is being handled, nothing else on the core gets done. It has a full lock on that core until the job is done or the interrupt itself (depending on the type of interrupt) is interrupted itself. And yes before you ask, certain types of interrupts cannot be interrupted.

So you can imagine back in the day of single core systems, this could really suck. Because if you have a single core servicing interrupts for 1500 MTU sizes instead of 9000 MTU sizes, you're servicing 6* as many interrupts. Which means your processor literally stops what it is doing to handle the interrupt, and then once done goes back to what it was doing. I could go into kernel preemption and interrupting interrupts but I won't. Too long.

These days interrupts aren't so bad as we have many many cores to service them. If you've ever run into the irqbalance service, it is responsible for basically round-robining interrupts across all cores (cat /proc/interrupts to see).

&gt; how do different linux OSes manage them

All linux distros use some version of the Linux kernel. How the network is managed can vary little to a lot from version to version. There are also local settings for the kernel. Things in sysctl like packet buffer sizes. You also have hardware buffers like the NIC ring buffer/NIC buffer/send/receive queue (I've seen it referred to as all of those) which is set by tools like ethtool. Then you have deeper level settings like congestion algorithms, congestion windows, etc etc. There are entire books written on this. Two of my favorites are Understanding the Linux Kernel and Understanding Linux Network Internals. But to crudely summarize the answer here, the kernel manages all of this for the most part.

&gt; how this packet of data is physically sent over the internet

Basically, buffers and interrupts (hardware/software). These chunks of data sit in a buffer somewhere until either the buffer fills up, and the owner of the buffer sends an interrupt to the kernel saying "hey I need attention, I'm running out of buffer space, can you pick up some packets for me and free up some space?" to software just repeatedly polling a memory address to check for new packets in said buffer. Things like kernel bypass allow userspace programs to read the memory directly on the NIC. But usually a packet goes from the NIC, to the kernel, to the application.

The internet is really just a big conga line of buffers and interrupts. There are tons of places a packet can be dropped. Throughout the process a packet moves through the "7 layers of the OSI model" moving from the physical medium all the way up to the end user application.

The details of how this works are endless. I've literally spent 5 hours in interviews talking about all this and how it works. So like I said your question is pretty huge :)