Diary


August 20th, 2004

The 081704a release of SBUML has a new scheme for allocating IP addresses to virtual machines. IP addresses are now assigned from a preallocated pool of addresses, which by default is 10.25.79.1 through 10.25.79.254. The address pool can be easily changed by editing the contents of the file sbumldemo/global-data/addr_pool. Machines that are running the new guest scripts can have their IP addresses changed by issuing a command like sbumlipaddress m1 auto. Unlike the old scheme, the new scheme will not grab address on the local subnet unless they are given explicitly or are listed in the addr_pool file. This avoids the risk of grabbing an IP address of another machine that does not respond to ping because of firewalls, timeouts, power downs, yet-to-be-assigned-by-DHCP addresses, etc. The scripts still handle old snapshots that are running the old guest scripts, but now output a warning message that an address on the local subnet has been commandeered.

In addition, the updated scripts can now do the IP address assignments asynchronously. Therefore, many machines can now be restored at the same time, and the scripts can insure that each gets its own unique address. Aside from IP addresses, there are a few other aspects that require coordination from machines that are restoring simultaneously. The problem of assigning unique machine directories was fixed in the version of SBUML released in June. Maybe the only other major aspect that needs to be fixed is the automatic downloading of snapshots. For example, if a user clicks on a web page snapshot link twice, SBUML will simultaneously download it twice into the same directory, which surprisingly often proceeds without problems. (For web page snapshot that have already been downloaded, clicking on the link multiple times works correctly.) I am eager to fix the remaining issues because I've seen new SBUML users eagerly (or impatiently?) start restoring additional snapshot while waiting for another snapshot to finish downloading or restoring. It would be good to fix bugs that new users are likely to encounter first. Plus it is just cool to restore a dozen virtual machines and watch them all pop up within a few seconds with correct configurations.

The new release also contains other changes to make the output from commands a little easier to understand. For example, SBUML now checks for the utility programs upon which it depends before trying to use them. Some of the needless scrolling during command operations has been removed, so messages that are potentially more useful are not scrolled off screen. Warnings about compatibility issues are reported when old snapshots are restored.

The kernel binary in this release is the same as in the previous release. Now that the command scripts are running better, I look forward to spending some time with the kernel to clean up the debugging messages that are packed inside and investigate issues for running SBUML on 2.6 hosts. Jeff's patch for the "tracing myself" bug that changes kill to tkill does make SBUML work on 2.6 hosts. Saving and restoring snapshots again works fine, but snapshots made on 2.4 hosts do not restore on 2.6 hosts. I am very interested in understanding why and whether a clean fix is possible.

July 2nd, 2004

Finally posted the source code today, as well as a page about compiling and debugging SBUML. I also have discovered one easily reproducible bug in the kernel patch. Snapshots that have the Basilisk Macintosh emulator running inside hang on restore, a bug that should be fun to track down because of the way that Basilisk uses threads and segfaults as part of its normal operation. So far this is the only known bug in the kernel patch.

June 30th, 2004

Several people in the lab I work at have installed SBUML and it seems to be working pretty well. One person had trouble because the netcat (nc) utility was not installed, which was easily fixed by installing it with apt-get. However, the output from SBUML did not make it clear what the problem was. So one easy to achieve goal for the next release will be to have SBUML check for the utilities it depends upon and politely notify the user when they are missing. Another easily fixed problem was how the Japanese language option breaks assumptions about how to parse output from ifconfig. Putting "export LANG=C" in the scripts solves that problem. The fact that some versions of "ping" take a "-w" parameter for setting a timeout and others don't made SBUML's method of setting IP addresses fail. This whole method needs to change, if not in the next release, then soon after.

June 16th, 2004

This diary is inspired by Jeff Dike's diary on the UML project website. While working on SBUML over the past 2 years, his diary has been the easiest way to keep up with the most important UML developments and get a sense of where the project was heading. I hope I can post enough to this diary to give SBUML users the same sense of bearing as various parts of the project are updated and revised.