---

The Wonderful World of Linux 2.2 — ‘revised millennium penguin’ version

by Joseph Pranevich

Well, the long wait is over and 2.2.0 has finally appeared
for the masses. For the sake of history, Linux 2.2 was officially
released on 1/25/99. As of this writing, the mainstream press has
not caught on to the release so it is hoped that this will not get
out too late to be useful to those folks. At this time, no
distributions have announed dates as to when they will begin
shipping 2.2.x kernels but it is reasonable to expect that there
will be mainstream 2.2.x options by March. Submitted for your
approval, my final i386 change summary. (I’ve now had three
separate “final” versions, but I really mean it this time.) This
document is intended as an expanded laundry list of new features
and additions to the 2.2.x kernel, a major milestone in the history
of Linux. — Joseph Pranevich

Please note that this document does not cover all the new
hardware that Linux supports. Many devices, such as scanners and
printers, are handled exclusively in user space. Other devices,
such as video cards and mice, are handled by a combination of user
and kernel drivers. If you don’t see a device class that you are
interested in listed in this document, it is quite likely that
Linux 2.2 supports it — just not necessarily using the kernel to
do so.

Also, I do not claim that everything in this document is PC. I
believe that I am being fair and I have pulled some puches with
respect to how I phrased certain portions. If you think that I
should reword a certain portion so as not to offend someone, let me
know but I will not make any promises.

1) Chips Galore

The world of Intel chips is a fast and interesting thing to
follow, if you have nothing better to do. Merced, Celeron, MMX…
the names of Intel technologies float past to be replaced by new
cutting-edge technology. (Whether or not these technologies are
worthwhile is a matter that I’m not even going to begin to try and
debate.) In addition, AMD, Cyrix, and other companies have become
solid competitors in the market and each have their own little
optimizations, quirks, and bugs. It’s a mess, to say the least.

Linux 2.2 will be the first stable Linux to support options for
the various non-Intel processors in the kernel configuration tool.
Perhaps even more importantly, Linux 2.2 (and later revisions of
2.0 for obvious reasons) supports bugfixes and workarounds for
widespread processor bugs including the infamous F00F Pentium bug.
Other bugs that can’t be worked around, such as an AMD K6 sig11
bug, are reported during startup.

Merced hasn’t arrived yet and probably isn’t immediately
forthcoming, but Linux 2.2 has already been ported to Sparc64,
Alpha, and other 64-bit platforms so the infrastructure for a
64-bit native kernel is already happily in place. (There are, of
course, other obstacles that would have to be overcome before
Linux/Merced could be released but having a 64-bit ready kernel is
an important step.)

Multiple-Processor machines now will operate much more
efficiently than they did in Linux 2.0 with issues such as the
global spinlock removed. Up to 16 processors are supported (the
same as with 2.0) but the performance difference should be amazing.
Also, there is now greater support for the IO-APIC on Intel boards
that will make SMP generally better supported. And finally, it is
now possible to specify a multi-processor configuration without
ever leaving the kernel configuration tool.

In terms of other ports, Linux 2.2 will feature improved support
for a large number of ‘workstation’ machines such as Sparc,
Sparc64, and Alpha machines. As for ‘desktop’ machines, Linux 2.2
has been ported to Motorola’s m68k and PPC processors and now can
be expected to run on many of these platforms, including the
Macintosh. (with varying degrees of hardware support, of course.
Support for m68k Macs in particular is not ready for prime-time.)
Linux is also moving to processors, such as ARM that are
increasingly popular for embedded systems.

On somewhat of a tangent, there is continuing work to support a
subset of the Linux kernel on 8086, 8088, 80186, and 80286
machines. This project will never integrate itself with
Linux-proper but will provide an alternative Linux-subset operating
system for these machines.

In terms of memory consumption, the average Linux 2.2 setup will
require more memory than Linux 2.0. (Although a larger number of
components can now be modularized or compiled-out to allow a system
administrator more flexibility if memory is tight.) There is some
debate as to what is the lower limit in terms of functionality with
a text-only system but it should still be possible to have only 4
megs of RAM in many situations. (8 megs are still recommended.) On
the bright side, Linux 2.2 includes a number of new optimizations
that should actually improve the performance of machines with at
least 16 megs of RAM. The more, the merrier.

2) System Busses and Assorted Ilk

Although somewhat less crucial and cutting edge, Linux 2.2 will
support a larger proportion of the existing x86 computers with the
addition of complete support for the Microchannel bus found on some
PS/2s and older machines.

In addition to hundreds of minor patches to the bus system
(including many new PCI device names), larger improvements have
taken place. The PCI subsystem, in particular, has undergone
several major changes. Firstly, the PCI device reporting interface
has been changed and moved to allow for easier addition of new
information fields. This particular change doesn’t spell much of a
difference for an end user but it makes the lives of developers
much easier. Additionally, it is now possible to choose whether you
want to scan your PCI bus using your compatible PCI BIOS or through
direct access. This allows Linux 2.2 to work on a larger set of
machines as several PCI BIOSes were incompatible with the standards
and caused booting problems.

Sadly, there is still little kernel support for Plug-and-Play
ISA devices. While that would be a great addition, there are some
problems with the currently proposed systems that will need to be
resolved sometime in 2.3 before inclusion. Fortunately enough,
there happens to be a great user-level utility, isapnp, for setting
up PnP devices that requires just a tad more work than we’d like
but gets the job done in true Linux fashion.

Laptops and many workstations can also benifit from improved
support for power management, including worksrounds for a number of
incompatible BIOS implementations. Also new in 2.2 is the ability
to use some functions of an APM BIOS on multi-processor
systems.

3) IDE, and SCSI, and USB… Oh my!

As far as Linux IDE is concerned, not much obvious has changed
for Linux 2.2. The most obvious change is that it is now possible
to load and unload the IDE subsystem as a module, just like SCSI.
(This also has the added bonus of allowing one to use a PnP-based
IDE controller.) For less bleeding-edge machines, the updated IDE
driver now supports older MFM and RLL disks and controllers without
having to load an older version of the driver. Linux 2.2 now also
has the ability to detect and configure all PCI-based IDE cards
automatically, including the activation of DMA bus-mastering to
reduce CPU overhead and improve performance. And finally, more
drivers have been developed for controllers that are buggy or
simply different. It’s amazing how even excellent things can
continue to get better.

Elsewhere in the IDE world, parallel port IDE devices have
become more common and are now supported by Linux 2.2, for the most
part. It is a good assumption that many devices that are not
supported currently will be added as 2.2 progresses.

The SCSI subsystem’s main improvements have been the addition of
many new drivers for many new cards and chipsets. Too many, in
fact, to even begin to name here.

PCMCIA adapters (or PC-card slots, as they are called now) are
not supported in the standard Linux 2.2 but are supported by an
external module provider. Thus, while not in the kernel, PCMCIA
support will be included in most distributions.

IRDA support has also been added to the kernel although many
controllers are not yet supported. As this feature was added only
in the closing days of Linux 2.1 development, it may not be as
generally usable as other, more mature, portions of the kernel.

Alas, there is some bad news here. Despite ongoing efforts by
several parties to finish USB support, no support was included in
time for a Linux 2.2 release. Several prominent developers have
looked at USB support and it is likely that there will be some
support before we get too far into Linux 2.2.x. (Alternatively, USB
support could be provided through an external source in the same
way that PCMCIA support is now.)

4) Ports: Parallel and Serial

Nothing much new on this front, Linux has always had incredible
support for these basic building blocks. The parallel port driver
has been rewritten with cross-platform issues in mind and thus what
was once just a ‘Parallel Port’ is now a ‘PC-Style Parallel Port’
Functionality-wise, the only obvious change is that you can now
effortlessly share a single parallel port device with multiple
device drivers. (Note however that the naming convention used to
label parallel ports has changed so you may find that your lp1 has
become your lp0. Distributions should allow for this change
automatically however.)

Serial support is chugging along as well as it always has but
with one notable difference. Previously, a serial device such as a
modem involved two devices, one for call-in and one for call-out.
(ttyS and cua respectively) As of Linux 2.2, the two are combined
in one device (ttyS) and accessing the cua devices now prints a
warning message to the kernel log. On the bright side, Linux 2.2
includes support for having more than 4 serial ports, it allows
serial devices to share interrupts, and it includes a number of
drivers for non-standard ports and multi-port cards. My only
complaint with serial support is its lack of support for the
standard methods for modules to pass device parameters at
module-load time via the modules.conf file and kmod. (Instead,
these parameters are set using the ‘setserial’ command. Somewhat
yuck.)

It should also be mentioned that Linux 2.2 will support newer
UART chips than 2.0 which may translate into higher transfer rates
using newer modems.

5) CD-ROMs, Floppies, and removable media

Thankfully, the hodge-podge of hundreds of CD-ROM standards has
solidified behind the ‘standard’ of ATAPI CD-ROMs. This reprieve
has given developers time to completely rewrite the CD-ROM driver
system to be more standardized in terms of support. Small, quirky
differences between the individual drivers have now all been fixed
for better support.

Rewritable CD-ROMs aren’t supported nearly as well as one would
like, unfortunately. SCSI CD-ROMs are well done (and most IDE
drives use SCSI-over-ATA, the SCSI-emulation driver). With other
rewritable CD-ROMs, your mileage may vary.

Floppies are working as well as ever. There are new developments
in terms of large volume floppies and it remains to be seen whether
or not all of these will be supported. Those devices that
communicate using ATAPI (a large number of them, actually) are
already supported to some degree.

IOMEGA’s zip drive, an increasingly popular storage solution, is
fairly well supported under Linux 2.2. These beasts come in three
versions: SCSI, ATAPI (IDE), and Parallel. Under SCSI and ATAPI,
the Zip drives are supported just as any other disk would be. The
parallel version of these drives actually use a sort of
SCSI-over-parallel protocol that is also supported in Linux 2.2.
(Other IOMEGA solutions such as DITTO drives may also be supported
using the ftape drivers.)

DVD drives are already supported, to some degree, under Linux as
they represent themselves largely as ATAPI drives. (SCSI DVD drives
may not, but they will probably work using the excellent SCSI
CD-ROM driver.) Unfortunately, this does not necessarily mean that
all will be rosy in the Linux/DVD world as Linux does not currently
support any DVD-centric filesystems that have been proposed nor are
any user-space tools developed to display DVD movies and etc. Once
the standards stabilize a bit, it is highly likely that the
requisite parts will be added to the Linux kernel sometime during
the 2.2.x cycle, following the initial release.

Other removable media may or may not be supported under Linux
2.2. If the device connects through the parallel port, it is
possible that it is supported using one of the Parallel Port IDE
device protocol modules that are included in the kernel.

6) Glorious Sounds!

At long last, the sound code has been partially rewritten to be
completely modular from start to finish. Distributions will be able
to more easily include generic sound support out-of-the-box for
their users as well as making it easier for the rest of us to load
and configure sound devices. (Especially pesky Plug-and-Play ones.)
Lots of new sound devices are supported as well and it looks like
this is one area where Linux will really improve in the next
year.

One very notable defect here is the remaining lack of support
for the PC internal speaker, if only for completeness. Then again,
Windows 95/98 doesn’t do it either so who am I to judge?

7) Video4Linux

Linux 2.2 now has amazing support for a growing number of TV and
radio tuner cards and digital cameras. This is a truly bleeding
edge addition to 2.1’s roster so there may still be some
outstanding issues but it is reasonable to assume that they will be
fixed in time. In my humble opinion, this is just an amazing area
for Linux to be in at all.

8) Back me up, Scotty!

Linux 2.2’s backup and tape device subsystem has not changed
much since the 2.0 release. More drivers for devices have been
written, of course and substantial improvement has been made for
backup devices that work off of the floppy disk controller
(including the IOMEGA DITTO).

Rewritable CD-ROMs have become a popular solution for backing up
data and they are supported under Linux 2.2 There are still
outstanding issues in this regard, see my note above on CD-ROMs for
details.

9) Joysticks, Mouse, and Input Devices

Joysticks are better supported in 2.2 including a large number
of new joysticks and joysticks with an inordinate numbers of
buttons. Likely, your joystick will work under Linux 2.2.

Mice in 2.2 aren’t really different from mice in 2.0. (As in
2.0, there are some inconsistencies regarding mouse support that
will be addressed in the future. For the most part, mouse control
is provided through a daemon external to the kernel. Some mouse
drivers however deliberately emulate a Microsoft standard mouse.
The reasoning behind this is obvious but it would be nice if it was
decided on in one way or the other.) It should be noted that, while
not solely a kernel issue, mice with Microsoft’s spinning wheel
extension are supported in recent versions of the XFree86, Linux’s
most popular GUI. (However many Linux applications have not been
designed to take advantage of this feature.)

Additionally, several other input devices are now supported
under Linux 2.2 including some digitizer pads. If your devices
emulates a mouse (as many do) then it is already supported by Linux
2.2 (and, in fact, Linux 2.0).

10) Video

Perhaps the most surprising and cutting-edge addition to the
Linux kernel version 2.2 is what is called the ‘frame-buffer
console’ driver (or ‘fbcon’, for short.)

Previously, the Linux kernel (for Intel-based machines) only
understood and manipulated the video devices in text mode.
Graphical support was to be provided by two other systems:
‘svgalib’ for console-based graphics, and a specialized X Server
for window-based graphics. This kludgey system often required
configuration information to be repeated and each system supported
only a limited slice of the myriad of video devices in common
use.

Since this addition is rather new, it remains to be seen whether
it will truly replace the previous and long-standing duality.
Unfortunately, it could be nearly a year after Linux 2.2 ships
before this new system could be robust enough to support the cards
and technologies that we already take for granted as working. My
personal opinion is that this is the right idea, but I’m going to
withhold judgment until we see exactly how far Linus and the
developers decide to take this feature.

As an added side-effect of this new feature, primitive
multi-heading has been added into the kernel for some devices.
Currently, this is limited to some text-mode output but it is
reasonable to assume that this very new addition to the Linux
kernel will mature somewhat during the 2.2.x and 2.3.x cycles.

It should also be mentioned that it is now possible to remove
support for ‘virtual’ terminals as provided by the kernel. This
allows very memory-conscious people to save just a tad more.

Although unimaginable to the desktop user, Linux can now work
even better on systems that do not actually include any sort of
video device. In addition to being able to log in over serial or
networked lines, as Linux 2.0 and previous Linuxes allowed, it is
now possible to redirect all the kernel messages (usually sent to
the console directly before any hardware was initialized) to a
serial device.

11) Networking: Ethernet, ISDN, and the lowly modem.

I don’t have a huge amount of experience here; I’ve been using
the same network cards in all my machines for several years. But,
it doesn’t take an Alan Cox to see that the number of supported
Ethernet and ISDN devices supported in Linux 2.2 has risen sharply.
I have been told that newer solutions such as cable modems are
supported, also.

My only gripe in this regard is the continued non-support of
so-called ‘Winmodems.’ Not that I blame Linux for their absence,
making modems that are 80% software is just a dumb idea anyway, but
the idealist in me hopes that some day these pesky devils will be
supported like their less stripped cousins.

12) Amateur Radio people are Linux people, too.

Since before Linux 2.0, Linux has been one of the few desktop
OSes to include native support for computer-based amateur radio
people. (Not that I actually know what that entails but it seems to
be a more popular option outside the US.) Linux 2.2 adds support
for NetROM and ROSE amateur radio protocols. The basic AX.25 layer
has also been materially enhanced.

13) Filesystems for the World

Linux 2.2 has a wide array of new filesystems and partition
types for interconnectivity. In addition, many of Linux’s supported
filesystems (including those I haven’t listed here) have been
updated with a new caching system to markedly improve performance.
(In fact, not updating the drivers wasn’t even an option if one
wanted them included in Linux 2.2.)

For the Microsoft nut, Linux will now read NTFS (Windows NT)
drives and Windows 98’s FAT32 drives (also used by some later
versions of Windows 95). Linux 2.2 also understands Microsoft’s
Joliet system for long filenames on CD-ROMs. And finally, Linux
also understands a new type of extended partition that Microsoft
invented. Drivers to read and write Microsoft and Stacker
compressed drives are being developed but not yet included in the
kernel. There is continuing work with NTFS to allow for both
reading and writing, but that support is still experimental.

For Mac connectivity, a HFS driver for reading and writing Mac
disks has been included. HFS+ and MFS (ancient floppy format) are
not yet supported. Macintosh partition tables can now also be read
by the kernel; this allows Mac SCSI disks to be mounted
natively.

Sadly, OS/2 users will still not be able to write to their HPFS
drives. Some updates have been made to the HPFS driver to support
the new ‘dcache’ system but not the complete overhaul that some
were hoping for. There is ongoing work outside the kernel to
include read/write support in this driver but those changes did not
make it into the initial release of 2.2.0.

If there are any Amiga users left (and there are), they will be
pleased to know that the FFS driver has undergone some minor
updates since 2.0. This is especially useful as the new generation
of PPC Amigas will continue to support this format.

For connectivity to other UNIXes, Linux 2.2 has come forward in
leaps and bounds. Linux 2.2 still includes the UFS filesystem which
is used on BSD derived systems, including Solaris and the free
versions of BSD. Linux 2.2 can now also read the partition table
formats used by FreeBSD, SunOS, and Solaris. For SysV-style UNIXs,
Linux 2.2 features a somewhat updated version of SysVFS. Linux 2.2
can also read the Acorn’s RiscOS disks. And finally, Linux 2.2
features a somewhat updated version of the ever-popular Minix
filesystem, which can be used for small drives and floppies on most
UNIXes. With so many incompatible formats (and Linux 2.2 reading so
many of them), it’s amazing anyone ever got any work done.

In other news, support for ‘extended’ drives (the format used by
much older versions of Linux) has been removed in favor of the
‘second extended’ filesystem. (This shouldn’t matter to many
people, ‘ext2’ is far superior to its predecessor.) With the
increased support of initial ramdisks, a ‘romfs’ has been created
which has very minimal overhead.

While not quite a filesystem, Linux 2.2 includes enhanced
support for stretching a filesystem across several disks
transparently. At present, this support can be used in RAID 0, 1,
4, and 5 modes as well as a simple linear mode.

14) Networking II: Under the Hood

On the protocol front, a lot has happened that I simply don’t
understand completely. The next generation Internet protocol, IPv6,
has made an appearance. SPX, a compliment to IPX is new, as well.
DDP, the protocol of choice for older AppleTalk networks has also
been improved. And, just as you would come to expect by now, the
existing protocols have been improved, as well. I only wish I had
the need to use some of this stuff…

On the low-end front, not much has changed. PPP, SLIP, CSLIP,
and PLIP are all still available for use. I guess some things don’t
need much improvement. (Although each of those drivers have been
updated in one way or another.)

The list keeps going, however. Linux 2.2 will have an excellent
new networking core, new tunneling code, a completely new
firewalling and routing system called ‘ipchains’, support for
limiting bandwidth consumption, and a ton more. It’s just amazing.
I wish I could keep track of it all. (But, who am I kidding?)

It should be noted that file and printer sharing protocols have
also been improved and markedly enhanced. SMB, the protocol for
accessing Windows-based shared filesystems has been somewhat
improved with bugfixes and the like. If you are a fan of NetWare
(some people are…), you’ll be happy to know that Linux 2.2
supports a large number of improvements in this area, including
access to two different kinds of NCP long file names. Trusty NFS
has also been improved, both at the server level and the client
level. And finally, those eggheads over at CMU have been hard at
work developing the new distributed network filesystem, Coda. This
filesystem supports a large number of highly-requested features
including disconnected operations for laptops, an advanced cache
system, and security improvements.

On somewhat of a tangent, Linux 2.2 also includes a driver which
will allow one to share (and remotely mount) whole disk images over
a network.

15) Not Everyone Speaks English.

Linux 2.0 is a very international OS with support for
international keyboards and the like. Linux 2.2 adds to this and
other internationalization features the ability to load some
Microsoft/UNICODE codepages for translating filenames into Linux’s
native system. (Which is UTF8, another encoding of UNICODE)
Currently, the only filesystems that use these translations include
Microsoft’s VFAT and Microsoft’s Joilet ISO 9660 (CD-ROM
filesystem) extension.

16) Unix98: The Next Generation

Linux 2.2 will be a more ‘standard’ UNIX in a number of ways.
The most pronounced of these ways to the end user will be the
addition of UNIX98-style Pty devices using a new filesystem
(devpts) and a cloning device to provide the functionality.

17) And, finally…

In addition to those noted above, there are a large number of
other drivers and things that just don’t fit in anywhere but should
still be noted. So, in no given order, the oddball updates of Linux
2.2:

The loopback driver, which allows disk images to be mounted and
manipulated just like any regular drive, has been improved in a
number of ways. Of these improvements, the most notable difference
to users will be its increased support for encryption and the
mounting of encrypted hard disks and disk images.

A driver for accessing your computer’s CMOS memory has also been
provided in Linux 2.2 which may be useful in some applications.
(Sadly, a similar driver to access your BIOS’s flashable RAM did
not make it, it will still be necessary to boot from a DOS floppy
to flash your computer’s BIOS to a new version.)

And finally, in the past, Linux used a half-user/half-kernel
method of loading in and out drivers (called ‘modules’) called
‘kerneld’ This method was good but inefficient. Linux 2.2 has
removed kerneld and replaced it with a smaller all-kernel solution
called ‘kmod’.

————

This is the ‘revised millennium penguin’ version of this
document (1/26/99) and is really just a minor update over the last
three final versions. Linux 2.2 is out now, so obviously no new
features will be added and I should be safe.

As always, I can be reached at [email protected].

Thank you, and Good Night.

Joseph Pranevich