Sortix
Sortix Download Manual Development News Blog More

Sortix 1.0

Sortix 1.0 “Self-Hosting & Installable” was released on 2016-03-28. It is a considerable improvement on the previous 0.9 release. It accomplishes what was almost in reach back then: Being self-hosting. This release wears the 1.0 number proudly as it is actually fairly 1.0-like by hobbyist operating system standards. It's a statement that Sortix has bootstrapped and that it is ready to take itself seriously. This page covers the notable aspects of this operating system release.

Goals

  • Installable on virtual and real hardware.
  • Possible to develop under itself.
  • Inspire confidence in the system.
  • Be a base for future growth.

Highlights

Here are some of the exciting additions in the 1.0 release:

Installer

Sortix now has an interactive installer that lets you install Sortix onto harddisks. The included GRUB bootloader makes it easy to single boot Sortix. Dual boot is possible as well with a bit of manual help. The installation documentation is available during the installation. There's also an interactive upgrader that upgrades a previous Sortix system to the current release. This will be useful for the next release.

Self-Hosting

The system source code is in /src as a git repository. All the programs needed to build it are installed. System components can built with make and installed with make install. development(7) covers rebuilding the whole system. Patches welcome.

Manual Pages

Thanks to the port of mdocml, Sortix now has a manual page viewer. Sortix remains mostly undocumented, but the 1.0 release has documentation for most Sortix-specific things a casual user would encounter. The priority is to document Sortix-specifics first and rely on user knowledge about other similar systems.

Converted to C

The vast majority of the user-space code has been converted to C, rather than being C-like C++. The kernel, the ext2 driver, asteroids, and trianglix all remain C++.

Relicensed to ISC

The base system has been relicensed from LGPLv+3 and GPLv3+ to the ISC license.

Partition Editor

There's a new custom disked(8) partition editor that lets you create and manage MBR and GPT partition schemes. It's still a bit rough around the edges, but the user experience of GNU parted made me think I could easily do better.

login

There's a login(8) screen on boot of permanent installations. Passwords are stored in /etc/passwd after being salted and hashed with the bcrypt password hash. It is designed to be slow, such that brute-forcing is entirely unfeasible. The login screen is secure, but authenticated users have no protection from each other and the system is not safe for multi-user configurations.

init

The init(8) system has been rewritten. Its partition and filesystem handling has been vastly improved.

ATA & AHCI drivers

The ATA (PATA) driver was rewritten with DMA support. There is also a new AHCI (SATA) driver with DMA support. This should cover a high percentage of systems. The drivers now write in the background which makes I/O more efficient.

PS/2

The PS/2 controller driver was written along with the keyboard driver. There is now also a PS/2 mouse driver.

Bootloader Modesetting

The bootloader can now set up a graphical framebuffer for the operating system, allowing Sortix to have graphics on all the systems where GRUB has graphics.

Keyboard Layouts

The keyboard layout system has been redesigned. Formerly keyboard layouts were hard-coded into the kernel. They are now compiled from a sparse description into a table that can be loaded into the kernel console.

pager

The pager program has been rewritten and now supports colors as well as scrolling backwards. This is useful when viewing manual pages and using git commands.

termios

The kernel terminal line discipline has been rewritten and the POSIX termios interface has been implemented. This removes a major obstacle to porting third party interactive terminal programs such as editors. The next release will add a libncurses port.

Randomness

The arc4random interface has been embraced and added to the standard library and kernel. There are now /dev/random and /dev/urandom devices. User-space is ready for real kernel entropy, but the kernel only has the system time so far.

Regular Expressions

The POSIX regular expression API <regex.h> has been implemented efficiently and is used in programs such as expr.

libz

Sortix libz has been developed further and is ready for adoption. It is a cleaned up and modernized fork of zlib that remains API and ABI compatible.

Ports

The ports collection has been improved and updated. Ports of e2fsprogs, flex, grub, libglib, mdocml, pkg-config, and xorriso have been added.

And much more

The majority of work this release cycle has been spent on bug fixes, cleaning up the code, and smaller features. These changes accumulate and make this an altogether much better release than the previous. There are more ports, things work better, and things are more polished.

See the 1.0 release milestone for a list of all the completed development tasks. See the commit list for the 1.0 tag for the full list of changes.

Download

You can download Sortix 1.0 from your local mirror. The system source code is available inside the system at /src or from the mirror. The full source code, including ports, is available from the mirror. The source code of individual ports are available through the ports collection.

Miscellaneous

It was released on 2016-03-28.

Sortix 1.0 contains 169k lines of source code. This count doesn't include the ports collection, but it does count the netbsd libm which is 28k lines.

See also the screenshots of 1.0.

Copyright 2011-2023 Jonas 'Sortie' Termansen and contributors.
Sortix is free software under the ISC license.
#sortix on irc.sortix.org
@sortix_org