DistroWatch Weekly

A weekly opinion column and a summary of events from the distribution world

DistroWatch Weekly

DistroWatch Weekly, Issue 350, 19 April 2010

Welcome to this year's 16th issue of DistroWatch Weekly! Operating systems come in many different shapes and sizes - some are enormous and created by huge multinational software companies, others are tiny and represent the result of a few curious individuals. HelenOS belongs to the latter camp. Although it was started as a research project and is presently still just a tool to learn about system internals, the project has ambition to become a usable, general-purpose operating system. Read on for our interview with founder Jakub Jermar and a first-look review of the latest version. In the news section, Fedora continues its march towards its next stable release, Debian developers elect a new project leader and MOPSLinux faces uncertain future following a sponsor's departure. Also not to be missed: a link to an excellent article on migrating to GRUB 2, and our questions and answers feature which explains the intricacies of the "nice" and "renice" commands. Happy reading!

Listen to the Podcast edition of this week's DistroWatch Weekly in OGG (38MB) and MP3 (40MB) formatsJoin us atirc.freenode.net #distrowatch

Feature Story (by Jesse Smith)

HelenOS - the operating system that launched a thousand processes

On March 10, 2010, the HelenOS project released version 0.4.2 of their operating system. HelenOS sits on top of the SPARTAN kernel, which supports SMP, multi-tasking and multi-threading on a variety of common architectures. One of the developers behind HelenOS, Jakub Jermar, was willing to take time out of his busy schedule to answer some questions.

* * * * *

DW: Could you tell us how the HelenOS project got started? What was the motivation to make a new operating system?

JJ: It got started as an assignment back in 2001 when I was at the university. It was actually several assignments from several subjects that got combined into what later became HelenOS. In 2004 five other students joined me to work on it towards a more complete operating system. Our project was completed in 2006. Since then, some of us continue to work on it as PhD students (we have some research in the area of general purpose operating system verification) and some of us really do it as a hobby. In the past years we delivered support for file systems and very recently also for networking. Progress is rather slow because we have to figure everything ourselves and then implement it, and also because we are actually writing multi-platform code (not the case with Hurd or MINIX).

So the initial motivation was rather an exercise than some vision. At that time, MINIX and Hurd seemed long dead so we felt like the only ones working on a multi-server system. Unfortunately we were wrong.

In the more recent years, we realized that our design allows us to write small software components (e.g. file_bd or the partition block device drivers) and easily combine these components in runtime according to the requested configuration. This is similar to designing software by drawing pictures of interconnected components; we call it "a box principle". Of course, the box principle is enabled by the fact that all the "boxes" communicate using some fixed IPC protocol. Two boxes are happy to communicate with each other as long as the protocol is obeyed, using thus something like box polymorphism, if I may use a POP term.

DW: The download for HelenOS is small, about 5.5MB. What does a person get in that tiny package?

JJ: The image is just a live CD. On the other hand it contains all the commands that we currently have, so even if the system was installed on a hard disk, it would not be much bigger.

There is currently no easy way to automatically install HelenOS on a hard disk. We have an open ticket which we are now trying to get into the Google Summer of Code program. Nevertheless, it should be possible to configure HelenOS in such a way that it boots off a hard disk, but you would have to do it manually.

DW: Is HelenOS related to UNIX? That is, does it have a similar file system, userspace programs, user accounts?

JJ: It is not related. Some pieces and the names of user commands may seem similar. We have one central user process server called VFS which multiplexes file system requests to all actual file systems. We currently support TMPFS, FAT16 and DEVFS. So each file system registers itself at VFS when it starts and from then it can be mounted/used. As of now, HelenOS is a single-user system with no security. We do have a student who is doing his master thesis on this topic (introducing security to HelenOS).

DW: What made you decide to create a microkernel?

JJ: It just seemed more interesting to us and we felt like we could finish the microkernel (not talking about the whole multi-server system here) on time, which was in June 2006.

DW: Can an end-user or administrator make use of HelenOS?

JJ: Very limited use at the moment. I am thinking of some kind of a black box use where HelenOS would be doing some autonomous activity, such as controlling elevators or something like that. When we fix a bug in TCP, it would be possible to use it as a remote terminal, or you can pack it with an ARM processor and sell a Tetris video game. I can also imagine that after some effort, it could work as file server. Our goal, however is to make it a general purpose system, so there is still a lot of work ahead.

DW: Is it possible to compile and build HelenOS on HelenOS?

JJ: Not yet, for example we could make use of a GCC and Binutils port to HelenOS.

DW: Thank you, Jakub, for taking the time to answer questions about the project.

* * * * *

The team's website is of a simple, but elegant design that is easy to navigate and provides information in a clear point-by-point manner. There is a lot of technical information here, especially concerning the design of HelenOS. Visitors to the site will learn that HelenOS contains approximately 325,000 lines of code (mostly written in C) and is currently maintained by nine developers. What is, perhaps, more telling is the lack of documentation on using the operating system. As Jakub mentioned above, there isn't a lot an end-user or administrator is going to do with HelenOS; at the moment it's more for programmers and people who want to learn about kernels. Once I confirmed that HelenOS supports Intel 32-bit machines (as well as ARM, MIPS, PowerPC and Sparc64) I downloaded the ISO image for HelenOS and set it up in a VirtualBox virtual machine.

Booting from the CD briefly shows a GRUB menu in which starting HelenOS is the sole option. A few seconds later the user is dropped at a console that is partly text and partly graphical. Along the top of the screen is a banner which displays the name of the operating system, a series of numbered buttons and a button labelled "kcon". Below the banner is a command line shell (the Brain Dead Shell, in this case), which prompts the user to type "help" for assistance. Being as this was my first experience with a new operating system, I took the prompt up on the invitation.

Typing "help" got me a list of about twenty commands recognized by the system. These are mostly commands for manipulating files and are named similarly to their UNIX counterparts. For example, mount, cp, mv, mkdir, ls and touch will all be familiar to people who are at home with the Linux command line. Aside from the commands listed in the help message, HelenOS also comes armed with about another dozen small applications, which can be found in the "app" directory. There is a simple text editor, a version of the ping command, a program to start the network connection and Tetris.

Aside from the "apps" directory, we also find a "dev" directory with devices, similar to those found in a UNIX system. There is a "cfg" directory, which contains configuration information for the OS, much the same way "/etc" functions on UNIX. HelenOS is a single-user system and the user is able to create or delete files and run commands at will. Most of the commands work well and with the expected results, even if they are in their early stages of development. Turning for a moment to the banner at the top of the screen, clicking on the numbered buttons on the banner switches between virtual terminals. The user can also switch between terminals using the ALT key and the function keys, much the same way a user chooses virtual terminals in Linux.

For me, the most interesting part of HelenOS was kcon, the kernel debug console. Clicking on the "kcon" button or running the "kcon" command opens up a blue screen which looks and acts very much like the bdsh command line. Again, typing "help" brings up a menu of available commands the console recognizes. From here, the user is able to call functions, run tests, view memory and processor information and monitor processes. The kernel console also provides uptime and the ability to halt or reboot the system.

Being a small operating system, HelenOS does not take up many resources. The entire OS runs in less than 64 MB of memory. Since very few tasks are running by default, the system is quick and light. It's also stable. During the four days I played with HelenOS I experienced no application or system crashes. There may not be much here, but what exists appears to be well crafted. There were some things I wasn't able to get working on HelenOS. For instance, while I was able to get loopback networking running, I wasn't able to get a connection to the Internet. Hardware support is limited, so people wishing to play with the operating system are probably best off experimenting with a virtual machine.

And that was about it as far as exploring the system is concerned. There's no package management or user accounts and no compiler (that I'm aware of). Which might raise the question "why?" What's so interesting about HelenOS that we can't get from Linux, BSD or MINIX? Having played with HelenOS for a while, I have two answers:

HelenOS is still in a fairly early stage of development. It's young compared to the other operating systems I mentioned. It's small, clean and has several papers written on it. This makes the HelenOS project a great way for students to jump in and learn about OS design with a minimum of overhead. It's light, highly portable and doesn't have any spare parts left over from a previous decade.

For the same reason people build model cars - the fun of it. Some people stargaze, some collect stamps and some write kernel code. It doesn't need to be practical to have a purpose. Though, given time, HelenOS may become practical too.

At the moment it's unlikely anyone outside of a classroom is going to get excited about HelenOS. But it is an interesting project and, like the brain itself, has all the makings of an educational toy.

Miscellaneous News (by Ladislav Bodnar)

On Fedora's desktop features and release delays, Debian's new project leader, uncertain future of MOPSLinux, moving to GRUB 2

With the beta release of Fedora 13 last week, the distribution's last public test build before the final release in about a month from now, many Linux news sites and blogs have taken a closer look at the next version of what is arguably the most innovative and experimental Linux distro today. Among them was Rahul Sundaram who has compiled a summary of the most interesting new desktop features in Fedora 13: "Shotwell Photo Manager - awesome program. It has replaced both gThumb and F-Spot. Unlike F-Spot which pulls in a lot of Mono dependencies and requires you to import the photos into its library, Shotwell in its latest version included in Fedora 13 beta can do photo management without importing them. It is written in Vala and super fast. Mono status - there has been some confusion over the status of Mono in Fedora. When Mono was originally included in Fedora, Beagle, Tomboy and F-Spot were the default applications. Beagle was too slow and had many bugs and was dropped from the default list soon after. Tomboy was replaced by Gnote in Fedora 12 and Fedora 13 replaces F-Spot by Shotwell. Mono hasn't been included by default in the Fedora live CD for the past several releases ever since Fedora 10 release."

Those who follow the development of Fedora will have already observed that the project's development releases are almost always delayed - usually by one week. What are the reasons? And what can be done about it? John Poelstra has written an article entitled Shipping Fedora On Time where he argues that these delays affect too many people to ignore them and suggests solutions that could ensure timely releases in the future: "If we really want our releases to be on time we must give interim milestones and tasks just as much value as the big ones. If we plan to compose a release candidate on Thursday so QA has six days to test before the Go/No-Go meeting, we should make a bigger deal when the release candidate isn't ready until Monday or Tuesday. If history shows that we rarely if ever have a solid release candidate on the day it is scheduled we should start earlier than Thursday to create it. We already have a 'Test Compose' milestone scheduled a week earlier to address this, but it suffers from the same approach."

* * * * *

The Debian project has a new chief. Stefano Zacchiroli (pictured on the right) has been elected as the new project leader for the next one-year term, replacing the outgoing Steve McIntyre: "In accordance with its constitution the Debian project has elected Stefano Zacchiroli as Debian project leader for the 2010/2011 term. Stefano has been a Debian developer since March 2001 and is a long-term contributor to several core services such as Debian's package tracking system and its quality assurance team." An Italian, currently living and working in Paris, Stefano Zacchiroli published his first Bits from the DPL post last weekend: "A big THANK YOU goes to all the people that took part in the recent elections: as I've mentioned in a recent blog post I'm very proud of our project and of its democratic processes, let's not forget that Debian and its constitution are quite peculiar in that respect in the distribution ecosystem." However, the hot topic of the next stable Debian release (code name "Squeeze"), only received a passing mention: "Now let's go and squash some RC bug, Squeeze is getting closer and closer."

* * * * *

MOPSLinux is a relatively new entry on the Linux distro menu, but the (mostly) Ukrainian developers have done an excellent job turning Slackware Linux into a somewhat more user-friendly distribution, especially on the package management level. Unfortunately, shortly after the release of version 7.0 some two weeks ago, the distribution's web site announced a complete halt of development and support (link in Russian) due to a sponsor's withdrawal from the project. But all is not lost. According to this story by NIXP.ru (in Russian), a Russian Linux news site, a new company might soon take over the development and support of the distribution - albeit under a different name, since "MOPSLinux" is already a registered trademark. Expect a new announcement to be published shortly. While the project's web site is entirely in Russian, the distribution itself does support English (as well as Russian and Ukrainian), right from the system installer. Perhaps the distro's most notable feature is its advanced package manager called "mpkg", together with a graphical package management front-end and easy package update feature.

* * * * *

As Linux evolves, new technologies come our way and sometimes catch us by surprise. Such is probably the case with the ongoing wave of bootloader migrations - from GRUB 0.9x series to GRUB 2. Debian GNU/Linux was one of the first distributions to adopt the new GRUB, with Ubuntu "inheriting" it from upstream in the current stable release, but it has now also been spotted in Arch Linux and Gentoo Linux, among other distributions. Since GRUB 0.9x is no longer in development, it is likely that all major distro projects (with the notable exception of Slackware Linux, which continues to use LILO) will eventually switch to the new version of GRUB. Unfortunately, GRUB 2 is a very different beast from the original GRUB 0.9x, so anybody who spends time installing multiple distributions on the same hard disk or who administers Linux boxes should make some effort to get acquainted with this highly important component of an operating system. Last week, IBM developerWorks published an article entitled Migrate to GRUB 2 by Roderick W. Smith: "The tools used to boot Linux are changing. Specifically, the Grand Unified Bootloader (GRUB) is now officially in maintenance mode only, and GRUB's developers have abandoned the original GRUB in favor of an entirely rewritten package, known as GRUB 2. Discover GRUB 2's new capabilities and how to use it." An excellent overview that includes related links for further reading.

Questions and Answers (by Jesse Smith)

Process scheduling with "nice" and "renice"

In-a-hurry asks: I want to change the scheduling of processes. How can I use a different kernel scheduler?

DistroWatch answers: Changing the way your Linux box schedules tasks is a little bit like working with explosives. It sounds fun and nearly everyone wants to do it, but it's likely to do more harm than good unless you really know what you're doing. The kernel developers are an intelligent bunch and have spent a lot of time and effort trying to get the kernel scheduler to work really well across many different types of machines and situations. Usually you don't need a different kernel scheduler to alter the performance of your processes, what you're probably looking for are the "nice" and "renice" commands.

The "nice" command kicks off a process with an adjusted priority. Typically, this is done to reduce the task's priority so that it gets out of the way of more important processes. For example, you can run the command

nice top

You'll notice that the "top" command will show up with a nice value of ten and a priority ten points higher than many other processes. Dealing with Linux priorities can be confusing because a higher number means a lower real-life priority. The administrator has the ability to assign a better (lower) nice value to tasks. The following command, when run as the administrator, will launch the "top" command again, but with a better priority of -10. Acceptable niceness values range from -20 to 19.

nice -n -10 top

But what if you already have a process running and want to alter its priority? For that, there is the "renice" command. The renice command takes a new priority setting and a process' ID number. For example, this command will adjust the priority of the process with PID number 8538:

renice -n 15 8538

Again, higher numbers reduce real-life priority, so we've marked process 8538 as being less urgent than other tasks. The administrator is the only user able to raise the priority of a task, preventing regular users from getting into a scheduling war.

If you want to get more performance out of your machine, there are a lot of ways to do that. Reducing the number of services you're running and compiling your software with various optimizations is usually a good place to start. If you insist on getting down to the kernel level, it is possible to change the focus of the scheduler or replace the kernel's scheduler. There's an interesting talk on installing and using the BFS scheduler on Ubuntu here and a project dedicated to allowing admins to change their kernel's scheduler at runtime here. The kernel's build configuration tools come with a "Processor type and features" section which allows the user to select supported processor types, SMP options and pre-emption models, all of which can alter the performance of the machine and the responsiveness of running processes. It's probably not something you'll want to dive into unless you're already familiar with compiling your own kernels, but it's there for the curious to experiment with.

Daisuke Aoyama has announced the release of FreeNAS 0.7.1, a FreeBSD-based operating system which provides free Network-Attached Storage (NAS) services: The FreeNAS Development Team is pleased to announce the availability of FreeNAS 0.7.1. This is a maintenance release of FreeNAS 0.7. It improves the functions and the translations of WebGUI. Also it introduces a few new features. New features: AIO (asynchronous I/O) support in CIFS/SMB - Samba; ATAPI CAM with iSCSI target (device pass-through); custom script in Email Report; serial console support for headless servers/devices; a raw device, ZFS volume for the extent of iSCSI target; iSCSI removable device and control (DVD/tape emulation). Upgrade notes: before upgrade you must always backup your configuration file, your system disk and all your data." Read the rest of the release announcement which include detailed release notes.

Andrew Gillis has announced the release of VortexBox 1.3, an easy-to-use Fedora-based music server and jukebox: VortexBox 1.3 released today. This release includes lots of new features and bug fixes. We have the latest version of SqueezeBox Server and all the latest versions of the 3rd party projects that make up VortexBox. We have also added Subsonic, a new GUI that allows you to manage your music collection and stream it to iPods and Android players. New features include: Logitech SqueezeBox Server 7.5.0 pre installed and configured; Subsonic music interface for remote playing; edit your tags and cover art using the Subsonic web GUI; latest version of TwonkeyMedia Server; many bug fixes including USB backup manager; file sharing fix for OS X 10.6.3; auto re-index after rip for Sonos players. To upgrade your existing system you can use the updater in the VortexBox GUI." Here is the brief release announcement.

Matias Fonzo has announced the release of Dragora GNU/Linux 2.0, a 100% "libre", general-purpose distribution built from scratch: I am pleased to announce the final version of Dragora GNU/Linux 2.0. Dragora is a powerful and reliable GNU/Linux distribution created from scratch with the intention of providing a stable, multi-platform and multi-purpose operating system. Highlights since RC2: the installer includes a better detection method for the CD-ROM, the option to install GRUB in a root partition is back again. The installation of the packages is slightly faster with clzip 1.0 and lzip 1.10. This release comes with Runit as default init scheme, Linux-libre kernel 2.6.32.11, OpenSSL 1.0.0, GCC 4.4.3, and more. Added cURL and Expat to complement Git." Read the rest of the release announcement for additional details.

Warren Woodford has announced the release of antiX MEPIS 8.5, a lightweight MEPIS variant designed for older computers: Nine months since the release of antiX M8.2, the antiX team announce that antiX MEPIS 8.5 - a fast, light, flexible and complete desktop and live CD based on SimplyMEPIS and Debian 'testing' - is now available in full and base versions. This release defaults to a fully customised IceWM desktop (Fluxbox, wmii and dwm are also installed) using a SimplyMEPIS 2.6.32 kernel, tweaked MEPIS Assistants for better compatibility in antiX and the usual range of applications for desktop use. Iceape for Internet needs, AbiWord and Gnumeric for office use, XMMS and Google's music manager for audio, gxine, MPlayer and GNOME MPlayer for video.... antiX works on computers with as little as 64 MB RAM." Read the rest of the release announcement which includes a detailed list of changes since the previous stable release.

Oracle has announced the release of Oracle Enterprise Linux 5 Update 5, a rebuild of Red Hat Enterprise Linux 5.5 with Oracle-specific fixes and enhancements: "Oracle is pleased to announce the general availability of Enterprise Linux Release 5 Update 5 for x86 (32-bit) and x86_64 (64-bit) architectures. This update includes the following kernel/driver changes: fix qla not to query hccr; update rds to 4.0-ora-1.4.2-10; revert return code check to avoid EIO; check to see if hypervisor supports memory reservation change; add entropy support to igb; convert ENETUNREACH to ENOTCONN; add Xen pv/bonding netconsole support; shrink zone patch; fix aacraid not to reset during kexec; fix failure of file creation from hpux client; FP register state is corrupted during the handling a SIGSEGV." Read the rest of the release announcement for a complete list of changes.

Ben Zhao has announced the release of CDlinux 0.9.6, a small live CD featuring the Xfce desktop, several popular desktop applications and a handful of administration tools: "CDlinux 0.9.6 released. This release is a major upgrade. Almost all components are upgraded to their latest stable versions, like Linux kernel 2.6.33.2, X.Org Server 1.8.0, Mesa 7.8.1. Thanks to the open source ATI and Intel drivers, we now have fairly good 2D/3D support on almost all ATI and Intel chip-based video cards. PAE is also enabled in this release. As a result, we can support up to 64 GB of RAM now. While the downside is that you can't run CDlinux 0.9.6 on older CPUs (5×86, K6, Pentium, etc.) any more, not even the Mini edition. Package upgrades: GTK+ 2.18.9, Qt 4.6.2, JRE 6u19, Firefox 3.6.3, Midnight Commander 4.7.0.4...." See the release announcement and release notes for further details.

Ryan Pisani has announced the release of MythDora 12.23, a Fedora-based Linux distribution designed to simplify the installation of MythTV on a home theatre PC: "MythDora 12.23 has been released. There are a few changes from 10.21 but mostly on the cosmetic side of things. We're now using the stock MythTV theme out of the box, as well as stock paths. General features: Fedora 12 + updates; MythTV 0.23-rc2; Linux kernel 2.6.32.11; LIRC 0.8.6. DVD features: GNOME, KDE, LXDE, Xfce and Ratpoison desktops; NVIDIA driver packages 195, 173 and older 96; Handbrake 0.9.4; live CD features: Xfce desktop environment; NVIDIA 195 driver package; ability to change time zone in first boot configuration. Changes in MythDora 12: the auto-installation method has been removed; the front-end now heavily relies on the time zone of the system matching the back-end...." Read the rest of the release announcement for further details.

FreeSentral. FreeSentral is a full IP PBX (Internet Protocol Private Branch Exchange) consisting of a Linux distribution, an IP PBX and a web graphical user interface for easy configuration. It is based on Mandriva Linux.

Peppermint. Peppermint is a lightweight, fast and user-friendly, Lubuntu-based distribution, with some components borrowed from Linux Mint. It is being designed for enhanced mobility, efficiency and ease of use.