If you are like me and do not like repeating manual tasks over and over again, you probably have written custom scripts to rebuild NetBSD from source and to upgrade your NetBSD installation to a new build. I have had such scripts for years, but they have always been very rudimentary, inflexible and unreliable. What's more: every NetBSD machine I have today has its own custom versions of these scripts, often with little incompatible tweaks to accomodate every installation.
I was now facing the time to rebuild my NetBSD development box (because its VM disk is running out of space), and the thought of having to reconfigure my environment to perform periodic NetBSD builds, and to have to continue using my deficient custom upgrade script gave me the energy to sit down and write decent versions of these two tools. The results of such efforts are sysbuild and sysupgrade, and their goal is to trivialize rebuilds and upgrades.
sysbuild, currently available in pkgsrc/sysutils/sysbuild, automates the process of fetching the NetBSD sources from a CVS repository and performing a build for one or more platforms. The process is defined by a configuration file that controls the parameters of the build, and building a new snapshot from scratch is as easy as issuing one parameter-less command. A companion sysbuild-user package configures an unprivileged system user to perform nightly builds of NetBSD from cron, which is very convenient for developers tracking NetBSD-current. My other post "Introducing sysbuild for NetBSD" and the sysbuild(1) manual page provide more details.
sysupgrade, currently available in pkgsrc/sysutils/sysupgrade, automates the process of bringing a NetBSD system up to date by using a collection of distribution sets (which can come from either sysbuild, your manual builds or a public FTP site). This tool does not have any upgrade knowledge of its own: it is "just" a script for the manual procedure of fetching the distribution sets, upgrading the kernel, unpacking the sets and upgrading /etc with the standard etcupdate and postinstall. My other post "Introducing sysupgrade for NetBSD" and the sysupgrade(8) manual page provide more details.
The tools are released under a typical permissive 3-clause BSD license. I have opted to place them in pkgsrc instead of the base system to give the tools some mileage and to make them immediately available to older releases and operating systems. However, my end goal for these tools (specially sysupgrade) is to end up being part of the NetBSD base system: I find it unfortunate that the base system does not provide a mechanism to upgrade itself to a newer release.
Enjoy the tools and please share your feedback!
... just keep in mind that these are fresh new code so obscure bugs may be lingering around. Hint: Run the included test suites to get some confidence in the implementation before running the tools.
On behalf of NetBSD developers, I'm happy to announce the availability of the first release candidate of NetBSD 6.0.
Binaries of NetBSD 6.0_RC1 are available for download at:
ISO images and (for amd64 and i386) images suitable for installing from USB sticks or other hard drives, and torrent files for downloading via BitTorrent are also available, as well as Amazon EC2 machine images and .xva files for use with Citrix XenServer and Xen Cloud Platform.
Fixes since NetBSD 6.0_BETA2
Thanks to tremendous testing support from the community, we are very pleased with the state of this release candidate. A number of improvements and fixes have been made since NetBSD 6.0_BETA2. Here's a sampling:
- Fixed bugs in iscsid target handling and with large writes to iscsi devices
- Fixed some amd64 trap-handling issues
- Lots of fixes and improvements for npf(4)
- Renamed wake(8) to wakeonlan(8)
- Pass "boothowto" from the bootloader to the kernel on sparc/sparc64
- various PUFFS/libperfuse fixes in support of glusterfs on NetBSD
- Update BIND to 9.9.1-P2 to address CVE-2012-1667, CVE-2012-3817 and CVE-2012-3868
- Build SQLite with SQLITE_ENABLE_COLUMN_DATA to address PR/46322
- Fix bootstrapping the build system on some Linux distributions
- Enable wsfb X server on vax
- Prevent a crash when mmap()ing a block device. PR/38889
- Sort vif and vbd device IDs on Xen so attach order is consistent
- Make xf86-video-intel and i915drm driver work on some Atom + GMA3150 graphics chipsets
- Update Postfix to version 2.8.11
- Add urtw(4) and urtwn(4) wireless drivers
- Switch device database and terminfo database to cdb(5)
- Fixed the first-stage bootloader for Soekris net4801 PR/46027
- Fixed a gcc bug: setjmp vs. unchanged register values PR/45837
- Make all ttyE* entries use the wsvt25 term type PR/10127
- Fix a bad interaction between ps(1) and ptyfs(4) PR/40813
- Use HOST_SH instead of sh for MAKEDEV for cross builds PR/46537
- Add support for Intel I350 Ethernet to the wm(4) driver
- Fix several critical bugs in the x68k port
- Remove wrong claims in md5(1) PR/44160
- Support rc_directories in rc.shutdown PR/46601
- Stop routed(8) from losing kernel routes PR/44647
- Fix lack of carrier on hme(4) on some sparc64 machines PR/46424
- Fix a panic triggered by ktrace -p PR/46591
- Avoid failing upgrades due to spurious errors PR/12020
- Use 32KB/4KB for default block/fragment size on >= 128 GB partitions PR/46629
- Fix gem(4) recovery after a receiver overflow PR/46260
- Improved support for disk "wedges"
- Fix a crash that can happen transferring large blocks over a network. PR/43240
- Improve linux32 compat
- Changed root's default shell to /bin/sh
- Fixed issues booting from CD-ROM on some i386 and amd64 systems
- Update to tzdata2012e
- Avoid sending bad RA packets with rtadvd(8) PR/46580
- Fix calling setroot(9) twice PR/46732
- Add initial support for the RaspberryPI, sufficient to boot multiuser and access the gpio header pins via serial console, but no USB or network support yet
- Fix cc -fpie on sparc and sparc64 PR/46724
- Don't create BSD-style pty nodes by default, since ptyfs is mounted by default.
- Update OpenSSL to version 1.0.1c with AES-NI patch.
- Switch off DIAGNOSTIC and/or DEBUG on release kernels
- Fix problem with mmap and program exit PR/46807
- Don't panic when shutting down a bridge(4) PR/46587
- Fix locale issues in static binaries PR/46781
- Make a number of USB memory sticks and SD card readers work which were not usable before.
Please continue to report problems and to help us test!
There are a small number of known issues which we expect to have fixed before the release. These fixes may require a second release candidate:
- The OpenSSL update caused the major number of some libraries to be bumped; some software which uses these libraries may need to be recompiled from NetBSD 6.0_BETA2 and earlier, or binary packages may need to be reinstalled.
- The vax port has a shared library problem and is not bootable in NetBSD 6.0_RC1.
- ntpd(4) broadcast operation is not working
- A panic can happen when an nfs rename operation fails
- The i386 port may not boot correctly on a 486 system
- A kernel with options DIAGNOSTICmay panic if an isp(4) card is installed
- Xen: an amd64 DOM0 can not start X11 PR/46634
As always, please help us out by testing these changes and reporting problems either to an appropriate mailing list, via send-pr, or via the web form:
Thanks again for your help in making NetBSD 6.0 the best release yet!