Part 1. Thinking in Linux
Differences and similarities
This content is part # of # in the series: Windows-to-Linux roadmap
This content is part of the series:Windows-to-Linux roadmap
Stay tuned for additional content in this series.
You have started to make the change from Windows to Linux. This may have been your decision, or may have come from "on high." In either case you are looking at the prospect of changing your procedures and tools from something very familiar to something perhaps completely unknown. Furthermore, you may need to train others on how to comfortably manage Linux. Administration is more than just following procedures. There is a creative side to successfully managing a computing environment. Making this transition can feel like changing from being an accomplished oil painter to doing welding sculpture.
The good news is that the open standards that drive Linux are the same standards that formed the foundation for your Windows administration. Some of the buzzwords are different, and the tools are a little different, but the underlying concepts are the same. The better news is that as you become accustomed to the Linux approach to doing things, you will have an even larger toolset to work with to control and maintain your environment. Linux's strength is in its stability and flexibility. As you learn to think in Linux, you'll accomplish more, automate more, and do more remotely.
Linux is a little like Windows
Before discussing how Linux is different from Windows, let's explore the overlaps where Linux and Windows are similar.
Users and groups
Both Linux and Windows are multi-user operating systems. Both can be used by many different users, and give each user a separate environment and resources. Security is controlled based on the user's identity. Resource access can also be controlled by group membership, making it easier to work with rights for large numbers of users without having to touch each individual account.
Users and groups can be centralized into a single repository, allowing multiple servers to share the same user and authentication data.
Both Linux and Windows can work with a wide variety of file systems. File resources can be shared with a variety of clients through NetBIOS, FTP, or other protocols. Individual file systems can be flexibly incorporated, allowing the administrator to choose where and how they will be accessed.
Ports and devices
Physical device ports such as parallel, serial, and USB are supported. Various controllers, such as IDE and SCSI, are also supported. Linux can support a good deal of standard hardware "off the shelf."
Linux and Windows both support a number of networking protocols, such as TCP/IP, NetBIOS, and IPX. Both support a wide variety of network adapters. Both provide the ability to share resources, such as files and printing, through the network. Both provide capability to perform network services, such as DHCP and DNS.
Linux and Windows both have services, applications that run in the background to provide some function to the system and to computers that remotely call the service. These programs can be controlled individually and be started automatically when the system boots. (Note: In Linux these applications are often referred to as daemons, a legacy of its Unix roots.)
Linux is different from Windows
Even though there are several similarities between the technologies, there are some key differences between the style of working in Windows and working in Linux. These differences are subtle until you get used to them, but they are key concepts to thinking in Linux.
Linux is built for the network more than printing
When Windows was first built, it was mostly a paper world. One of the beautiful things about Windows was that everything you did was pretty to look at and easy to print. This beginning has affected the evolution of Windows.
In the same manner, Linux has been affected by its origins. Linux was designed from the beginning to live on the network. It was inspired by the Unix operating system, so there was a simplicity, some might say terseness, to its command design. Since plain text works well across a network, text has always been the base for Linux configuration and data.
For those accustomed to a graphical environment, a Linux server might appear primitive at first glance. But Linux development has focused for most of its life more on what was under the hood. Linux has very sophisticated networking, scripting, and security capabilities that are active even in a text-only environment. Some of the seemingly bizarre steps required to perform some tasks are inexplicable until you realize that Linux expects to perform these tasks on a network in cooperation with other Linux systems. Linux has very capable automation capabilities and can be programmed to perform very detailed tasks using nothing more than the equivalent of batch file programming. Linux's text-based nature is a large part of this capability.
Linux has a graphical component. Linux is capable of working with high-end graphical adapters and displays to do some truly stunning work. In fact, many digital effects artists do their design work on Linux workstations, where they would have used IRIX systems in the past. However, the graphical environment is not integral to Linux. It is a layer on top of the running system. That means that you run the GUI only if and when you need it. If your system spends most of its time serving up Web applications, then you can turn off the overhead of the graphical interface and use that memory and CPU for your service. If you need to do work on the system in a GUI, you can turn it on for your work and turn it off when you're done.
There are graphical tools for managing Linux, as well as tools for general office work, such as e-mail, Web-browsing, and document processing. However, in Linux, the graphical administration tools are normally front ends for the console (command-line) tools. That means that anything you can do with a graphical tool, you can also do with a console command. Also, using a graphical tool doesn't prevent you from making manual changes to a configuration file. The value of this may not be immediately apparent. But think about it. If anything done from a graphical administration tool can be done with a console command, that means that those tasks can also be scripted. Scripted commands can become automated tasks. Linux provides the best of both worlds and doesn't force you to work with only text or GUI. You choose the method that's best for your task.
Configuration files in Linux are human-readable text files. This is similar to the INI file of Windows past. This is a philosophical difference from the Windows Registry approach. Configuration files are generally provided for individual applications, and they are usually kept isolated from other configurations. However, most configuration files live in a single place on the directory tree (/etc), so there is a logical single place to look. Text file configuration makes it easy to back up, examine, and edit configurations without using any special system tools.
Linux does not use filename extensions to identity a file's type. Rather, Linux looks at the header contents of a file to identity the type. You can still use filename extensions for human-readability, but Linux doesn't care. That said, some applications, such as a Web server, may use naming conventions to identify file types, but that is a factor of the individual applications.
Linux uses file access rights to determine if a file is an executable. Any file can be given executable status, so programs and scripts can be identified as executable by the creator or administrator. One clear advantage to this is security. An executable file saved onto the system cannot necessarily be automatically executed, a feature that thwarts many script viruses.
Rebooting is a last resort
If you have been using Windows for a long time, you are accustomed to rebooting the system for many reasons, from software installation to correcting problems with a service. This is a habit you will need to change to start thinking in Linux. Linux tends to be rather Newtonian in nature. Once set in motion, it will tend to stay in motion until it is acted upon by an outside force, such as a hardware failure. In fact, the system design of Linux prevents applications from corrupting the kernel, which is why it doesn't need frequent reboots (in contrast to Windows system design). So except for the Linux kernel, you can install, start, stop, and reconfigure software without having to reboot the system.
If you do reboot your Linux system, it will not likely change the behavior, and can make a problem worse. Learning to work with the Linux services and run levels is key to successful troubleshooting. Of everything you will learn going into Linux, overcoming the reboot habit will probably be the hardest.
However, the good news is that this allows you to do a lot of work remotely in Linux. As long as some basic network services are running, you can probably get into the system. Also, if you are having problems with a particular service on a system, you can let the others run while you continue to troubleshoot the problem. When you are consolidating several services onto a single system, this is a critical difference.
Commands are case sensitive
All Linux commands and options are case sensitive. For example, -R is different from -r, and will do different things. Console commands are almost always lowercase. We'll cover commands in more detail in "Part 2. Console crash course."
What should I be thinking about Linux?
The transition from administering Windows to Linux is not trivial. However, as a Windows administrator, you already have many advantages. Much of your understanding of how computing works will carry over. Success as a Linux administrator will be a matter of identifying the differences and adjusting your habits.
Many of the differences between Linux and Windows are advantageous. Overhead from an idle GUI can be reclaimed for services. Tasks can be scripted and automated. Configuration files are text based and human editable. You do not have to reboot the system for most tasks. In fact, you should overcome your instinct to reboot.
- Read the other installments in this Windows-to-Linux roadmap (developerWorks, November 2003).
- Find more resources for Linux developers in the developerWorks Linux zone, including our newest how-to tutorials.
- Build your next development project on Linux with IBM trial software, available for download directly from developerWorks.
- Hone your skills in Linux basics and systems administration with our certification exam study guides. Whether you choose to take the exams or not, our Linux skill-building tutorial series will immerse you in Linux fundamentals as well as advanced topics.
- Learn how to acquire kernel source, configure and boot your new kernel, add a feature, fix a flaw, or just have fun tinkering with operating system source code in our Hacking the Linux kernel tutorial series. Hack and be free.
- The Linux at IBM site offers software, links, end-to-end Linux solutions, and more.
- The Linux Documentation Project is a repository of Linux documentation including documents about individual software, HOWTO documents, FAQs, and more.
- The O'Reilly Network is an excellent resource for technical books on Linux.