Windows-to-Linux roadmap: Part 1. Thinking in Linux

Differences and similarities

IBM e-business architect Chris Walden is your guide through a nine-part developerWorks series on moving your operational skills from a Windows® to a Linux® environment. He covers everything from logging to networking, and from the command-line to help systems -- even compiling packages from available source code. He begins by illustrating some of the differences and similarities between Linux and Windows, and showing you how to stop rebooting all the time.

Share:

Chris Walden (dwinfo@us.ibm.com), e-business Architect, IBM

Chris Walden is an e-business Architect for IBM Developer Relations Technical Consulting in Austin, Texas, providing education, enablement, and consulting to IBM Business Partners. He is the official Linux fanatic on his hallway and does his best to spread the good news to all who will hear it. In addition to his architect duties, he manages the area's all-Linux infrastructure servers, which include file, print, and other application services in a mixed-platform user environment. Chris has ten years of experience in the computer industry ranging from field support to Web application development and consulting.



11 November 2003

Also available in Russian Japanese

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.

File system

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."

Networking

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.

Services

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.

Optional GUI

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.

Filename extensions

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.

What's the kernel?

Linux is actually just the kernel; it implements multitasking and multiuser functionality, manages hardware, allocates memory, and enables applications to run.

For the beginner, 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).

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.

Resources

Learn

Get products and technologies

  • Build your next development project on Linux with IBM trial software, available for download directly from developerWorks.

Discuss

Comments

developerWorks: Sign in

Required fields are indicated with an asterisk (*).


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name. You may update your IBM account at any time.

All information submitted is secure.

Choose your display name



The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

Required fields are indicated with an asterisk (*).

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


All information submitted is secure.

Dig deeper into Linux on developerWorks


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Linux
ArticleID=11349
ArticleTitle=Windows-to-Linux roadmap: Part 1. Thinking in Linux
publish-date=11112003