Preliminary Preparations: 1. Linux Flavors ~ Acquiring a Taste 2. Making a boot diskette in Windows/MS-DOS 3. Partitioning schemes 4. The installation process 5. LILO I. Introduction to Linux a. Basic Concepts b. Creating Accounts c. Logging in d. Virtual Consoles e. Shells and commands f. Logging out g. Changing your password h. Files and directories i. The Directory Tree j. The Current Working Directory k. Case sensitivity II. Communicating with your Linux system a. The console b. Virtual consoles c. Secure Shell (ssh) i. PuTTY ii. WinSCP III. Navigating a. Home directory b. The tilde (~) c. Absolute vs. Relative paths d. The "cd" command e. Viewing the contents of a directory i. The "ls" command and its switches ii. Hidden files (the dot-file naming convention) iii. The "dot" (.) and "dot-dot" (..) directories iv. What is "dot-slash" (./) and why should I use it? f. Creating new directories (the "mkdir" and "mkdir -p" commands) g. Removing directories i. Empty directories --> rmdir ii. Directories with contents --> rm -Rf h. Creating files i. The "touch" command ii. Creating files with a text editor g. The Linux Filesystem Overview i. / ii. /etc iii. /var iv. /bin v. /sbin vi. /usr vii. /home viii. /dev i. The SME/E-smith Filesystem Overview i. Modifications to the standard Linux system ii. SME/E-smith's Templating Framework IV. Working with Files a. Copying files (the "cp" command) b. Copying directories (the "cp -R" command) c. Moving files (the "mv" command) d. Moving directories e. Removing files (the "rm" command) i. Interactive (default) ii. Non-interactive (the "rm -f" command) f. Viewing files i. The "cat" command ii. The "more" command iii. The "less" command g. Filename limitations h. Finding files and directories i. The "find" command ii. The "whereis" command iii. The "which" command iv. Scripts that help i. The "head" and "tail" commands V. Shortcuts a. Wildcards ("*" and "?") b. Command line completion (using the tab key) c. Standard Input and Output (STDIN & STDOUT) d. Redirection i. creating new files ii. appending to existing files VI. Editing Files a. The "vi" editor i. Command mode ii. Insert mode iii. Moving around in vi iv. Quitting vi * :q (quit without changes) * :w (save file without quitting) * :wq (save file and quit) v. Using "vi.tutor" b. The "pico" editor i. The pico menu ii. Quit without changes (^x --> n) iii. Save and quit (^x --> y) iv. Save without quitting (^o) v. Searching VII. Shells a. The Bourne Again Shell (bash) i. Scripting ii. Variables iii. Environment iv. Initialization Files b. Other shells i. Bourne shell (sh) ii. C shell (csh) iii. TC shell (tcsh) iv. Korn shell (ksh) VIII. Pipes a. The concept of pipelining b. "Piping" STDOUT to other commands c. Combining redirection and pipelining IX. File Permissions a. Owner-Group-Other b. Read-Write-Execute c. Reading File Permissions d. Setting File Permissions i. The "chmod" command ii. Different approaches to the "chmod" command X. File Ownership a. The User and Usergroup concept b. The "chown" command c. The "chgrp" command d. Combining the chown and chgrp commands XI. Creating and Using Links a. Hard links (the "ln" command) b. Symbolic links (the "ln -s" command) XII. Job control a. Foreground and background jobs b. Killing jobs c. Suspending and restarting jobs XIII. Basic System Administration a. The "root" account b. Getting root c. The superuser account (su) d. Startup, Shutdown, and Reboot e. Managing the Startup sequence i. The "rc" directories ii. The inittab file XIV. Working with Filesystems a. Filesystem types b. Mounting and Unmounting i. Mount points ii. CD-ROM and Floppy drives and media c. Devices and Device Naming conventions (the "/dev" directory) i. /dev/fd0 ii. /dev/hda[0-9] iii. /dev/sda[0-9] iv. /dev/ d. Checking filesystems (the "fsck" command) XV. User Management a. The /etc/passwd file (UID,GID,username,passwd,realname,homedirectory/shell) b. Adding users c. Removing users d. Changing passwords e. Changing shells f. The "shadow" system g. SME/E-smith User Management i. Server-manager method ii. Adding Multiple Users iii. Deleting Users iv. Giving users access to the system XVI. Archiving and compressing files a. The "tar" command i. Making a tape archive (tar -cvf) ii. Extracting a tape archive (tar -xvf) b. The "gzip" and "gunzip" commands c. Combining "tar" and "gunzip" (tar -xvzf) d. Backing up to a diskette i. Mounting the diskette (the "mount" command) ii. Formatting the diskette (the "fdformat" command) iii. Copying the files * tar -cvfz /dev/fd0 /directory * tar -cvfzM /dev/fd0 /directory (spans multiple diskettes) iv. Unmounting the diskette (the "unmount" command) e. Restoring the backup f. Dealing with older compression schemes (*.Z) g. Dealing with newer compressions schemes (*.bzip2) XVII. The RedHat Package Manager (RPM) a. Working with RPMs i. RPM vs. SRPM ii. Naming conventions (noarch, i386, i586, i686, alpha) b. RPM command structure i. rpm -ivh rpmname.rpm ii. rpm -Uvh rpmname.rpm iii. rpm -qpl rpmname.rpm iv. rpm -qa (can be redirected or piped for easier viewing) XVIII. Viewing and Managing Logs a. The /var/log directory b. Log file rotation c. Special log files (httpd) XIX. Viewing and Managing Processes a. Viewing processes (the "ps" and "pgrep" commands) b. Killing processes (the "kill" and "pkill" commands) i. Command switches ii. Process numbers XX. Getting help a. The "man" system i. Paging through "man" entries ii. Using "man 'command' | col -b" iii. Web-based man pages b. The "info" system XXI. Regular Expressions (regex) a. The "grep" command b. The "sed" command c. Using Perl to work with regex XXII. Building RPMS a. Creating the RPM sandbox b. Writing "spec" files c. Organizing and creating the tarball for SOURCES d. Building the RPM application e. RPMS vs. SRPMS f. Testing the RPM application g. Using *.src.rpm to improve packages XXIII. Writing shell scripts a. Similarities between shell scripts and batch files b. The "she-bang" header (#!/bin/sh, #!/bin/bash, #!/bin/tcsh, etc.) c. Executing shell scripts d. Using "history" and "script" to help with writing scripts e. Documenting shell scripts XXIV. Perl a. Using Perl b. Reading Perl scripts c. Writing Perl scripts d. Sample Perl scripts XXV. Scheduling with cron a. The cron utility b. The /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly directories c. The crontab command i. Options and switches ii. Default editor d. Manipulating cron with a text file XXVI. Monitoring the system a. Using "top" b. Examining disk usage with "du" c. Examining the overall filesystem with "df" d. Hard and soft disk quotas e. Using "netstat" f. Recovering from a brown-down with "fsck" g. The "arp" tables h. The "traceroute" command i. The "tcpdump" command j. The "ping" command k. Reading the /proc filesystem i. List the /proc filesystem ii. lspci iii. free iv. lsmod v. apm (laptop only) l. The "vmstat" command m. The "nslookup" command n. The "dig" command XXV. Using the "bash" shell a. Shell variables, Environmental variables b. Simplifying your command line experience c. Shell configuration files. d. The "if-then" and "if-then-else" statements e. Special escape characters XXVI. System Startup a. The /etc/rc.d scheme b. Killing (K) and Starting (S) daemons and processes c. Run levels d. Modifications on SME/E-smith XXVII. Compiling Software a. The Makefile b. Running "configure" c. make, make install, make clean d. Placement of the resulting programs e. Writing your own "program" f. Compiling your code XXVIII. Internet Utilities and Applications a. wget b. lynx c. ssh d. ftp e. scp f. telnet XXIX. Apache Web Server a. The daemon b. The httpd.conf, src.conf, and srm.conf files c. The directory structure of "webspace" d. The importance of permissions and ownership e. CGI f. Logs g. The SME/E-smith way h. Allowing user web pages i. The Virtues of Virtual directories j. .htaccess and .htpasswd k. Modules XXX. MySQL - Relational Database Software a. Associated utilities i. mysqladmin ii. set_permission iii. mysqldump b. Basics c. Remote administration XXXI. Installing Web-based Applications and Packages a. Installing from source b. Automation with scripts c. Package-based installations d. Choosing between the cgi-bin and html directories e. Permissions and Ownership...always a consideration XXXII. Backups a. The "dump" command b. The "cpio" command c. The "tar" command revisited d. The SME/E-smith approach to backups XXXIII.Miscellaneous a. The "cal" command b. The "compress" and "uncompress" commands c. Command line math with "bc" d. The "who" and "w" commands e. The "id" command f. The "su" command g. The "file" command h. The "sort" command i. The "uniq" command j. The "cat" command k. The "head" and "tail" commands l. The "rename" command XXXIV. Doing the GUI ~ XWindows a. Overview b. Knoppix -- Virtual Linux -- DemoLinux c. Gnome -- KDE d. Other suggestions included: PHP-MySQL, Linux variations, installation tips, partitioning strategies, hardware replacement, security considerations, etc. Most of these topics could be the focus of their own workshop or seminar. There might be some interest in doing a "Let's Compare Linux Desktops" day, or an "Introduction to PHP" day. Also, possibly a mini-session on "Replacing Storage Drives in Linux" (something I had to do when one of the SCSI drives failed on the EdSeek RedHat server). This preliminary round of workshops will most likely focus on command line systems administration tasks and tools. Once we get a solid grounding in these skills, then we can tackle some of the others.