From time to time you buy new equipment, and, of course, you want it to work on Linux. It’s not that the free community can’t or doesn’t want to support devices - experience shows that it can and does. The point is greedy and stupid manufacturers who do not want not only to write drivers for their hardware, but even to open the specifications for their devices. Typically, if the hardware doesn't run on Linux, then that manufacturer is usually not worth considering at all.

This post talks about Linux and installing hardware in Linux. Installing hardware on Linux is easy, and below are resources to help you do it.


Where can I find information on compatibility of devices and peripherals with Linux?
http://linux-wless.passys.nl/ - extended database of WiFi cards for Linux.This is the most comprehensive resource for wireless support. network cards in Linux, you can look by manufacturer - and if it is supported, then the name of the driver is immediately given.

http://www.sane-project.org/sane-mfgs.html - list of scanners in Linux that are supported by the SANE subsystem.List of scanner models that work in Linux depending on the manufacturer. Gradations of compatibility: full support, partial, basic, no support. It also indicates what backend is required for the device to operate.

http://openprinting.org/printer_list.cgi - a database of working printers in Linux supported by the CUPS printing subsystem, which provides drivers for printers in LinuxLinux distributions.Convenient search by printer models and manufacturer. Gradations of compatibility: works, almost works, works to a limited extent, ballast.

Databases by device category
http://www.linuxcompatible.org/compatibility.html - a database of all Linux-compatible devices, from sound cards to printers and scanners. There are gradations of compatibility: it works perfectly, it works for the most part, some functions work, ballast. The database is very extensive and is updated from time to time by the site’s creators. Either way, a wonderful resource.

http://kmuto.jp/debian/hcl/ - base of devices supported by kernels 2.6.15 and higher. We simply copy the output of lspci -n from the console and get information about the support of the hardware located on the motherboard.

http://www.linux-laptop.net/ - The most comprehensive resource on running Linux on laptops. The page provides a classification by manufacturer, followed by links by model to specific pages users telling what and how they did to get the functionality of their laptops. Most information is in English, but other languages ​​are also present.

http://start.at/modem - a large resource for supporting such defective devices as winmodems. It turns out that you can also extract something from this ballast: an impressive list of supported devices is provided.

http://www.phoronix.com/lch/ - user database of supported devices. It's starting to fill up, you can take part in it too. There are RSS feeds both for a specific type of piece of hardware and for all of them at once.

- A wonderful resource on Linux devices with links to HOWTOs and “how to set up”. On the page there is a classification by device type, followed by links to how to set it up and what problems may arise. There are also links to general information according to these devices. Very informative. There is a news feed for the site (new documentation).

http://cdb.suse.de/?LANG=en_UK - list of devices compatible with SuSE Linux. Updated database of devices compatible with SuSe Linux. As a rule, these devices also work in other distributions.

http://www.linuxtested.com/ - compatibility and operation of devices across distributions. The site contains information about testing devices in the following distributions: SuSE, Redhat / Fedora, TurboLinux, Debian, Mandrake.

http://www.linux.org/hardware/ - hardware running on Linux. The list is not complete, but it can be useful - there is information about exotic hardware for which there is support in Linux.

http://www.linux-drivers.org/ - Links to many resources on Linux compatibility. A large number of links to resources and hardware support in Linux.

http://hardware4linux.info/ - linux-compatible directory hardware , divided into categories: “works straight out of the box”, “works with modification”, “unknown”, “partially works” and “does not work”. A fairly large and constantly updated database of devices.

http://www.linmodems.org/ - database on support for such vicious devices as Win modems. In them, all the main activities are transferred to the driver, written for you-know-what-system. As a result, there are almost no “brains” on the device, just as the manufacturers of such devices do not have them. Through the efforts of free programmers, many of these devices can be made to work in Linux.

( 2007-08-15 )

To decide whether a particular computer can run Linux perfectly or not, you need to check all its components - the video card, sound card, printer, scanner, digital camera and other devices for compatibility with Linux.

Of course, over the last decade, support for various hardware in Linux has improved markedly and now you have a fairly good chance of buying a computer and running almost any distribution on it without any problems. However, there is still equipment that currently not supported.

Today, almost all equipment works well, but you should be wary of equipment that is controlled by programs rather than buttons. Because the programs are most likely written for Windows and sometimes Mac OS X.

Even when the manufacturer declares Linux support- be very careful. Most likely you will have to go to the manufacturer’s website, where it is very likely that you will find not entirely up-to-date information. Searching the Internet will also not be very useful, since it will ultimately yield many pages with outdated or not entirely correct information in your case.

Below is a list of some online resources, the information on which is regularly updated and is quite complete and detailed.

Video cards

If you want to check if your video card is supported, start with the X.Org website, there is a list of supported video cards. You can also check the manufacturer's website. This is true, for example, for video cards from NVIDIA and ATI. In addition, there is the Nouveau project, which develops open drivers for NVIDIA cards, and its brother - the Avivo project, which develops open drivers for ATI cards. However, none of these projects have yet presented an official release.

If you don't know what is better to choose - open drivers or proprietary ones - there are several ways to make this choice. Firstly, you can make a choice based on your philosophy, but most likely the choice will be made based on their functionality. The main problem with open-source drivers is limited or completely absent support for 3D capabilities, while proprietary drivers are slow and (especially ATI) unstable.

Another option is the policy of the distribution you are using. Commercial distributions like Xandros and Linspire usually come with proprietary drivers already included, while Ubuntu uses open source ones. True, Ubuntu also has Restricted Device Manager, which makes it easy to install proprietary drivers on the system. Fedora 7 is one of the first distributions to use Nouveau drivers instead of proprietary NVIDIA drivers whenever possible.

Sound cards

Unfortunately, there is no single site with detailed information, but you can check out the list of Linux-compatible cards on the Linux-Sound website. You can also get information from the Linux Audio Developers mailing lists.

Another good source is Soundcard Matrix on the ALSA project website. If your card is in this matrix and the Notes column is empty, your card is guaranteed to be supported.

Printers

You are guaranteed to work with any printer that supports Universal PostScript. However, if you want to get more detailed information start with the Printer Compatibility Database, which is part of the OpenPrinting project (Formerly LinuxPrinting.org).

The Printer Compatibility Database is an almost perfect source of printer information. It contains almost all known printers. For each printer, it sets its own level of support: Good, Mostly, Partially and Paperweight :). The database also describes which driver works with which printer, and a detailed description of the settings for full use printer. As an alternative, you can choose a printer for your tasks, using part of the same database. All information is based on user reports..

Scanners

If you use a multifunction printer as a scanner, then the printer database can help you (see the previous chapter). However, the main source of scanner compatibility information is the SANE Project Information Retrieval Service, which will help you find suitability information specific model for use on Linux. If you encounter problems, it is best to ask questions on the SANE project forum.

Digital cameras

Modern digital cameras have abandoned the closed protocols of the past in favor of the open one - USB, the support of which is very low in Linux. high level. However, if you still need to make sure that your camera will be supported, turn to the gPhoto project, which has a database of more than nine hundred titles. Another source is Hubert Figuiere's database, which contains detailed information not only about supporting cameras, but also about configuring the system to use them.

Wireless adapters

A few years ago, the main gap in device support was modems. These days these are wireless adapters. In addition, the constant release of new models makes support even more difficult. For example, two related models may have fundamentally different firmware and, accordingly, require different drivers.

The only timely updated website with information on wireless adapters- , maintained by Jean Tourrilhes and sponsored by Hewlett-Packard. The information on the site is posted quite chaotically, but you can figure it out if you want.

If your adapter is not supported, you may be able to launch it using , or, for Broadcom adapters, - . Both of these projects are actually wrappers for drivers from Windows or Mac OS X.

The downside to both programs is that you need to use lspci to get the Bus ID of your adapter. Therefore, before you buy anything, look at how many adapters similar to yours are supported by ndiswrapper.

Laptops and others mobile devices

Windows and Linux are the most popular operating systems on the world market. The debate about which one is better has not subsided since the advent of the systems. There are many adherents, as well as opponents, for each of them. Of course, both Linux and Windows have their advantages and disadvantages, which some users are willing to put up with, while others are not. In this article we will try to once again pit these two giants against each other and finally find out which is better: Windows or Linux. Go!

Any platform has its advantages and disadvantages

Let's start with Linux. In general, this OS is less popular than Windows; working with it, as a rule, raises more questions among users. It is worth noting that Linux is more likely aimed at professionals, rather than at ordinary users. It is those people who want to get the widest possible possibilities when working with a computer who become the most ardent fans of this system. Now let's look at each of the advantages of Linux in turn.

The main and significant advantage is free distributions, the choice of which is quite extensive. Linux is the basis on which developers “hang” GUI for the convenience of users. All distributions are official and completely free, which means that you have the opportunity to get at your disposal a proven and reliable OS, which is a licensed product. In this regard, Windows has nothing to brag about. The most popular distributions can be called: Ubuntu, Mint, Fedora, Mandriva - this list goes on and on. Choose what you like best.

Free software

As you already understand, Linux is a real find for those who want to use high-quality, free licensed product. The choice of programs is quite extensive, but you still won’t be able to use the most popular tools for free.

Variability

Linux is very flexible system, which allows you to do literally anything with yourself. This makes this operating system an excellent choice for programmers. Computer professionals can do whatever they want in Linux, creating a wide variety of software to solve a variety of problems.

Design

Although the beauty of Linux does not lie in the graphical interface, one cannot help but note the stylish and modern design of some distributions, which many will like.

Performance

Linux OS is absolutely not demanding on hardware and works excellently even on the weakest machines. Experiment with distributions and find the one that gives you the best features with maximum performance.

Now about the disadvantages. Linux, for all its functionality, cannot be called an entertainment system. This OS is definitely not suitable for fans of computer games. In addition, you will have problems using popular software products, and instead you will have to use their analogues, which few people are delighted with. To summarize all of the above, we can say that the Linux OS is really good for computer professionals, to whom it gives extended capabilities work, and for those who need a free licensed operating system and software products. At the same time, it is difficult to really call Linux good choice specifically for home use.

It's time to talk about the mastodon and almost absolute leader of the operating systems market - Windows. This product is from Microsoft used on the vast majority of devices around the world. There is probably not a person in the world who has not encountered this OS. Some people like it, some don’t, but everyone has worked with it. Now let’s move on to analyzing all the advantages of Windows and try to reveal the reason for such success of this product.

Prevalence

The popularity of Windows has led to the appearance of a huge number of manuals and articles with answers to all questions related to working in the system or correcting errors in it. Although this OS is paid, there are not so many users of licensed versions. Precisely pirate Windows versions installed on almost every computer in the CIS countries due to their availability.

Simplicity

A huge advantage of this OS is that it is convenient for both simple users and advanced users. Windows provides the ability to work in command line, make changes in the registry and so on, but for those who do not need all this and who do not understand it, this OS offers a clear and pleasant graphical interface, which is not difficult to understand.

Games

Where would we be without this? Quite a lot of users regularly or occasionally play computer games. The undoubted advantage of Windows is that almost all existing PC games are compatible with it. This means that if you have a Microsoft product installed, you get access to huge selection computer entertainment.

Software

The vast majority of utilities and applications are created specifically for the Windows OS, which is very good for any user. All the most popular software products are implemented on Windows, and this gives you very wide possibilities when working with your computer.

Compatibility

Unlike Linux, you are unlikely to find any device that does not have Windows drivers. By choosing a product from Microsoft, you can say that you eliminate all problems with device compatibility, since all manufacturers primarily focus on creating products that are compatible with Windows.

Design

Recently, the OS from Microsoft can boast of these. Design latest versions very distinctive and original. The huge tiles of version 8 were not to the taste of many, but the developers’ decision to combine new and old designs in version 10 of the system satisfied many users. Windows 10 very organically intertwines the classic features embedded in old versions with the most modern and newfangled developments.

Microsoft Office

Anyone who has worked in Libre Office on Linux understands that they have not come up with a better solution text editor than Word. This utility is truly indispensable in our time, and compared to it, Libre Office looks like one complete misunderstanding, working with which brings nothing but torment.

As for the disadvantages, the main disadvantage of Windows is that this OS costs money. This problem is especially relevant for the CIS countries. All users constantly download pirated versions that are not verified and reliable, and this, in turn, greatly damages the reputation of the Windows OS and the Microsoft developer company. Another drawback, which to some extent can be associated with the first, is frequent system crashes. Perhaps every Windows user is familiar with the “blue screen” or, as it is also called, the “screen of death”. Whatever one may say, the reliability and stability of this system leaves much to be desired. In conclusion we can say that strong point Windows is that this system is for everyone. Everyone will find something of their own in it, regardless of their own skills or assigned tasks. We can say that this is what makes this product so popular all over the world.

As you can see, it is not possible to make a clear choice in favor of any of the systems discussed in the article. All I can advise you is to try to work with both one and the other, and then decide what is best for you. After all, everyone has their own ideas about good design, functionality, performance and other aspects in which comparison can be made. With all the advantages and disadvantages of each operating system, it is impossible to give an objective verdict, since in the end it all comes down to elementary “taste.” This article is designed to give you the necessary food for thought, and it’s up to you to decide which is better: Windows or Linux.

Leave your review of the article and write in the comments your opinion about which of the reviewed operating systems you consider the best and why.

  • In contact with
  • regular form

    It is enough to understand once what a blue screen of death or bsod is, as you like. Blue screen This is the inability to read the file. Moreover, it is completely impossible due to the absence of this file or due to the lack of a path to it. Now I’ll explain it easier. A file may be missing for two reasons. First. Damage to the hard drive, which is only possible on an old computer. Second. Driver mismatch. For example. A hard drive with a wide cable or harness, the so-called IDE interface, on which we install a new operating system that does not have such drivers. In this case, you need to take care and download the drivers separately and have them during installation. Another option. On a sata hard drive, or new hard drive install an old operating system, for example windows xp, Zver, and so on. These operating systems do not include satov drivers. The result is a screen of death. There are no other options and cannot be. If the drivers fully match, everything will be fine if you don’t deliberately mock the computer and don’t pull the plug from the socket to please your crazy. In this case, you will ruin your hard drive within a few starts and then you will receive a death screen due to an unreadable hard drive. It is better not to repair faulty clusters or places in the hard drive and not even waste time. The Winchester is a very complex device that requires respect and care. Take care of your computer. Don’t try to experiment, otherwise you’ll end up with so much pain and financial costs that it’s easier to buy a new computer.

    Author)))) What would you know. Just for wild beginners and for home use Linux is perfect. At least because it doesn’t allow you to delete your system folders in the usual way for Windows. Secondly, the same Mint Mate is very similar in the arrangement of buttons and program menus to Windows. Thirdly, what is missing from Linux for beginners? Specialized programs - that’s how they should be written. Fourthly, Linux is bad technical support? I beg you)))) On the forums they will chew it out in a way that they don’t teach pensioners in computer courses. And they won’t laugh at the same time.

    You must first work in LeebreOffiese to properly evaluate this program.
    I graduated from LeebreOffiese Institute, made charts and wrote my diploma there. 4.5 years of practice.

    All markers have different tastes and colors.
    Or someone can say with 100% confidence that the sea is still better than a lake, and the ocean is better than a river.
    Who is trying to prove what to whom? Unless you convince yourself once again...

26.02.2007 Alexey Grinevich, Denis Markovtsev, Vladimir Rubanov

If you go back to the late 90s and plunge into the world of operating systems of that time, then hardly anyone will doubt the unchallenged reign of Unix-compatible systems. Everything is on the side of Unix - the family of these operating systems is studied at universities, hundreds of thousands of applications have been created for it, it is successfully used in various sectors of the economy, a lot of books and documentation have been written about it. True, you cannot buy Unix, but you can buy IBM AIX, BSD, HP-UX, Sun Solaris, etc. At the same time, additional effort is required to make a program created, say, for AIX, work under Solaris. Various Unix clones turned out to be poorly compatible. Similar problems exist today for the Linux OS.

To solve the infrastructure problem of poor compatibility between different versions of Unix, in 1985, IEEE began work on a standard to ensure software portability. In 1990, the IEEE 1003 standard, also called POSIX, was released, which regulated software interfaces(API) and a list of Unix clone commands. However, for players in the Unix market, unification has created complex political problems: any decision, any choice between alternative options to reach agreement leads to the fact that one vendor's solution is recognized as “more standard” compared to another. As a result, the standard is replete with ambiguous statements like “in this case, one of two things is possible.” alternative options behavior" and white spots like "the standard does not regulate the behavior of the function in this case." In the end, fragmentation became one of the main reasons for the defeat of the Unix world. Players in this market competed not only with other types of operating systems, but also with each other, introducing proprietary extensions and proprietary interfaces, limiting the range of possible applications to any one clone.

The Linux OS, which appeared in the early 90s, incorporated code created within the GNU movement and absorbed the main ideas of Unix, thanks to its openness and independence, became a universal compromise. Its code was implemented from scratch, not relying on any implementation, but only on the text of the POSIX standard. As a result, the system turned out to be POSIX-compatible from the start, and its independence made it possible to combine the efforts of various Unix market players in the fight to “return” the lost segment of PC operating systems. However, the problem of fragmentation remains relevant for Linux: the presence of competing distributions raises concerns about the likely repetition of the fate of Unix.

At first glance, the danger of fragmentation itself looks rather illusory - in fact, there is a common code, most distributions work based on the same kernel, the same libraries, which largely determines compatibility. It would seem that applications should remain functional and compatible between different versions of Linux. But this is not confirmed in practice. Along with the fragmentation of the Linux distribution market in terms of approaches and additional functionality, there are significant imbalances in the support of various clones even for common and standard applications- used in various distributions different versions kernels and system libraries(primarily glibc). This leads to the fact that the composition and behavior of the system interfaces provided by the system to applications change from distribution to distribution. In order not to repeat the sad experience of Unix clones, in 1998, within the framework of a specially created organization Free Standards Group (now the Linux Foundation), work began on the LSB standard (Linux Standard Base - “the basic family of Linux standards”). Thanks to the efforts of the X/Open, IEEE and ISO organizations, which opened the POSIX standard and some of the tests for free access, the foundation was laid for the standardization of Linux.

But what exactly and why needs to be standardized? Is it really the same open source is not itself a uniform and open standard?

Application compatibility issues

How do the differences between Linux distributions in practice and to what extent serious problem? Let's give an example. IBM's commercial offerings are based on five product lines: DB2, Websphere, Rational, Tivoli and Lotus. Practice shows that supporting all five lines for one Linux distribution costs millions of dollars annually, which goes to developers and testers responsible for supporting applications for a specific Linux distribution. Consequently, those distributions are supported for which the profit from the sale of products exceeds these millions; in fact these are only distributions of SuSE and Red Hat. This creates a situation of inconsistency - what works on some distributions does not run on others.

A completely different situation is observed for Sun Solaris. First of all, Sun Microsystems guarantees that a program compiled for Solaris 2.6 will run without recompilation and under version 10. Sun developers make great efforts to achieve this; Every time the code is changed, a set of more than 2,400 applications of various purposes and composition is run. Moreover, if someone discovers that an application stops working due to incompatibility between Solaris versions, Sun assumes the responsibility and expense of correcting the inconsistency. In the case of Linux OS this work for a long time was not maintained, applications and distributions lived their own separate lives. The saddest thing about this is the lack of a universal way to write a program in such a way as to guarantee portability. The efforts of the Linux Foundation consortium, representing the interests of the main players in the Linux market, are aimed at solving this problem.

Linux structure

Linux is often referred to as just its kernel, but there are many things that a kernel should not do. Working with documents, sending mail, processing XML, drawing windows - for all this there are special libraries included in almost all distributions. These libraries, one way or another, lead to a call to the kernel, but problems and errors can arise not only in the kernel, but also in the libraries themselves.

There is an opinion that if a program stops working when changing the Linux distribution (or its version), then, having the source codes, it is very easy to correct it, and therefore there are no compatibility problems. Before discussing whether this is true or not, let's first consider the structure of the Linux OS.

"Generalized" model of the system on Linux based presented on

Rice. 1. System model based on Linux OS

Each specific Linux system is created to run one or more applications, but the application code itself is not enough to extract the service users need from the hardware - most applications use calls to library functions in their work. The LSB Core 3.1 standard defines the following system libraries: libc, libcrypt, libdl, libm, libpthread, librt, libutil, libpam, libz, libncurses. On modern Linux systems, the interfaces to these system libraries are implemented by the glibc, Linux-PAM, zlib, and ncurses libraries, which actually implement more interfaces than those defined in LSB Core.

Based on the degree of interaction with the Linux kernel, the functions of system libraries can be classified as follows:

  • the implementation of the function is completely contained in the library, and the kernel is not used (for example, strcpy, tsearch);
  • the library implements a trivial “wrapper” for calling the corresponding kernel interface (for example, read, write);
  • The implementation of the function contains both calls to the kernel system interfaces (and possibly several different ones) and part of the code in the library itself (for example, pthread_create, pthread_cancel).

The Linux kernel itself contains many exported entry points, but the vast majority of them are internal interfaces for use by modules and subsystems of the kernel itself. Front end contains about 250 functions (version 2.6). Of these, for example, the glibc 2.3.5 library uses 137 in its implementation.

Configurations

Under configuration The system part of the distribution is understood as a combination of the kernel version (including individual patches), versions of system libraries, their build parameters and the architecture on which it all works. On An example of the assembly configuration of two hypothetical distributions, which are a collection of versions of components and patches, is given. Between versions of components, new functionality is added, and obsolete interfaces and functions are removed. So, in this diagram it is easy to see that since distributions 1 and 2 use different versions of GCC, source code compatibility between them is partly lost - not everything that was compiled using gcc 3.4 can be compiled using gcc 4.0 without modification.

Rice. 2. Example of distribution build configuration

Distributions

By the address lwn.net/Distributions/ you can find a list of well-known Linux distributions (at the time of writing there were 542) open to the general public. This does not include versions made for internal use individual enthusiasts, as well as various companies, departments, etc. According to the GNU license, you can take an arbitrary distribution, make modifications to it (at least to components covered by GNU) and distribute it further.

Distributions can be classified according to a number of criteria.

  • By basic manufacturers. For example, Red Hat, Slackware, SuSE, Debian, Asianux, Mandriva, Gentoo represent the main “branches” of the Linux industry. These distributions are not descendants of the others (although there are some historical dependencies between them). They can be considered strategic directions for development in Linux in general. Most of the remaining distributions clearly belong to one of the mentioned branches - mostly inheriting the source code and applications and adding specific functionality.
  • By localization. In many countries there is a local Linux manufacturer (for example, in Russia everyone knows the ASP Linux and ALT Linux distributions).
  • By application. Distributions for embedded use in mobile devices; distributions running without support file system; lightweight versions for use on PDAs; portable versions for running from limited media (Linux on a floppy disk, Linux on a CD, etc.).
  • By specialization. Distributions to support a specific hardware architecture (AlphaLinux with support for Alpha processor architecture, ARM Linux with support for ARM, etc.).

Linux Build Procedure

It may seem that to achieve reliability and compatibility at the behavioral level of system library interfaces, it is enough for testing to be carried out by the developers of the kernel and libraries, but this is not so. Already at the level of system library interfaces, there are a lot of dimensions that make almost every Linux system unique in terms of quality. The behavior of application interfaces is determined by a combination of libraries, kernel, and hardware. In turn, the kernel and libraries are determined by their version (including official or unofficial patches and modifications) and, very importantly, the build configuration.

The variety of different components included in Linux and the many dependencies between them can be illustrated by the procedure for building a kernel. The Linux From Scratch project contains the sequence of steps required to build a Linux distribution from scratch. Simplified LFS distribution build sequence Linux versions 6.0 looks like this:

1. Binutils-2.15.94.0.2.2 - Pass 1
2. GCC-3.4.3 - Pass 1
3. Linux-Libc-Headers-2.6.11.2
4. Glibc-2.3.4

87.Util-linux-2.12q
88. Boot configuration
89. Linux-2.6.11.12 - Kernel

The kernel is assembled at the very last step using the binary utilities assembled before. It is important to consider the versions of the component listed in each list element. Replacing one version of a component with another is not always trivial - assembling the system may be impossible due to the absence or change of any function, or it may be complicated. Assembly of many components requires additional steps, for example, the instructions for assembling flex for this distribution contain a note :

Flex contains several known bugs. These can be fixed with the following patch:
patch -Np1 -i ../flex-2.5.31-debian_fixes-3.patch

The assembly process includes the assembly of compilation tools, which also undergo significant changes over time. Even basic Linux components are often outdated. Thus, the gcc 4.0.0 compiler version is not suitable for building the 2.6.11 kernel (although they are contemporaries) and requires the use of a special patch to eliminate this incompatibility.

Trapped by addictions

Fragmentation at the library level is a major problem in the modern Linux world. The frequent release of new versions of Linux libraries is usually considered a good thing and, indeed, this is the only way to quickly apply and test new ideas and make the latest achievements of “engineering” available: sometimes dozens of versions of the same library are in wide use. At the same time, an integral distinctive feature The development of individual components of the Linux OS is its decentralized nature. Often, new versions of various components released almost simultaneously are obviously incompatible, which means that it is completely impossible to ensure adequate testing of various combinations of libraries for compatibility and guarantee stable operation of the system for all possible combinations. As a result, the entire burden of problems falls on the user who decides to install a program or library that is clearly not guaranteed to work in the environment existing on his machine, and this situation occurs quite often.

The category of problems associated with incompatibility of library versions is called dependency hell. en.wikipedia.org/wiki/Dependency_hell). What problems might a user encounter when installing a new library on their version of Linux? In this case, applications that were running the previous version may no longer function correctly because those applications may have relied, either explicitly or implicitly, on certain bugs and side effects that were present in the older version. The opposite situation is also quite real, when a new version it just contains a new error. But the real problem arises when the system must run several different applications that rely significantly on different versions of the same library; It may turn out that it is simply impossible for these applications to work together. Sometimes it is possible to have multiple versions of the same library on the system, and this will be a completely safe solution, but this is not at all recommended in the case of the glibc library.

The main evolutionary path to achieving compatibility between different Linux distributions is standardization. A mature and fully supported standard will reduce the cost of ensuring the portability of Linux solutions, which will contribute to the growth of the number of applications for this platform, and therefore the popularity of Linux in general. Today, Linux Standard Base acts as such a “saving” standard.

LSB is the main standard defining compatibility requirements for Linux systems. Basic information on this standard has already been published, for example, in the work, which, however, covered old version standard and the role of kernel interfaces was somewhat exaggerated. In reality, the LSB standard does not specify kernel interfaces, but defines higher-level application interfaces implemented by various libraries. LSB is not trying to be a replacement for existing standards, but rather builds on all the major standards already established in Linux. It captures versions and subsets of component standards to ensure consistency, and complements the descriptions of those interfaces that are present de facto in most Linux distributions but are not included in any existing standards. The main part of the LSB standard consists of requirements for system interfaces that must be supported by all Linux distributions (a kind of “common denominator” of all Linux systems). In this part, LSB heavily references the POSIX standard.

The main difference with LSB is that application developers can target one platform, say LSB 3.1, and this will be enough to work on all LSB 3.1 compatible distributions. The same applies to distribution providers: once compliance with LSB 3.1 is achieved, the distribution automatically supports all applications compatible with it. For example, IBM, as part of the Chiphopper initiative, provides hardware solutions running only LSB-compatible distributions. Largely thanks to the activity of major players, major distribution providers have already achieved LSB certification or announced their intentions to become certified ( www.linux-foundation.org/en/LSB_Distribution_Status).

Currently, the main weakness of the LSB standard is the lack of tests. There are cases when the interface described in the standard works differently, and yet the system successfully passes certification. This is explained by the fact that there is simply no test for this interface, or it is too weak to fully test the functionality of the interface. It is very appropriate to quote Ian Murdoch, the creator of Debian and today the director of technology at the Linux Foundation: “It is known that an interface standard is only as good as the test coverage that verifies compliance with that standard.”

The Open Group has opened some of its POSIX tests for inclusion in the LSB certification test suite. The LSB set includes free tests of the standard GNU C++ Runtime Library Test Suite, and tests for libgtk and libxml are adapted. The Linux Foundation is considering a buyout to open and include various paid test suites in the LSB.

They are also working on solving this problem in our country. Thus, on the basis of the Institute of System Programming of the Russian Academy of Sciences, the Linux OS Verification Center was created, where the open test suite OLVER is being developed, which is planned to be included in the official LSB tests. A cooperation agreement has been concluded between the Center and the Linux Foundation, within the framework of which work continues to improve the LSB test coverage and the development of a new infrastructure for the development of this standard is underway.

Conclusion

To prevent the fragmentation that has already occurred with the Unix operating system, measures are needed to ensure distribution compatibility - at least within some subset of functionality. The portability of applications within this subset will make it possible to unite Linux as a single platform and significantly reduce the cost of developing and supporting applications, which should have a positive impact on their number and the popularity of Linux solutions in general.

Today, the main portability initiative is the open LSB standard, adopted by leading distribution (Red Hat, SuSe, Mandriva) and application manufacturers (MySQL, RealPlayer, SAP MaxDB). Behind this standard is the powerful Linux Foundation consortium and its active members such as IBM, Intel, HP and Oracle, which allows us to hope for its successful development and widespread implementation in real life. Thus, in the form of the LSB standard, a reliable foundation has been laid for a single, unfragmented Linux platform, ensuring portability of applications based on both source code, and in binary form.

However, even very good standards remain only good wishes, as long as there are no convenient and reliable ways to check compliance with them. That is why improving the quality of LSB test coverage is one of the most important priorities of cooperation between the Linux OS Verification Center and the Linux Foundation.

  • detecting inaccuracies and errors in the text of the LSB and related standards and reporting them to the original developers for changes in future versions;
  • development of formal specifications in the SeC language (a specification extension of the C language), which will reflect the requirements of the LSB Core 3.1 standard for 1530 Linux interface functions;
  • development of open test kits for functional testing various Linux systems for compliance with the requirements of the LSB Core 3.1 standard (the behavior of Linux system application programming interfaces is checked).
  • The test suite is based on the automatic generation of tests from formal requirements specifications and corresponding test cases using UniTESK technology.

    By the end of 2006, the main phase of the project was completed; all results of the project are published on the Center’s website. Now the project is in the stage of supporting and expanding the range of target platforms (combination of hardware architecture with a specific distribution).

    * Flex contains several known bugs. They can be fixed with the following patch...


    Linux system compatibility issues