OS/161 Update Recommendations

about OS/161 | about System/161 | project news | publications | license | credits
download | guides and resources | documentation | for instructors | bugs | mailing lists

While the recommended version for new installs is always the current version, updating an existing install can be more or less urgent depending on circumstances.

OS/161 2.x

The current version of OS/161 2.x is 2.0.3. This contains mostly minor fixes and improvements relative to 2.0.2. The chief item of interest is a deadlock detector implementation students can plug their locks into. Updating is not urgent. 2.0.2 also contains mostly minor fixes relative to 2.0.1, the main item being a script for running tests using Python and pexpect. Updating is not urgent. In turn, 2.0.1 contains further minor fixes relative to 2.0. None of these are critical, but one is fairly significant: the code for attaching and detaching threads from processes no longer kmallocs while holding a spinlock, which makes a mess when doing virtual memory. Updating (from 2.0 or 1.99.x) is probably worthwhile, in which case you should update directly to 2.0.3.

If you are still using 1.x, updating to 2.0 is recommended; in addition to a general redesign and modification, there are lots of new things and lots of assorted fixes. However, keep in mind that it's a large update: 2.0 represents six years of development and prereleases since the last 1.x version.

Owing to critical bugs, anyone still using a prerelease version before 1.99.05 should update to a newer version as soon as possible.

1.99.06 is not linked on this page because it was released only to our students. Use 1.99.07 (or later) instead.

System/161 2.x

The current version of System/161 2.x is 2.0.8. 2.0.8 contains the fixes for problems that were introduced in 2.0.7 and 2.0.5; if you downloaded 2.0.5 - 2.0.7 you probably want to update to 2.0.8.

2.0.5, in turn, introduces a couple useful features (e.g. some options used by the new test scripts shipped with the latest OS/161) so updating is worthwhile. 2.0.4 contains mostly minor fixes; 2.0.3 contains a couple bug fixes and more documentation of kernel profiling; there is no rush to do either of these updates. However, 2.0.2 contains a fairly critical bug fix for gdb thread handling relative to 2.0: without it gdb itself becomes unstable. Update as soon as possible. (There are a couple other minor fixes but otherwise 2.0 and 2.0.2 are identical.) 2.0.1 turned out to be a brown paper bag release, so let's just forget about it; use 2.0.2 instead.

There are not that many changes from 1.99.08 to 2.0; most notable is the introduction of a disk161 utility for manipulating disk images. Updating is encouraged. Go straight to 2.0.2 and skip 2.0 itself.

If you are using a version before 1.99.08, the headline feature of 1.99.08 is that it's much faster -- as much as 3-4x on cpu-intensive workloads. Updating is recommended for all users.

If you are using the network device: as of 1.99.08 it now polls for external events much less frequently. If this causes trouble, please contact me right away.

OS/161 1.99.07 and up requires System/161 1.99.07 or higher owing to the addition of memory barrier handling.

Toolchain for 2.x

The current version of the 2.x toolchain is 2.1. This updates to gcc 4.8, binutils 2.24, and gdb 7.8. There is no pressing reason to update from the version 2.0 toolchain if works for you; however, the version 2.0 toolchain is very old and doesn't even compile on some platforms.

Using gcc 4.8 (toolchain 2.1) requires OS/161 1.99.08 or higher, as the attempts I'd made in the past to address the gcc inlining mess proved inadequate and the resulting patch was fairly invasive. If you don't want to update OS/161 yet you can use the old gcc with the new binutils and gdb.

There is in general no need to update bmake unless the copy you already have stops building after an OS update. In that case, check here for a new version, or go to the master site at ftp.NetBSD.org.

OS/161 1.x

The current version of OS/161 1.x is 1.11. This contains minor fixes relative to 1.10. There is no particular rush to update; however, since 1.11 was released in 2005, probably everyone has already.

If you are still using 1.x, do consider updating to the 2.x series. It is a big step forward.

As of this writing it is not clear yet what the future of 1.x is. My original intent was to continue to maintain 1.x for a while in parallel, doing only fixes and minor updates; however, I also didn't expect 2.0 to be in prerelease for six years. At this point 1.x is very old. If you are an instructor currently using 1.x, please contact me with your thoughts on this.

System/161 1.x

The current version of System/161 1.x is 1.14. You should really update to the 2.0 branch when possible as it's a lot better in a lot of ways. Also, as of the release of System/161 2.0, the 1.x branch is officially EOL and no longer supported. (This has been the de facto state for some years now anyway...)

Note that you can use System/161 2.x with OS/161 1.x; just configure the old system board.

Toolchain for 1.x

The current version of the 1.x toolchain is 1.5. As best as I recall (I can't find a copy of the release announcement) there is no particular reason to update from 1.4 if it continues to compile for you.

Note that it should also be perfectly possible to use the 2.0 toolchain with OS/161 1.x; you'll need to create extra symlinks with the cs161- prefix or patch the OS/161 makefiles to use mips-harvard-os161- instead, but either of these is trivial.