Skip to content

Study Resources

Essential Books

1. The Linux Programming Interface by Michael Kerrisk

Most Important - Highly Recommended

  • Comprehensive coverage of Linux system programming
  • Covers system calls, processes, memory, IPC, networking
  • Clear explanations with examples
  • Essential chapters: 1-5, 13-28, 44-63
  • 1500+ pages but worth it

Where to get: Amazon, O'Reilly

2. Linux Kernel Development by Robert Love

  • Internal kernel workings
  • Process scheduling, memory management
  • System calls implementation
  • Device drivers

3. Modern Operating Systems by Andrew Tanenbaum

  • OS concepts and theory
  • Not Linux-specific but foundational
  • Processes, memory, file systems, I/O

4. UNIX and Linux System Administration Handbook

  • Practical system administration
  • Networking, security, troubleshooting
  • Real-world scenarios

5. TCP/IP Illustrated, Volume 1 by W. Richard Stevens

  • Deep dive into TCP/IP protocols
  • Network troubleshooting
  • Packet-level understanding

Online Resources

Google SRE Resources

Google SRE Book (free online) - https://sre.google/sre-book/table-of-contents/ - Chapters on monitoring, troubleshooting, incident response - Real Google practices

Google SRE Workbook (free online) - https://sre.google/workbook/table-of-contents/ - Practical exercises

Brendan Gregg's Materials

Blog: http://www.brendangregg.com/

  • Linux performance
  • Tool usage
  • Troubleshooting methodologies

Books:

  • "Systems Performance" - Performance analysis and tuning
  • "BPF Performance Tools" - Modern Linux tracing

Linux Documentation

Kernel.org Documentation - https://www.kernel.org/doc/html/latest/ - Official kernel documentation

Man Pages

man 2 syscalls  # System calls
man 7 tcp       # TCP protocol
man 5 proc      # /proc filesystem

Online Courses

Linux Foundation - LFS201: Essentials of Linux System Administration - LFS301: Linux System Administration

Udemy / Coursera - Search for "Linux System Programming" - "Linux Internals"

Practice Resources

Hands-On Labs

Set up your environment:

# Use Virtual Machine
- VirtualBox + Ubuntu/Debian
- VMware
- Cloud VM (AWS, GCP)

# Install tools
sudo apt-get install build-essential gdb strace ltrace
sudo apt-get install sysstat iotop iftop
sudo apt-get install tcpdump wireshark

Practice Projects

1. Build a Simple Shell - Implement fork/exec - Handle signals - I/O redirection - Pipes

2. Client/Server Application - Socket programming - TCP and UDP - Concurrent connections - Error handling

3. Memory Allocator - Implement malloc/free - Use mmap or brk - Handle fragmentation

4. System Monitor - Read /proc filesystem - Display CPU, memory, processes - Use ncurses for UI

Coding Practice

LeetCode / HackerRank - System design questions - Concurrency problems - Operating systems section

GitHub Projects - Read Linux kernel source (kernel.org/git) - Study glibc implementation - Review systemd code

Technical Blogs

Julia Evans (https://jvns.ca/) - "How does X work" series - Debugging tools - Zines on Linux topics

LWN.net (https://lwn.net/) - Linux kernel news - Feature articles - In-depth technical content

The Geek Stuff (https://www.thegeekstuff.com/) - Linux tutorials - Command examples

YouTube Channels

  • LiveOverflow: Low-level computing, debugging
  • Chris Titus Tech: Linux tutorials
  • Learn Linux TV: System administration

Study Plan

3-Month Plan

Month 1: Fundamentals - Read TLPI Chapters 1-5, 13-15 - Practice: fork, exec, signals - Set up lab environment - Master basic tools: ps, top, strace

Month 2: Deep Dive - Read TLPI Chapters 20-28, 44-54 - Study: memory management, IPC - Networking: TCP/IP Illustrated - Practice troubleshooting scenarios

Month 3: Advanced & Practice - Read TLPI Chapters 55-63 - Kernel Development book - Mock interviews - Review weak areas

Weekly Schedule

Weekdays (2 hours/day):

  • 1 hour: Reading
  • 1 hour: Hands-on practice

Weekends (4 hours/day):

  • 2 hours: Coding projects
  • 1 hour: Tool practice
  • 1 hour: Mock questions

Mock Interview Practice

Practice With

  • Peers: Trade questions with friends
  • Online: Pramp, interviewing.io
  • Meetups: Local Linux user groups
  • Record yourself: Answer questions on camera

Community Resources

Forums

  • Stack Overflow: For specific technical questions
  • Unix & Linux Stack Exchange: Linux-specific
  • Reddit: r/linux, r/sysadmin, r/linuxadmin

IRC/Discord

  • Freenode #linux
  • Various Linux distro channels
  • Tech community Discords

Interview Reports

Where to Find

  • Glassdoor: Search "Google SRE Systems Engineering"
  • Blind: Tech worker forum
  • TeamBlind: More interview reports
  • LeetCode Discuss: Some SRE interview experiences

What to look for:

  • Question types asked
  • Topics emphasized
  • Interview format
  • Difficulty level
  • Timeline

Staying Updated

Follow

  • Linux Kernel Mailing List (LKML)
  • LWN.net weekly edition
  • Hacker News: Tech discussions
  • Phoronix: Linux news

Conferences

  • Linux Foundation events
  • SREcon (USENIX)
  • Local meetups

Final Recommendations

Must-Read:

  1. The Linux Programming Interface (TLPI)
  2. Google SRE Book (free)
  3. Brendan Gregg's blog

Must-Practice:

  1. System call tracing (strace)
  2. Network troubleshooting (tcpdump, ss)
  3. Performance analysis (top, vmstat, iostat)
  4. Coding: socket programs, process management

Must-Understand:

  1. fork/exec flow
  2. Virtual memory and paging
  3. TCP three-way handshake
  4. File descriptors and inodes
  5. System boot process

Time Investment

Minimum: 100-150 hours of focused study

  • No experience: 200+ hours
  • Some experience: 100-150 hours
  • Strong background: 50-100 hours

Quality > Quantity: Deep understanding beats surface knowledge.

Good luck with your preparation! 📚🚀