A developer’s review of Lineo’s Embedix SDK (Part 3)
Sep 10, 1997 — by Rick Lehrbaum — from the LinuxDevices Archive — 1 viewsThoughts on the kernel configuration process
One problem that arises from the nonstandard kernel configuration process concerns the maintainability of the system over different kernel versions. Embedix SDK 2.0 ships with 2.4.5-pre1 and includes an ECD file for that version. kernel.ecd is over a megabyte long — requiring the user to edit this behemoth when a new kernel is needed, with its added and removed options, would be an obnoxious burden. To address this, Lineo provides the currently poorly documented config2ecd utility, found in the /miscutils directory on the install disk. Given a kernel source tree, config2ecd scans the config.in files, then produces a linux.ecd file. The ability for a user to upgrade to a new kernel is an important one, so I hope to see this tool better documented in future versions of Embedix.
It often happens that an innovative but closed solution to a problem is eventually overtaken by an open-source alternative — even a less-elegant solution will be used if it is open, for the simple reason that it is free and the user can extend it to meet the application's needs if necessary. There are many examples, but one might cite the use of GCC in embedded applications as one case. The market for compilers for embedded systems has been mature for many years — good proprietary tools to meet the special linking and remote debugging needs of embedded system developers have been on the market for well over a decade. GCC, coming from a UNIX background, initially placed little emphasis on these needs. But over time, developers have added them as their applications demanded, to the point where GCC is now often one of the first compilers supporting a new embedded platform. Thus we see how the open source development model proves its superiority over others.
It will be interesting to see whether this dynamic proves true of embedded Linux system configuration as well. One might, for example, compare Lineo's system configuration approach to that of the Emdebian project's CML2+OS. As you may know, CML2 is an attempt by Eric Raymond and others to replace the current patched-together and chaotic Linux kernel configuration system. Despite some clever but gratuitous bloat, CML2 meets the easy requirement of being more elegant than the current Linux approach. It probably will replace the current system over time, or at least continue to be maintained with current kernel versions.
The original motivation for CML2 was to address kernel configuration, but Raymond designed it to be applicable to any rule-based configuration problem. Recognizing this, Frank Smith of the Emdebian project set out to extend it by allowing users to specify the entire system, including deb-based files provided by the Debian project. The clean design of CML2 allows this to be done fairly easily. CML2+OS generates a config file in the same format as the conventional Linux kernel config file (example value: “CONFIG_OS_NETMASK=”255.255.255.0”) to specify non-kernel system options; the kernel config file is simply appended to these OS options. A backend program interprets the OS options in the config file and generates the system based upon them.
Currently, CML2+OS falls far short of the functionality and polish that one finds in the Embedix Target Wizard. Specifically, it is based on a very old version of CML2, and development seems to have stopped nearly a year ago; also, the dependency rules it has defined are quite sketchy. I would not be surprised, however, to find CML2+OS or some other CML2-based OS configuration system in wide use for embedded Linux systems in short order. One need not stipulate that the CML2-based solution must be technically superior, only that it will be widely used because developers find it easier to extend the available open-source solution than to deal with a closed solution that does not meet their needs. At any rate, it will be interesting to see whether the open source model prevails in this case over the admittedly elegant and well-implemented Lineo design.
Story navigation . . .
- Part 1: First impressions
- Part 2: Managing a project
- Part 3: Thoughts on the kernel configuration process
- Part 4: Other Embedix components and features
- Part 5: Lineo's real-time Linux option
- Part 6: Taking Embedix for a spin
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.