Introduction to Linux Installation and Programming


Since early 1970, Unix operating system has gone through many a metamorphosis. As of now, a number of Unix variants are in vogue. While some of them are commercial, others are available freely. In recent years, Linux, a public domain, freely available Unix variant has attracted the attention of the software community. So far, Unix was believed to be the bread and butter of Computer Science interns. However, because of this freely available Unix variant, many people are becoming Unix/Linux enthusiasts, especially in India.

Hundreds of books had been written in the past, exploring various facets of Unix such as user commands, shell programming, system administration, network management, Unix internals, device drivers, and kernel development. In this book, we attempt to bring in to focus, the Linux features and other topics in the open source arena so as to enable the user to start working under the Free/Open Source regime. This book assumes that the reader has hands on exposure to an operating system such as Windows ( as a user ) and C programming.

This book attempts to expose the reader to both Linux installations and programming, and should be useful to a novice Linux enthusiast. In a step by step fashion, it describes how to install Linux, make and swap partitions, and configure network, proxy server as well as web server. In addition, network installation along with SLIP, PPP connections are explained. Detailed explanations are given how to run web servers, email servers and print servers on a machine. Besides elementary Linux/Unix commands, emphasize is also on shell and awk programming which are vital for system administration.

Those who are new to networks, are advised to go through the separate chapter on this topic before actually trying to install the network. A chapter on System Logging is included to provide necessary details for the administrators who monitor the activities/processes in their system.

Chapter on X windows deals with the architecture of X windows system. How GUI is developed under Linux is explained with Qt and Gtk libraries using live examples. Python language is explained with concept-oriented examples, with emphasis on Web enabled applications.

N.B Venkateswarlu 
GVP College of Engineering

1.	Introduction to Linux Operating System
1.1 	Introduction to  OS
1.2    	Introduction to Linux File System
1.3    	Man pages
1.4    	The First Command ‘cat’
1.5    	Command History
1.6	Conclusions

2.	Basic Unix commands
2.1     	vi editor
2.2     	redirection operators
2.3     	Some UNIX commands
2.4	Conclusions

3.	File Filters
3.1           	File related commands
3.2		Introduction to piping
3.3		Some other means of joining commands
3.4		awk command
3.5		backup commands
3.6	Conclusions

4.	Processes in Linux
4.1 	Introduction
4.2		Users Process in Linux
4.3		Terminal Handling
4.4		Conclusions

5.	Shell Programming
5.1 	Introduction
5.2		Programming constructs
5.3	Conclusions

6.	Debian Linux Installation Guidelines
6.1  	Installing Debian Linux
6.2		Installing Additional Packages
6.3		Configuring X
6.4	Conclusions

7.	Redhat Fedora Core 4 Installation Guidelines
7.1		Introduction
7.2		Configuring X windows and Installing packages
7.3	Conclusions

8.	Installing Apache: The Web server
8.1		Introduction
8.2		Basic Configuration, and configuring Apache
8.3		Conclusions

9.	Samba Installation and Configuration
9.1		 Introduction to File sharing
9.2		Compiling from sources
9.3		Installing samba
9.4		Conclusions

10.	Installing SMTP Mail Server
10.1	Introduction
10.2	Postfix as MTA
10.3	Conclusions

11.	Installing Common Unix Printing System (CUPS)
11.1	Introduction
11.2	Building and Installing CUPS
11.3	Managing printers
11.4	Conclusions

12.	Installing Squid Proxy and Firewalls
12.1	Introduction
12.2	Setting Firewall
12.3	Proxy servers
12.4	Setting Squid Proxy server
12.5	Conclusions

13.	 Users and Account Management
13.1	Account and related files
13.2	Account Configuration files
13.3	Creating Users
13.4	Testing an account
13.5	Removing an account
13.6	Allocating Root permissions
13.7	Conclusions

14.	A brief Introduction to Unix Devices and File System
14.1	Introduction
14.2	Devices-Gateways to the Kernel
14.3	Disk drives, partitions, and file system
14.4	Conclusions

15.	 Linux System Startup and shutdown
15.1	Introduction
15.2	A brief outline of x86 Linux booting process
15.3	Conclusions

16.	System Logging
16.1	Introduction
16.2	Logging
16.3	Accounting
16.4	Available graphical tools
16.5	So What?
16.6	Conclusions

17.	Networks: A brief Introduction 
17.1	Introduction
17.2	Ethernet basics
17.3	TCP/IP basics
17.4	Basics of Transport layer and services
17.5	Services on Internet
17.6	Conclusions

18.	 Compiling C and C++ Programs under Linux
18.1 	Introduction to C compiler
18.2	Detailed analysis of Compilation process
18.3	Functions with variable number of arguments
18.4	Compiling a multi source “C” program
18.5	How main() is executed on Linux
18.6	What Linux does for Executable file
18.7	Compiling single source C++ program
18.8	Combining C and C++ programs
18.9	Better C coding practices
18.10 	Conclusions

19.	GNU Debugger
19.1	Introduction
19.2	Debugging using GDB
19.3	Conclusions

20.	 Make
20.1	Introduction
20.2	Syntax of Makefiles
20.3	Automake, Autoconf
20.4 	Conclusions

21.	Revision control System
21.1		Introduction
21.2		Creating files under RCS system
21.3 	 Conclusions

22.	Lex and Yacc
22.1 	Introduction 
22.2 	Lex specification file
22.3	Yacc – a parser generator
20.4	Conclusions

23.	A brief tour of Python 
23.1 	Introduction
23.2	Conclusions

24.	Introduction to perl 
24.1	Introduction
24.2	Conclusions

25.	A peep into Ruby 
25.1	Introduction
25.2	Object oriented programming through Ruby
25.3	Profiling
25.4	Calling Unix system calls from Ruby
25.5	Conclusions

26.	X Windows  Architecture and GUI Programming
26.1 Introduction
26.2 GTK Programming
      26.3 Qt Programming
      26.4  Glade: A visual designer tool for GTK, GNOME
      26.5 Conclusions