The original NetBSD release for PC hardware (i386) used the a.out binary format. At the time, the a.out format was approaching its shelf life and other projects were switching to the more modern Executable and Linking Format (ELF) developed for System V Release 4 and adopted earlier by Linux. The NetBSD 1.5 release transitioned the i386 and sparc ports from a.out to ELF. Other ports such as alpha and pmax were introduced to NetBSD with ELF In this paper we describe the binary formats and relive the transition process used by the developers to upgrade a 1.4.3 a.out system to a working ELF based system. We will use the QEMU emulator to go back in time to 1999.


NetBSD/i386 1.4.3 environment NetBSD/sparc 1.4.3 environment NetBSD/i386 1.5.4
  • The tcsh binary but ELF built for 1.5.4 and up
  • CVS binaries for 1.5.4 built to live in /usr/local

These binaries, images and sources should not be used in a production environment. There may well be vulnerabilities. They should only be used for educational purposes.