Skip to content

seaeunlee14/linux-101

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

linux-101

Introduction

This repository attempts to provide an introduction to Linux for developers who are already familiar with computer systems and programming in general. We will learn through Interprocess Communication on Linux using Unix Domain Sockets.

Plan

Day 1

  1. Setup Development Environment
    1. Create the Host (Ubuntu VM on Azure)
    2. Setup SSH Connectivity
    3. Provision packages required for development
    4. Setup remote session on VSCode
  2. Basic introduction to Linux
    1. Security 101
      1. Users, Groups
      2. PAM, NSSwitch
      3. Basic tools (whoami, id etc.)
    2. Networking 101
    3. Logging
    4. Process Management
    5. UNIX Shell(s)
    6. Some basic commands
  3. Develop a Hello World Program using C
  4. Introduction to GDB
  5. Introduction to the UNIX process model
  6. Introduction to POSIX threads
  7. Introduction to Signals
  8. Develop a multi-threaded client/server app using Unix Domain Sockets
    1. Basic introduction to auto-tools (Autoconf/Automake/Configure/Make)
    2. Develop the server
    3. Develop the client
    4. Develop the command line interface that links with the client

Exercises

  1. Extend the Server to use syslog.
    1. Verify using journalctl.
  2. Extend the Server to use a JSON based config file.
    1. Define a signal handler that responds to SIGUSR1 to refresh the config file.

Day 2

  1. Convert the service to gRPC
  2. Introduction to CMake
    1. Convert the service to use CMake instead of auto-tools
  3. Introduction to UNIX daemons
    1. Convert the serfvice to be a UNIX daemon
  4. Introduction to Redhat Package Manager (RPM)
  5. Build an RPM for the service

Day 3

  1. Introduction to systemd
  2. Define the gRPC server as a systemd service
    1. Ensure the service is started automatically upon installation
    2. Ensure the service is automatically removed upon uninstallation
  3. Debug the running service
  4. Debug from core
  5. Introduction to performance tools on Linux

References

  1. Resources on building infrastructure
    1. Auto tools
    2. CMake
  2. Training
    1. Linux Foundation Training
  3. Books
    1. Advanced Programming in the Linux Environment by Richard L. Stevens
    2. UNIX Network Programming Volumes 1 & 2

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 54.5%
  • C++ 23.7%
  • M4 11.3%
  • Makefile 9.6%
  • Shell 0.9%