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 Visakhapatnam Contents 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