INTRO TO LINUX
Matthew Newhall

Licensing
Copyright
Copyleft
1980 year of the epic idealist nerd.

Internet - coders sharing...
Profit 
Learning 
Fun

Linus Torvald's choice
BSD
Minix 
Solaris

GPL
GNU Public License
Gnu's Not Unix
Redistribution allowed
Must make source available
LGPL for linking (calling libraries), otherwise code is GPL.
Unconditional surrender
First Born

GPL Users
Scientists
Civic minded folks
Unwitting masses
Crazy people aka:zealots

Open Source
OSI
Many licenses
1. Free Redistribution
2. Source Code
3. Derived Works
4. No discrimination
(actually 10 but that might be boring)

Distros 
Branding
Competition
Chaos, the bazzar

Early Distros
Slackware
Redhat
Debian

Later distros  A few of the thousands...
Redhat  ->  Turbo, Fermi, Centos, Fedora, RHEL, Red Flag, SELinux
Debian -> Ubuntu, Mint, Knopix, Maemo (now Meego)
Slackware -> Suse
Gentoo
Android?

Support model
Distros simply, remove repetitive work
Hackers wasting time on housekeeping not programming
Users came along for the ride.

Choosing a distro
TRUST
A solid future
Fast exploit patch turnover
Intended use
Ease of use
technical layout  (system speed vs ease of use vs security)

My favorites
Debian - server
Ubuntu or Fedora - desktop
Meego - phones
knopix - cd or DVD distro

Package management
Linux systems may have 50,000 to 100,000 files
Files grouped by function as packages
Packages primarily programs or libraries

Linux distro mash up of many programs aka:packages
1113 packages, Red Hat 6 desktop
555 Debian Squeeze server
2053 Ubuntu 12 desktop

What packages should you use?
Package management at the core of distribution.
Slackware .tgz
Redhat .rpm
Debian .deb
agnostic (not in database) .tar.gz

What are packages?
Files
Scripts 
database entries.  (not tar.gz)

What database entries?
File paths
Permissions
Stage of installation
versions
dependancies (other packages also needed)

Progression of package metadata
tar  - perms, filenames
pkgadd - versions, scripts
rpm - dependancies (now some stages)
dpkg (aka:deb) - stage of installation

Library, source and dev packages
Packages typically distributed as binary
Predictable but not always optimized.
Source packages also available.
.src.rpm
.dsc
*dev*.*
*lib*.*

Front ends for package systems.
tar (BSD) - ports  (directory tree and make command.)
portage - emerge 
rpm - yum
deb (dpkg) -  apt-get, apt-cache

Install
Try newest version first
Three decisions for basic single boot install
distribution
filesystem layout (/, swap, /boot)
server or workstation

Install - dual boot.
Boot sector (MBR)
Boot loader
Other operating systems
Partitioning

Dual boot alternative - Boot DVD
The good:
Good hardware test
Good OS sample
Great for rescue
The bad:
Slow
User data retention needed.

Install - other questions
root password
network config
Debian, Slackware - may be a lot more.
Gentoo - Will be a lot more.

Install pointers - uh oh
Linux kernel prompt at boot
virtual terminals [ctrl] [alt?] [f1] - [f5]
Redhat boot disks.
It's a bizarre!
Try another distro, try another version
System can usually be upgraded in place once booted.

Post install
Video cards.
patch!
yum update
apt-get update, apt-get upgrade

The technical structure of Linux
Linux is Unix
Kernel 
Shell
Processes

Kernel 
One big loop 
Bundles of hardware drivers
Most drivers broken into modules .ko files
Technically the kernel is actually 'Linux'
Tons of hardware.

Graphical interface
The X Windows system is almost always used.
Usually a Gnome or KDE desktop is started from X
Sometimes X server starts at boot (runlevel 5 in Redhat), xdm, gdm, etc
The Xserver is the place graphics are displayed
The Xclient is the connection to the Xserver  (ssh, terminal, etc)

Administration
Root can do everything, even really dumb stuff.
sudo can be used so root logins can be controlled and logged.

Disk
One big tree, everything is a branch
USB was tough as trees not really dynamic
Even remote filesystem use fake device (block layer) and join tree

Important Directories
/ - root 
/dev - device files
/home - user homes
/var/ - variable
/var/log - log files
/usr/ - programs somewhat static
/proc/ - fake filesystem for kernel metadata
/sys - the same but more betterer
/etc - system wide config files 

Directory Structure
[odinson@warcloud ~]$ls -la tmp2/
total 28
drwxr-xr-x  3 odinson odinson  4096 Aug 14 14:57 .
drwxr-xr-x 81 odinson odinson 20480 Aug 14 14:56 ..
-rw-r--r--  1 odinson odinson     0 Aug 14 14:57 junk
drwxr-xr-x  2 odinson odinson  4096 Aug 14 14:56 tmp3

Permissions
Files are groups of  pointers to data and other metadata in a file system table
User
Group
and three groups of permissions for user, group and everybody else.

Permissions II
User  - Read Write eXecute
Group - Read Write eXecute
Everyone - Read Write eXecute
ls -l temp
drwxr-xr-x  3 odinson  odinson      4096 May 15  2008 temp
ls -l test.txt
-rw-r--r--  1 odinson  odinson      7628 Nov 15  2006 test.txt
ls -l test.rb
-rwxr-xr-x  1 odinson  mygroup      1256 Apr 24  2008 test.rb

Permissions III selinux 
More recently, SELinux is on, ACLs
/var/log/messages
-rwxr-xr-x.  1 odinson  mygroup      1256 Apr 24  2008 test.rb
setenforce Permissive		
ACLs a bit much.

Permissions IV setUID and sticky
SetUID
-rwsr-xr-x 2 root root 166120 May 23 13:03 /usr/bin/sudo
[odinson@warcloud ~]$ls -l /
....stuff.......
drwxrwxrwt   4 root root  4096 Aug 14 14:40 tmp

Processes
Init first process.
starts other processes, usually starting with a shell.
On newer operating systems upstart has replaced init as PID1. (still called init)
Processes get a number aka: a PID beween 2 and 32768 (usually)

How the system starts up
Hardware
Machine powers on.
Bios initialized.
Looks for boot sector on first hard drive
Loads program at boot sector. (MBR)
MBR loads bigger boot program GRUB
Grub presents you with a menu

How the system starts up II
Grub usually times out to the default choice
Chosen kernel and parameters starts to boot.
Hardware is initialized.
init or upstart process is started.
It checks it's config file in our case it says to start run level 3.
Files are executed in name order in /etc/rc3.d/
Boot is complete

How it shuts down
The opposite.

Starting and stopping system processes
service apache restart
/etc/init.d/apache start

Important Files
User data
/etc/passwd
/etc/shadow
/etc/group
Logging 
/var/log/messages
/var/log/boot
/var/log/secure
Bootup
/boot/menu.lst

Important commands.
ssh
ssh keygen
ps aux
kill
ls -la
cd, cp, mv, rm
chmod, chown
find

Important commands II
vi /nano
grep something filename
df -h
mount
tail -f
last
exit
[CTRL] [C]
[CTRL] [D]

Linux specific.
locate
rpm -ivh , rpm -ql
dpkg -i , 
ifconfig/ipconfig
route (-n)
iptables -L
fdisk -l, parted
lsof -i

Handy Linux Specific Commands
wine
catdoc
checkcfg

General (Unix and Linux)
http://www.warcloud.net/docs/unix/