CEG 2350 - OS Concepts and Usage
Recommended Resources:
Students will be provided with online reference material throughout the course. Textbook(s) can be purchased at the student’s discretion and may better support different learning styles. Books are ranked in order from beginner (towards the level of this course) to advanced (good resources for continued learning).
Learning Git: A Hands-On and Visual Guide to the Basics of Git, O’Reilly, Anna Skoulikari
The Linux Command Line, 2nd Edition, no starch press, William Shotts
How Linux Works, 3rd Edition: What Every Superuser Should Know, no starch press, Brian Ward
Pro Git, 2nd Edition: Everything you need to know about git, Apress, Scott Chacon and Ben Straub
- ISBN: 978-1484200773
- Download EBook: git-scm
UNIX and Linux System Administration Handbook, 5th Edition, Addison-Wesley Professional, Evi Nemeth, Garth Snyder
A Practical Guide to Linux: Commands, Editors, and Shell Programming, 4th Edition, Prentice Hall, Mark G. Sobell
Software:
A terminal emulator:
- Windows: Powershell and / or WSL2 + Ubuntu
- Mac: Terminal
- Linux: Terminal program
AWS Virtual Server (via AWS Academy Account)
- Invite email will be sent in week two of course
Git & a GitHub account
Visual Studio Code (or preferred text editor with git integration)
Course Topics:
The below topic list is not a weekly order of topics, but the organized summary of topics covered throughout this course.
Intro topics
- Shells
- Windows: powershell, cmd
- Linux / Mac: bash, sh, zsh
- SSH
- the command, its options, and structure of information
- private key files (location and permissions)
- public keys and the authorized_keys file
Files, directories, and OS structure
- Filesystem structure in Linux, Mac, and Windows
- Files vs directories
- Commands: ls, cp, mkdir, rmdir, vim, mv, rm, cd, cat, touch, head/tail, less/more
- Importance of names and extensions (file)
- Ownership & sharing
- rwx permissions in Linux
- user vs. group vs. other
- creating users & groups (and naming rules)
- chmod, chown, chgrp, adduser, deluser
- sudo & the root user
Scripting
- Environment variables
- Aliases & customizations (.bashrc, .profile)
- Commands: diff, find, file, wc, sort, uniq, whereis, which
- IO streams (standard input, output (1) and error (2)) and redirection (
<, >, >>, |, tee)
- executing scripts
- within current bash shell (source (or
.)
- by specifying interpreter (bash)
- by specifying the interpreter with
#! (./)
- by name from any location (adding path to PATH)
- Scripting languages: bash
- variables
- reading input
- printf vs echo
- arguments
- conditionals (
test)
- if
- for
- while
- case
- getopts
- functions
- Regular expressions
- grep (search)
- sed (search and replace)
- awk (manipulate formatted data)
Computer Hardware & VMs
- Computer Hardware:
- CPU
- RAM
- Motherboard
- Disks (HDD, SSD, NVME)
- GPU (discrete / dedicated vs integrated)
- VMs
- hypervisor
- host considerations when creating VMs
- installing guest VMs
Boot Process
- BIOS / UEFI
- POST
- bootloader
- kernel
- OS
Filesystems & Disks
- Devices
- block - SSD, HDD, NVME, CD, USB
- character -
/dev/null, /dev/zero, /dev/random
- Partition tables & partitions
- MBR vs GPT
- Tools: parted, gdisk, fdisk
- Filesystems
- Standard defaults for Windows, Linux, and Mac
- compatibility, metadata, structure
- inodes
- Symbolic links vs. hard links
- Tools:
ln, stat
- Tools:
du, df, mkfs
- Mounting & “ejecting”
- mounting to
/
- automounting with
fstab entries
- Tools:
mount, umount
- Compression (
tar & gzip)
Process Control
- Terminology
- process
- application
- service / daemon
- Process states
- Running
- Sleeping
- Stopped
- Zombie
- Orphan
- Process metadata
- PID
- PPID
- User
- Command
- Controlling terminal
- Process manipulation
- viewing active processes
- killing processes
- foreground vs background processes (
bg, fg)
- “pseudo terminals” via
tmux
- Service manipulation with
systemctl
- enable vs disable
- start, stop, reload / restart
- format of a service unit file
- init / systemd
- systemctl (manage services)
- journalctl (view service logs)
- Tools:
ps, top, kill, jobs
Programming
- Languages:
- Interpreted: bash, python
- Compiled: C / C++, Java (JDK vs JVM)
- Compilation (in C / C++):
- pre-processor
- compiler
- assembler
- linker
gcc/ g++ and compilation flags
- Linux ELF (Executable & Linkable Format)
- Windows EXE
- Makefiles
make
- targets
- dependencies
- actions
- Tools:
which, whereis, ldd
Networking
- Core networking concepts
- Methods of communication (physical layer): wifi, ethernet, fiber
- Network interface (NIC)
- communicates over physical layer
- Media Access Control address (MAC)
- Network concepts
- IPv4 vs IPv6 addressing
- DNS
- DHCP
- subnets
- routes
- border gateways / Network Address Translation (NAT)
- ports
- IPv4 concepts
- Subnetting & CIDR notation
- Firewalls
- inbound / INPUT / ingress
- outbound / OUTPUT / egress
- common sense rules & trusted networks
- applied questions will be with a view of an AWS Security Group
- Commands:
ip, route, arp, iptables, ping, curl, wget
Network protocols
- HTTP
- HTTPS
- certificates & Certificate Authorities
- SSH
- ssh
- sftp
- Files:
- private key
- public key
config
known_hosts
authorized_keys
Git (version control)
- Version control as a concept
- Steps to clone with
ssh for authentication
- Basic commands:
- clone
- add
- commit
- push
- pull
- status
- branch
- checkout
- merge
- Files: