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
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¶
Recommended 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:
- The Linux Programming Interface (TLPI)
- Google SRE Book (free)
- Brendan Gregg's blog
Must-Practice:
- System call tracing (strace)
- Network troubleshooting (tcpdump, ss)
- Performance analysis (top, vmstat, iostat)
- Coding: socket programs, process management
Must-Understand:
- fork/exec flow
- Virtual memory and paging
- TCP three-way handshake
- File descriptors and inodes
- 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! 📚🚀