[Updated Saturday, April 18, 2008 1230 IST]
The following is a collection of books for newbies, gnubies that I highly recommend.
Enjoy the learning experience!
Any good introductory book on programming in C will suffice. This book is excellent for beginners. At this level, a basic understanding of pointers will be useful.
After learning the basics of C programming, a good book for the introduction of GNU/Linux and shell programming is required.
This is an excellent book for beginners that teaches shell programming.I started liking shell scripting only after reading this book. The best way to learn is to sit before a GNU/Linux computer, read the shell commands from the book and try it out immediately on the computer, read more and experiment more.
After an introduction to both C and shell programming, mastery of pointers is required. It will be of immense help to you if you master pointers before going into advanced C and GNU/Linux system programming.
The book is filled with examples. There are numerous programs that clearly illustrate the different notations and usage of pointers in C. You can read it like a story book and finish it quickly.
Ignore the Turbo C++ part, and use g++ for learning C++ with this book. It covers the basics of object-oriented programming, and is a very good book to quickly refresh your object-oriented concepts.
A very basic, introductory book to get started with Python. Also covers specific modules of interest. A good Python reference book.
A basic, introductory book in getting started with GNU Emacs.
An excellent book to get started on understanding design patterns. But, they use Java examples.
This is an excellent book on GNU/Linux programming for beginners. The author provides very simple example programs to explain the concepts. It provides an introduction to shared memory, pipes, semaphores, and socket programming. You can check the author's website from http://www.kurtwerks.com for free source code and for information regarding his books.
The Advanced Linux Programming book is available online at http://www.advancedlinuxprogramming.com/. You can download the entire book and the relevant code examples. The book is released under the Open Publication License while the code examples are released under the GNU General Public License (GPL).
This is a book for advanced network programming in UNIX. You can check the author's webpage at http://www.kohala.com/start/ for information about the book and his other books. For running the example network programs on Linux, there are some patches provided by Dan Kegel at http://www.kegel.com/unpv1.
I found the following books and links very useful in learning to write device drivers, and for kernel development.
The Linux Device Drivers book is available online at http://www.xml.com/ldd/chapter/book/ (released under the GNU FreeDocumentation License). It is an excellent book for learning to write device drivers in Linux.
The standard book for learning the internals of the Linux kernel. Excellent documentation and snippet codes for easier understanding ofcode.
The book explains the internals of Linux 2.4 and covers topics such asprocess scheduling, IPC, memory managment, file systems, device drivers, and multiprocessing.
There are plenty of books that can teach you to install and configure GNU/Linux and setup services. I found the following books very useful:
An excellent book to get you started on *nix system administration. Highly recommended for beginners. A very useful reference book.
The book covers installation, configuration and system administrationof GNU/Linux. It also has information on managing files, DNS, FTP,Apache, sendmail, Samba, and other services.
An excellent book on introduction to GNU/Linux. If you want to get started on GNU/Linux this book is a must have.
I entered the world of embedded systems with this book. Karim's book taught me about embedded systems and how the Linux kernel can be built to various architectures along with GNU packages.
A good introductory book on embedded GNU/Linux. It covers important basic concepts.