Introduction to Linux, Open Source Development, and GIT (LFD301)

Linux is exploding, and the demand for Linux developers has never been stronger. This course will introduce you to the world of Linux development and give you the background and training you need to start working with Linux. If you’ve been thinking about getting into Linux development, this is the best place to start!

$3150 Enroll

Course Overview

The Linux job market is hot, and Linux developers are being offered better paying, more flexible, and more fulfilling jobs than many of their peers. If you’ve been thinking of joining the ranks of Linux developers, then you’ve come to the right place.

Show More

You’ll learn:

  • The history of Linux and what differentiates it from other UNIX-like operating systems
  • What the main ingredients of a Linux system are and how to use them
  • The essentials of system administration, such as user accounts and groups, essential commands, filesystems, security, and more
  • Networking and threading models
  • Aspects of compiling and using libraries
  • Working with Java under Linux

This course is for students who are already experienced computer users on another operating system, but have limited or no experience working in a Linux environment. The information in this course will work with any major Linux distribution.

Schedule

No open enrollment classes scheduled at this time. Please contact us at training@linuxfoundation.org to be notified when this class is scheduled again.
If none of these fits your schedule, check out our Partner offerings >

Course Outline

  1. Introduction
    • Objectives and Audience
    • The Linux Foundation
    • Linux Foundation Training
    • Where Does the Software Come From?
    • Is it Difficult to Migrate to Linux?
    • Migration Considerations
    • Migration Aids and Documentation
    • Scope and Coverage of System Administration
    • Preparing Your System
    • Procedures
    • Things change in Linux
    • Course Registration
    • Labs
  2. Open Source Software
    • What is Open Source Software?
    • History of Open Source Software
    • Open Source Governance Models
    • Labs
  3. Why Use Open Source Software?
    • Collaborative Development
    • Security and Quality of Source Code
    • Users: Flexibility
    • Business: Collaborative Development
    • Business: Marketing
    • Education: El-Hi, Public Systems
    • Education: University
    • Developers: Greater Visibility
    • Labs
  4. Examples of Successful OSS Projects
    • Linux Kernel
    • git
    • Apache
    • Python, Perl and Other Computer Languages
    • T\kern -.1667em\lower .5ex\hbox \kern -.125emX\spacefactor \@m {\ and \LaTeX
    • GNU: gcc, gdb, etc.
    • X and Desktop Managers
    • OpenStack, Kubernetes, and other Projects
    • Labs
  5. How to Work in OSS Projects
    • Overview on How to Contribute Properly
    • Study and Understand the Project DNA
    • Figure Out What Itch You Want to Scratch
    • Identify Maintainers and Their Work Flows and Methods
    • Get Early Input and Work in the Open
    • Contribute Incremental Bits, Not Large Code Dumps
    • Leave Your Ego at the Door: Don’t Be Thin-Skinned
    • Be Patient, Develop Long Term Relationships, Be Helpful
    • Labs
  6. Continuous Integration
    • Why Continuous Integration?
    • Continuous Delivery and Continuous Deployment
    • Cost and Benefits
    • Tools
    • Example: Linux Kernel Continuous Integration Project
  7. OSS Licensing and Legal Issues
    • Restrictive vs Permissive Licensing
    • FUD
    • Choosing a License
    • Labs
  8. Leadership vs Control and Why Projects Fail
    • Leadership vs Control
    • Loosen the Chains
    • Mentoring
    • Building Trust
    • Why do many OSS projects fail
    • Labs
  9. Respecting and Encouraging Diversity in OSS
    • Diversity and Open Source Software
    • Sex and Gender Identity
    • National Origin, Geography and Language
    • Religion and Politics
    • Differences of Opinion
    • Labs
  10. GitHub and Other Hosting Providers
    • GitHub
    • Public vs Private
    • GUI vs command line
    • Labs
  11. Linux and the Operating System
    • Kernel vs Operating System and Tools
    • History of Linux
    • UNIX and Linux
    • Linux Distributions
    • Linux Standard Base (LSB)
    • Labs
  12. Graphical Environments and Interfaces
    • Graphical Layers
    • X Window System
    • Window Managers
    • Desktop Managers
    • Terminal Window Options
    • Labs
  13. Getting Help
    • Sources of Documentation
    • man Pages
    • info
    • help and help
    • Graphical Interfaces
    • Labs
  14. Text Editors
    • Available Text Editors
    • vi
    • emacs
    • Labs
  15. Shells, bash, and the Command Line
    • Shells
    • Shell Initialization
    • Aliases
    • Environment Variables
    • Customizing the Command Line Prompt
    • Special Characters
    • Redirection
    • Pipes
    • Command Substitution and Expressions
    • Labs
  16. Filesystem Layout, Partitions, Paths and Links
    • Filesystem Layout
    • Partitions
    • Partitioning Considerations
    • Paths
    • Hard and Soft (Symbolic) Links
    • Labs
  17. System Initialization
    • System Boot
    • System Initialization
    • Labs
  18. Memory
    • Memory
    • Swap
    • Threading Models
    • Labs
  19. Networking
    • Networking and Network Interfaces
    • Labs
  20. Command Details
    • Basic Commands and Utilities
    • File Transfer Tools
    • Monitoring and Performance Utilities
    • Graphical Monitoring Tools
    • Loading/Unloading Kernel Modules
    • Device Management
    • Managing System Services
    • Labs
  21. System Administration
    • Installation
    • Software Management and Packaging
    • Upgrading and Patching
    • User Directories, Environments, etc.
    • Logging Files
    • Labs
  22. Users and Groups
    • Basics of Users and Groups
    • Adding and Removing Users and Groups
    • Files, Users and Permissions
    • root (super) user, su and sudo
    • Labs
  23. Linux Filesystems
    • Filesystems and the VFS
    • ext2, ext3, and ext4 Filesystems
    • Journaling Filesystems
    • btrfs
    • Mounting Filesystems
    • RAID
    • LVM
    • Labs
  24. Essential Command Line Tools
    • Listing, Creating, Deleting and Renaming Files and Directories
    • Finding Files: find and locate
    • Finding Strings: grep
    • String Substitution: sed
    • Labs
  25. Bash Scripting
    • Script Basics
    • Conditionals
    • Loops
    • Functions
    • Labs
  26. Files and Filesystems
    • Types of Files
    • Permissions and Access Rights
    • Changing Permissions and Ownership
    • Labs
  27. Compiling, Linking and Libraries
    • gcc
    • Other Compilers
    • Major gcc Options
    • Static Libraries
    • Shared Libraries
    • Linking To Libraries
    • Debugging with gdb
    • Labs
  28. Java Installation and Environment**
    • Write Once and Use Anywhere?
    • Installing Java on Linux
    • Handling Multiple JREs and JDKs: the alternatives System
    • Environment Variables and Class Paths
    • Integrated Development Environments
  29. Building RPM and Debian Packages
    • Why Use Package Management
    • Packaging System Benefits
    • Linux Distributions and Package Management
    • RPM Creation
    • The RPM spec File
    • Details on RPM spec Sections
    • RPM Dependencies
    • Debian Package Creation Workflow
    • Labs
  30. Introduction to GIT
    • Revision Control
    • Available Revision Control Systems
    • Graphical Interfaces
    • Documentation
    • Labs
  31. Git Installation
    • Binary Installation
    • Installing from Source
    • Labs
  32. Git and Revision Control Systems
    • Converting Between Different Systems
    • RCS and CVS
    • Subversion
    • git
    • git and Distributed Development
    • Labs
  33. Using Git: an Example
    • Basic Commands
    • A Simple Example
    • Labs
  34. Git Concepts and Architecture
    • Concepts
    • Design Features
    • Repositories
    • Objects and Index
    • Content vs Pathnames
    • Committing vs. Publishing
    • Upstream and Downstream
    • Forking
    • Labs
  35. Managing Files and the Index
    • File Categories
    • Basic File Commands
    • Labs
  36. Commits
    • Making a Commitment
    • Identifiers and Tags
    • Viewing the Commit History
    • Reverting and Resetting Commits
    • Tidying Repositories
    • Who is to Blame?
    • Bisecting
    • Labs
  37. Branches
    • What is a branch?
    • Branch Names vs Tags
    • Branch Creation
    • Branch Checkout
    • Getting Earlier File Versions
    • Labs
  38. Diffs
    • Differencing Files
    • Diffing in Git
    • Labs
  39. Merges
    • What is Merging?
    • Merge Commands
    • Rebasing
    • Labs
  40. Managing Local and Remote Repositories
    • Working with Others
    • Cloning
    • Publishing Your Project
    • Fetching, Pulling and Pulling
    • Labs
  41. Using Patches
    • Why Use Patches?
    • Producing Patches
    • Emailing
    • Applying Patches
    • Labs
  42. Advanced Git Interfaces: Gerrit
    • Modes of Distributed Development
    • Gerrit
    • Review Process
    • Labs
  43. Closing and Evaluation Survey

Prerequisites

This course is for students who are already experienced computer users on another operating system, but have limited or no experience working in a Linux environment.

At a Glance

Delivery Method

Live Online (Virtual)

Delivery Method

Live (Classroom)

Includes

  • 4 days of Instructor-led class time
  • Hands-on Labs & Assignments
  • Resources & Course Manual
  • 12 Months of Access to Online Course
  • Certificate of Completion
  • Free Chromebook

Experience Level

   Beginner

Course Rating

   

Pro-Tip

Training 5 or more individuals?
Get a Corporate Quote >

chromebook

Get training and a free Chromebook.

When you train with The Linux Foundation you’re already getting the best open source training straight from the source. And now, we are including a free Chromebook with the purchase of select Linux Foundation instructor-led training courses to help you get the most out of your training experience.

Learn More