[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: toplevel Makefile bug and simple fix



Raul Miller <moth@magenta.com> writes:

> > P.S. And we really *have* to be able to support stand-alone source
> > distribution of drivers. The Linux kernel sources are still growing
> > expenontially, with a time constant of roughly 18 months. This is
> > mostly due to new drivers. Sooner or later, we will need to address
> > the question of how to distribute drivers independently of the kernel,
> > in source form at the very least.
> 
> XFree86 seems to manage.
> 
> [Yeah, I know, xfree86 isn't bttv...  but I think what you're talking
> about here is a layering problem as much as anything.  Or is that too
> obvious of a comment?]

There are a few sorts of examples that illustrate the difference between
XFree86 and the kernel (it mostly boils down to driver complexity versus
number of drivers supported):

- How do you know whether or not you want to include support for
  a subsystem?
Many people do not have ATM cards; many people do not have I2O subsystems
in their computers; soon, many new computers will not have an ISA bus.
There is very little benefit for these computers to have kernel sources
that include support for all those devices (unless they're developing
binary distributions of the kernel).

- How do you know which devices supported by that subsystem should be
  compiled, and whether into the kernel or as modules?
The number of SCSI and network drivers is huge -- and growing very often.
Most people don't need more than one of each of those, and the number of
people who need more than two is vanishingly small.  It would be nice if
people who didn't need all the drivers didn't need to download them.

Let's take a case study: linux-2.3.26 (freshly unpacked) on my machine.
It's an SMP Pentium II with a BusLogic SCSI controller, an EEPro100 NIC,
some USB peripherals, an ISA sound card, an IDE floppy, and probably a
few other things I've forgotten.

linux/arch has 10573 KB of files; the i386 tree is only 1113 KB of this.
linux/drivers is 39157 KB; of this, I only care about: about 737 KB of the
  2047 KB block directory; about 575 KB of the 4920 KB char directory; the
  misc directory (26 KB); the 64 KB EEPro100 driver and 108 KB generic
  network drivers; parts of the 189 KB parport directory; the 100 KB pci
  directory; the 82 KB pnp directory; about 263 KB for the BusLogic driver,
  and 629 KB for the generic SCSI layer; about 290 KB of the sound
  directory; and the 815 KB usb directory; this totals 3878 KB.
linux/fs likewise has a lot of things I don't compile and will never need
linux/net also has many things I do not need support for

So in linux/arch, this rough calculation yields 10.5% of the arch directory
necessary; in linux/drivers, it's just over 9.9%.  fs and net are probably
more utilized (maybe 30% to 40% on my machine), and the remaining top-level
directories in linux/ are all needed.

There are, of course, technical difficulties in trying to distribute
hardware-specific files separately from the kernel (dependency detection,
hardware detection, patches from one version to another), and developmental
difficulties in ensuring enough people check to make sure things compile
with various subsets of the extension packages, but "it sure would be nice"
to download a .tar.bz2 that's about 5 MB and have it fetch another few
megabytes of drivers automatically once I configure the kernel I want to
build.

-- Michael


Reply to: