New to Linux programming and Linux system administration

Your starting point for learning how to develop Linux programs and administer Linux systems

Show me the newest Linux articles and tutorials on developerWorks

The Linux zone of developerWorks contains hundreds of articles, tutorials, and tips to help developers with Linux programming and application development, as well as Linux system administration.

But if you are trying to find your way in a new topic, all of that information can be overwhelming. This New to Linux page provides an overview for readers who would like to learn about Linux but don't know where to start. It places all the Linux basics in context and ties together relevant developerWorks articles, tutorials, and tips, as well as IBM learning services education, workshops, and IBM products for your further investigation.

So, what is Linux, anyway?

In the simplest terms, Linux is an operating system. It was created in October 1991 by a University of Helsinki student named Linus Torvalds (Linux stands for Linus's UNIX). Linux itself is actually just the kernel; it implements multitasking and multiuser functionality, manages hardware, allocates memory, and enables applications to run.

The average user will never be interested enough in any operating system to want to know about things like kernel internals. Only the truly dedicated -- those who have no personal lives, or those who are being paid to do this kind of work -- are going to want to explore these intricacies.

But even if you never descend to the giddy depths of kernel hacking yourself, it is reassuring to know that you can easily hire a contractor or firm to do this work for you; to commission such modifications for a proprietary system is very often a more difficult and more costly undertaking.

For the novice to Linux programming, probably the most important thing about the kernel that you need to remember is that odd-numbered kernel versions (in other words, 2.3, 2.5, 2.7) are the experimental, development kernel. Stable, release kernels carry even numbers (in other words, 2.4, 2.6, 2.8).

A typical Linux distribution includes the Linux kernel, but it also contains many application programs and tools. For the most part, many system- and user-level tools found in a Linux distribution come from the Free Software Foundation's GNU project (GNU standing for "GNU's Not UNIX").

Both the Linux kernel and the GNU tools suite are released under the GNU General Public License, or GNU GPL. If you are not already familiar with the GNU GPL, the best way to begin to understand it is to go and read it. At the risk of summarizing away some important parts, the GNU GPL is a way of setting computer code free so that the people who use that code may meddle and experiment with it to their hearts' content.

  • We highly recommend this interesting writeup of Linux history from Linus Torvalds' former officemate, Lars Wirzenius.
  • Linux Online offers non-partisan Linux news and information.
  • The IBM LinuxLine is a bi-weekly summary of important trends and market research, case studies, and information about Linux initiatives at IBM.

What is the difference between UNIX and Linux?

Linux is not UNIX, although it is intended to be very UNIX-like. IBM has offerings in both the Linux and the UNIX spheres—as well as many others. Invented at AT&T Bell Labs in 1969, UNIX (the name is a play on the earlier "Multics" operating system) is a robust, flexible, and developer-friendly computing environment. Written originally for the Digital Equipment Corporation (DEC) family of PDP microcomputers, this most popular of multi-user, general-purpose operating systems has taken over roles in all areas of computing -- even those once held by mainframes.

IBM has offerings in both the Linux and the UNIX spheres -- as well as many others.

  • The IBM products page offers quick links to hardware and software, support, consulting, and more.
  • To navigate the greater IBM site, visit IBM's home page.

Some twenty-odd years into its history, UNIX began to be eclipsed -- in some of its roles, anyway -- by Linux. Linux is not UNIX; it is merely very UNIX-like. For some jobs, you want Linux -- for others, you still want UNIX. UNIX and Linux play very well together, and well-written programs are extremely easy to port between the two systems. For more information about UNIX at IBM, please see some of the following sites.

Why is Linux important?

Because it is free software, licensed under the GNU General Public License, Linux obviates the need for programmers to keep reinventing the operations layer with each new project. To wax metaphorical, the GNU family of tools provide royalty-free bricks and mortar with which to begin building independent projects. Critics of free software often voice fears that the freedoms and low cost of free software will lead to economic disaster for the computing sector. However, it is just as likely -- if not more likely -- that free software will do for the world of computing what Gutenberg's printing press did for the world of Letters.

  • The GNU General Public License explains what freedoms and responsibilities are mandated to users of free software.
  • You can read more about the "philosophy" of free software -- and find a great deal of documentation and software packages available for download -- at the Free Software Foundation (FSF) Web site.
  • The IBM Public License (IPL) is also a free software license. It was created with the help of FSF founder Richard Stallman.

What can I do with Linux?

What you want out of your Linux system will determine which Linux system you want and how many layers of complexity you need to understand before you begin to work with it.

Linux is an excellent platform on which to learn Linux programming, kernel hacking, or even UNIX programming; many tools and applications are available to play games, to do desktop publishing, or just to hang out doing e-mail and Web browsing.

It is also an excellent platform for working systems, both open and closed, because it is so heavily customizable for free. Linux is a popular platform for everything from middleware to embedded computing and clusters, to parallel supercomputers and gadgets. IBM has been involved in projects to manufacture cash registers that run on Linux, as well as the Linux wristwatch. Other developers have used Linux on such devices as cell phones, Sony PlayStation, TiVo, and the Sharp Zaurus.

While the GNU General Public License requires altered code to be released to the customers who use it, it is not required that all altered code be released to the general public (this is a key point that some critics of free software fail to grasp). Indeed, in the case of Linux-based cash registers, it would in all likelihood be a security risk to release the code to a wide audience. The GNU GPL merely requires that the modified code be made available to the customers who use it.

  • The IBM developerWorks Linux zone is an indispensable resource for tutorials and articles covering everything from Linux basics to advanced programming and deployment.
  • The proof-of-concept Linux on a wristwatch project was a very popular and well-received effort by IBM Research.
  • Learn about exciting Linux projects and on-demand computing from the Linux at IBM portal page.
  • IBM Global Services offers consulting and support; its services include everything from implementing new installations to migrating or updating old ones. Get a feel for what IGS is doing in the Linux sphere at the Linux services page.

How do I get started with Linux?

If you are completely new to Linux, or if you are using Linux as a desktop operating system, you need to learn at least some basics about system administration and security. Unlike commercial personal operating systems that attempt to automate such operations, Linux does not promise to hold your hand or to clean up after you: you have to take care of the system yourself. Luckily, basic maintenance and basic security are pretty easy. In many ways, Linux and UNIX administration is today much easier than administration for popular commercial personal operating systems because it is much more transparent.

While Linux does have several windowing environments that allow you to perform administration, the most straightforward way to control the system is at the command line. Built in to the structure of the command-line environment are dozens of commands and several text-based help systems.

There are a great many resources on the Web and in the real world to help you get started with Linux. There are Web sites, articles, and books devoted to the subject, and Linux User Groups (also known as LUGs) meet in cities and countries around the world -- and are well-known for being very friendly even to very new users.

How can I use Linux in app development?

Linux is an excellent choice as a programming platform. It is GCC compliant, which means that you can use the GNU Project's excellent suite of programming and debugging tools -- absolutely free, and with all of the freedoms that the GNU GPL guarantees. Commercial programming packages, like commercial operating systems, can cost a great deal of money. True, they are often needed for one project or another and can be well worth the cost, but for a beginner or a learner -- and for many professionals -- free software is simply irreplaceable. If you are using Linux as a development platform, do not skip first learning administration and security. It is a foolish programmer indeed who is not master of his or her own computer.

Linux is by nature standards compliant. Linux developers as a rule place very high importance on keeping the operations layer, as well as those built atop it, open, interoperable, and standards friendly.

  • The Linux Standard Base (or LSB) offers Linux-specific industry specifications and certification programs. The LSB is a working group of the Free Standards Group.
  • Often associated strongly with UNIX, The Open Group is a vendor-neutral, technology-neutral, international consortium whose goal is secure and reliable interoperability across the computing world.
  • The IEEE's Portable Application Standards Committee (PASC) is responsible for the POSIX family of UNIX standards.
  • The Requests for Comments (RFC) document series is a set of technical and organizational notes about the Internet. Maintained by the IETF Secretariat, the RFC publication process plays an important role in the Internet standards process.

What programming languages can I use on Linux?

In addition to steadfast stalwarts like Fortran and C/C++, many scripting and other computer languages are at home on (or were even designed to work best with) Linux. The most popular include Perl, Python, PHP, and Tcl.

Dynamic new technologies such as the Java technology and XML run swimmingly on Linux, as do any number of more esoteric programming languages, from Logo and Rebol to Smalltalk and many more.

How can I continue to improve my Linux skills?

If you want to use Linux as a platform for a very advanced application or application set, you will be interested in aspects of the system such as kernel hacking, the differences between various filesystems, and other nitty-gritty details.

Another skill set that is often needed for high-end applications (or games) is fine-tuning a Linux machine, cluster, or network for optimum performance. This includes expertise in things such as multiprocessing, threading, clusters, and other arcane but sophisticated points of system administration. Understanding these aspects of Linux aren't quite as gritty as actual kernel hacking, but can nonetheless get pretty hairy.

IBM Learning Services offers classes that cover everything from the basics to development to highly specialized skills—as well as certification (more about this later). IBM Developer solutions offers articles and howtos on IBM products, and the greater IBM Web site offers many resources, many if not most of which also run on Linux. And IBM developerWorks offers articles, tutorials, and resources on Linux as well as several other open or free technologies including XML, Wireless, Web services, Java technology, and Grid computing.

How can I demonstrate to others that I have Linux skills?

Certification programs for Linux include consortium programs as well as independent skills tests and company-sponsored certification. IBM developerWorks and IBM Training offer certification tracks for building Linux expertise.

  • The Linux Professional Institute (LPI) certifies Linux system administrators at three levels. To attain certification level 1, you must pass LPIC-1 exams 101 and 102. To attain certification level 2, you must pass LPIC-2 exams 201 and 202. To attain certification level 3, you must pass LPIC-3 exam 301 ("core") and have an active certification level 2. You may also need to pass additional specialty exams at the senior level.
  • Before you take the LPI certification exams, review our comprehensive certification study guides on developerWorks.

What IBM tools are available for Linux?

Linux is a superior operating system on which to run standard applications—from office applications such as word processors and spreadsheets; to database systems; to Web publishing and serving environments. IBM Products such as DB2, Lotus, Tivoli, and WebSphere all run on Linux, and IBM is not the only industry leader to recognize that Linux is an excellent platform for middleware. Though misunderstood and very often maligned—at least, among the self-proclaimed digerati—middleware is an essential (and for many computer users, the essential) reason for having computers around in the first place. The open nature of Linux allows middleware vendors to fine-tune solutions to meet users' needs in ways that no closed system allows.

  • IBM's billion-dollar support of Linux makes headlines; its support of Linux developers aims to make the job of applications programming easier. Whether yours is a mundane or a cutting-edge project, check out the IBM Middleware Available on Linux matrix and other resources at the Linux at IBM site.
  • To get trial IBM software for Linux, you can download trial products that run on Linux directly from developerWorks.
  • The DB2 for Linux Web site offers information, downloads, and links to learn more about IBM's premier database system on Linux.
  • The WebSphere Portal zone will answer all of your questions about application serving and infrastructural middleware.
  • Best known for its messaging and collaboration capabilities, Lotus software suite's integrated functionality also allows for team conferencing, e-learning, knowledge management, and more.
  • Tivoli technologies extend systems management and integrate Linux machines with other IT systems.

What lies ahead for Linux?

Linux's openness and flexibility lend its use to work in laboratories and other research facilities on the bleeding edge of revolutionary technological change. Research at IBM includes all areas of information technology, from physics and cognitive science to leading-edge application research and more. But researchers at IBM are also involved, in many instances, in pure science. At IBM as elsewhere, Linux is frequently in use in these settings.

Linux can easily be clustered or customized for highly original experiments or prototypes, simulations, or tests; and the vast array of free software tools that Linux was created to work with can be used in the same creative way. Even with all of the exciting new technologies that are being developed today—from Grid computing and wireless voice applications to artificial intelligence and Quantum computing—the potential and promise of the computing age in which we live is still largely untapped. Linux's robust and open flexibility means that it will remain at the forefront of the development frontier for years to come.