OpenBSD is derived from NetBSD Unix-like operating system. Project leader Theo de Raadt launched an OpenBSD project in 1995 to create a secure operating system, and OpenBSD is also known for its high-quality documentation, open-source, and strict software licensing.
This is a partial list of new features and systems included in OpenBSD 6.8. For a comprehensive list, see the changelog leading to 6.8.
- New/extended platforms:
- New powerpc64 platform, supporting PowerNV (non-virtualized) systems with POWER8 and POWER9 CPUs, such as Raptor Computing Systems Talos II and Blackbird systems. POWER8 support has not been tested on real hardware yet.
- Improvements to time measurements, mostly in the kernel:
- Added support in the kernel and libc for timecounting in userland, eliminating the need for a context switch everytime a process requests the current time, thereby improving speed and responsiveness in programs which make many gettimeofday(2) calls, especially browsers and office software.
The userland timecounters are enabled on the amd64, arm64, macppc, octeon and sparc64 architectures.
- Added a ktrace(1) -T option to make time-related system calls more prominent.
- Added tsc_delay(), a delay(9) implementation based on the TSC, to amd64.
- Used an LFENCE instruction everywhere RDTSC is used for a time measurement, reducing the jitter in TSC skew measurements.
- Introduced gettime(9) and getuptime(9) and substituted these for time_second(9) and time_uptime(9) throughout the kernel to prevent split-read problems on 32-bit platforms.
- Synchronized each core’s CP0 cycle counter using the IO clock counter on mips64 and octeon, making the cycle counter usable as timecounter.
- Improved CPU frequency scaling in automatic performance mode by removing accounting for offline CPUs.
- Various kernel improvements:
- Added intrmap, an interrupt to CPU mapping API that is used by hardware drivers to use multiple CPUs for interrupt handling.
- Added an ioctl PCIOCGETVPD allowing userland to access read-only support information about pci devices via the vpd register.
- Set ddb(4) “/t” to show a trace via TID on all architectures.
- Introduced kstat(1), a subsystem to allow the kernel to expose statistics to userland.
- Added kstat to cnmac(4).
- Added support for remote coverage to kcov(4).
- Moved sysctl(2) CTL_DEBUG from DEBUG to the new DEBUG_SYSCTL.
- Prevented creation of bogus sd(4) devices for nvme(4) namespaces which are configured but have size 0.
- Added READ(12)/WRITE(12) support to cd(4).
- Used READ(16)/WRITE(16) commands for disks large enough to require them to access the last sectors, fixing large 512E devices plugged into USB to ATA/ATAPI bridges which mistakenly use 4K sector addresses/sizes.
- Restored VGA fonts on VT switch, preventing an unusable screen when switching to a VT with a custom VGA font from X.
- Ensured only pseudo-terminal devices use reprint delays.
- Prevented improper disabling of the backlight in umstc(4) when brightness is adjusted to 0.
- Provided an optimized implementation of ffs(3) in the kernel on arm64/powerpc/powerpc64.
- Rewrote m88k mutex code as a slight variation of the MI mutex code, potentially improving stability and rendering mutex spinning time visible in top(1).
- Reworked kernel loading with octboot, the OpenBSD/octeon bootloader, which now does not rely on a mounted filesystem.
- Ensured scsi(4) devices do not attempt to process bogus MODE SENSE data.