July 18, 2009
"It is much easier to suggest solutions when you don't know too much about the problem."
-- Malcolm Forbes

Supporting Linux in the Microsoft Enterprise, part 1

Apr 7th, 2009 | By Mike Dailey | Category: Featured Article, Linux and Open Source

In this multi-part series I will be discussing the adoption and integration of Linux in the Microsoft enterprise.  Each article in the series will cover a different aspect of Linux and how each can be successfully deployed and supported in the enterprise to augment and compliment Microsoft technologies.

Linux adoption in the enterprise data center continues to grow in terms of both numbers of servers and the variety of roles Linux occupies.  Server virtualization, database platforms, web portal and e-commerce architectures are just a few types of key enterprise systems experiencing this rapid growth in Linux operating system deployments.  As these deployments become more pervasive in the enterprise so too does the need for the integration and interoperability between Linux and Microsoft technologies.

For many experienced Microsoft professionals the idea of deploying and supporting Linux alongside traditional Microsoft server platforms carries with it a varied range of concerns, both technical and professional.  With business economics demanding more services and productivity at a lower budgetary cost the seamless interoperability and supportability between Linux and Microsoft server platforms is fast becoming more of a business requirement than a technical decision.  The growing expectation is that system and network administrators will support both platforms as opposed to the more costly alternative of having dedicated support personnel for each platform. 

As Linux continues to progress in the enterprise many Microsoft professionals are faced with two very different server platforms to support.  The choice may not be if they are to support Linux but how they are to support Linux.  Putting the longstanding Linux-vs-Windows argument aside, this is a prime opportunity for technical personnel to build a skill set in Linux that can only help to enhance their marketability in the industry.  With this is mind, the focus of this series of articles is to assist the Microsoft professional in leveraging existing knowledge and skills to develop a solid foundation in Linux operating system support and administration.

For the Microsoft professional to easily adapt to Linux it is necessary to understand some of the similarities and differences in the two platforms.  This will be our focus for the remainder of this article.

Linux and Windows Shared Traits

Before discussing how Linux is different from Windows we should understand that the two operating systems share many commonalities.

Users and groups.  Both Linux and Windows are multi-user network operating systems. Both can be used by many different users, allowing each user to have a separate and customizable environment and resources. In both platforms, security is controlled based on user credentials and identity. Access to server and network resources can be controlled by group membership in both platforms.

Users and groups can be centralized into a single repository, allowing multiple servers to share the same user and authentication data.  In Microsoft this repository is Active Directory, while in Linux Lightweight Directory Access Protocol, or LDAP, is leveraged for this purpose.

File system.  Both Linux and Windows can work with a variety of file systems. Both can utilize the common FAT, FAT32, and NTFS file systems.   Linux by default uses the ext3 file system format, while Microsoft Windows uses the NTFS file system format as the default.  File resources on both platforms can be shared with a variety of clients through NetBIOS, FTP, and other network protocols. 

Hardware compatibility.  Linux, like Microsoft Windows, can support a wide variety of standard hardware.  Most industry-leading vendors of enterprise servers, storage devices, network adapters, SAN connectivity and the like ensure that their hardware is fully supported under Linux.  What the manufacturer may not offer in terms of Linux hardware device support is more often than not supplied by a third party.

Networking.  Linux and Windows both support a wide variety of networking protocols and services.  Both support a wide variety of network adapters. Both provide the ability to share resources, such as files and printing, through the network. Both can provide essential network services, such as DNS, DHCP, FTP and SMTP to name a few.

Services.  Linux and Windows both utilize the concept of services, applications that run in the background to provide some function to the system and to computers that remotely call the service. Both platforms allow these services to be controlled individually and to be started automatically when the system boots.  (Note that in Linux these applications are often referred to as daemons, a legacy term held over from the Unix world to which Linux can trace its roots.)

Differences Between Linux and Windows

Even though there are several similarities between the two platforms, there are also some fundamental differences between Windows and Linux. These differences–some obvious and some subtle–are important to understand when supporting both operating systems.  Some of these differences include:

Origins.  Key to the development of both platforms is the origins from which each has grown.  Microsoft Windows Server grew from the world of DOS and Microsoft Windows 3.x.  These were desktop operating systems designed for the visual and logical manipulation of computer applications and files.  Linux, on the other hand, was designed from the beginning to live on the network. It was inspired by the Unix network operating system, with a simple command design based on text rather than graphics.  Text in the form of configuration files and data is the basis of Linux support and administration.

Architecture.  Microsoft Windows is designed as a single platform of common functions and services.  In contrast, Linux is actually just the kernel; it implements multitasking and multiuser functionality, manages hardware resources, allocates memory, and enables applications to execute and interact with the system.  All services and applications in Linux are modular and optional.  Whereas in Microsoft Windows you can disable a service, in Linux you can remove that service “module” altogether, or replace it with a similar module with different options or parameters. 

Another major difference between the two architectures is in device driver support.  In Microsoft Windows it is a typical process of downloading and installing a new device driver for new hardware.  In Linux, the addition of a new device may require an upgrade or recompile of the kernel to obtain the newest drivers available.  This process is often cited as a major learning curve for a Microsoft professional.

File hierarchy.  Windows and Linux use different hierarchical concepts for their respective file systems. Windows uses a volume-based file hierarchy, while Linux uses a unified scheme. Windows uses alphabetic drive letters to represent different devices and different hard disk partitions (i.e. “C:”, “D:” etc.). In Linux all devices, partitions, and directories are attached to the root directory, which is identified by a forward-slash, “/”.

Run levels.  Linux introduces the concept of “run levels” to the world of Microsoft.  In Linux, each run level is a different “operating mode”. This means that it has different settings, independent of other run levels, allowing it to run different tasks and applications as required. Each run level can be individually configured to perform different tasks on start-up.  When Linux is restarted in a different run level is behaves according to the configuration for that level.  This provides a flexible means of controlling how the server acts upon start-up and what services are provided depending on the run level selected.

For a Microsoft professional, it may be helpful to think of the run level system as being similar to the boot selections of “Safe Mode”, “Safe Mode with Networking”, “Command Prompt”, etc. in Windows, only far more flexible.

Graphical User Interface (GUI).  While Microsoft Windows is designed around a visual user experience, the use of a GUI is optional in Linux.  Even though there is much debate in the comparison of the Windows and Linux GUI environments, the key difference is that in Linux the GUI can be disabled to conserve system resources.  The Linux GUI is also heavily customizable, with different GUI platforms and a wide variety of display options available.

Filename extensions.  Unlike Windows, Linux does not use filename extensions to identity a file’s type. Rather, Linux looks at the header content of a file to identity the file type. Filename extensions can be used in Linux to allow for human-readability, but this is not a requirement. Some Linux applications, such as a Web server, may use file naming conventions to identify file types, but that is a factor of the individual application and not the operating system itself.

Also different in Linux is the use of file access rights to determine if a file is an executable. In Microsoft Windows file extensions such as .com or .exe are reserved for executable files.  In Linux, any file can be given executable status so programs and scripts can be identified as executable by the system administrator. One clear benefit to this is file system security; an executable file saved to the file system must be flagged as executable before it can be executed, securing the operating system against many types of script malware.

Commands are case sensitive.  In Linux commands and options are case sensitive.  Linux console commands are almost always entered in lower case.  “exit” and “Exit” are two different commands in Linux, whereas Microsoft Windows makes no differentiation between the two. 

As you can see, there are a variety of similarities and differences between Microsoft Windows and Linux.  While we have touched on only a few of these here, it is critical for the Microsoft professional to understand what familiar concepts do or do not apply when using Linux.  It is here that the Microsoft professional can begin to develop a level of comfort and confidence in the Linux operating system.

In the next article in this series we will begin to familiarize the Microsoft professional with a functional Linux server and how existing skills and knowledge make the learning curve less painful than you might realize.

Tags: , ,

Mike Dailey is an Information Technology Architect and Senior Network Engineer specializing in the design, integration, and management of complex computer network and data security solutions for medium and large enterprises.

Email this author | All posts by Mike Dailey

6 Responses to “Supporting Linux in the Microsoft Enterprise, part 1”

  1. Joel says:

    You made a blunder on the “device drivers” section – you are correct that windows device driver support is a process of downloading, installing, and rebooting, but you mistakenly imply that linux device drivers are enabled by some mysterious kernel compilation process. In actuality, linux device support is included with the OS “out of the box”, as the device drivers are included in the standard kernel modules. In the case of drivers supplied by 3trd parties, then a download/install step necessary, but I’ve never heard of anybody “recompiling the kernel” to install e.g. nvidia or ati video drivers.

  2. Mike Dailey says:

    Thanks for the feedback, Joel.  What I am referring to is not the drivers for typical devices such as video, serial adapters, etc. but the installation of drivers that might not be included in a typical kernel build.  I’ve had to recompile the kernel on occassion to install a fiber channel adapter, for example.  You are correct; the vast majority of typical hardware drivers are included, but some hardware–like my fiber channel experience–will require steps not similar to the typical “download and install” experience familiar with Windows.



  3. ilker manap says:

    In most cases total recompile of the kernel is not required. We are using centos distribution with fibre channel host bus adaptors and 10 Gbit ethernet interfaces. Both of the devices are configured without compiling the kernel. You just have to compile the module for the device for your running kernel.

  4. High Ping Bastard says:

    “Despite what you might have been led to believe over the years, most PC hardware you have around your house will work with many modern Linux distributions without any extra configuration.”

    Linux Desktop Hardware Myths Explored (April 8, 2009, By Matt Hartley)

    So why all the fuss, Dailey?

  5. Mike Dailey says:

    No fuss, but if you read the article again you’ll see that we’re not talking about Linux on the desktop… we’re talking about Linux servers.

    Thanks for the feedback.

  6. High Ping Bastard says:

    Oh I know, I just enjoy it when you put the smack-down on these “linux implementation is almost-automatic” types! Especially after a long day of tinkering y’know

    ps. imagine the history of US avionics following the open-source model… yikes

Leave a Reply