Skip to content
This repository has been archived by the owner on Mar 19, 2024. It is now read-only.

Releases: klange/toaruos

v1.9.1

28 Nov 12:34
Compare
Choose a tag to compare

ToaruOS v1.9.1

screenshot

What's New in v1.9.1?

This minor update includes an improved design for the Package Manager, bug fixes, and additional internal functionality to better support some new packages. Additionally, the Help Browser now displays information about various programs, and the shell can tab-complete msk installation commands.

What is ToaruOS?

ToaruOS is a hobbyist, educational operating system for x86 PCs, focused primarily on use in virtual machines. It provides a Unix-like environment, complete with a graphical desktop interface, shared libraries, feature-rich terminal emulator, and support for running Python 3.6, GCC, and several other ports. The core of ToaruOS, provided by the CD images in this release, is built completely from scratch. The bootloader, kernel, drivers, C standard library, and userspace applications are all original software created by the authors, as are the graphical assets.

Who wrote ToaruOS?

ToaruOS is primarily written by a single maintainer, with several contributions from others. A complete list of contributors is available from AUTHORS.

Running ToaruOS

It is recommended that you run ToaruOS in a virtual machine / emulator, for maximum compatibility. ToaruOS's driver support is limited, and running on real "bare metal", while possible, does not provide the most complete experience of the OS's capabilities except on very particular hardware. ToaruOS is regularly tested in VirtualBox, QEMU, and VMWare Player, and can be successfully booted (with poor performance) in Bochs. ToaruOS is intended to run from a live CD, though it is possible to install to a hard disk. Additional details on running ToaruOS in different virtual machines is available from the README.

Changelog

  • libc: define alarm in unistd.h; fix strncpy to actually set nil bytes
  • package-manager: fix incorrect icon advertisement; visual improvements
  • esh: msk tab completion (including package names)
  • add chown
  • file-browser: write pid file in desktop mode
  • toggle-relative-mouse: add get command
  • Kernel: implement O_DIRECTORY
  • tmpfs: refuse to make directories with 0-length name
  • graphics: add support for subregion contexts
  • help-browser: very basic, minimal implementation

Known Issues

  • The File Browser's address bar is read-only.
  • Several utilities are missing functionality.
  • The libc's implementation of scanf is incredibly incomplete.

v1.9.0

26 Nov 03:49
Compare
Choose a tag to compare

screenshot from 2018-11-26 12-48-38

This new release bumps us to 1.9.x due to some major kernel changes.

Featured in this release is a new graphical Package Manager, some new utilities, and updates to the File Browser.

What's New

  • terminal now sets initial tty process group; fixes launching bim directly
  • lots of new functionality in File Browser, including new menus and a toolbar
  • bim now supports loading directory listings when a directory is opened
  • kernel support for the O_EXCL flag has been added
  • behavior of O_TRUNC has been fixed
  • the kernel now returns appropriate error codes when opening directories with invalid flags
  • the kernel now uses 64-bit offsets for file accesses
  • the ATA driver now supports larger disks
  • mkstemp added to libc
  • error codes and return values for stat have been fixed
  • graphical package manager has been added
  • fixes have been made to button rendering, along with some other graphical optimizations
  • added du
  • kerning has been improved for some fonts

Known Issues

  • The address bar in File Browser is currently read-only.
  • du does not calculate based on complete blocks due to missing kernel functionality.

v1.8.2 - New File Browser, Desktop Returns

19 Nov 12:50
Compare
Choose a tag to compare

screenshot from 2018-11-19 21-52-48

File Browser

This release sees major improvements to the new File Browser, which is a reimplementation in C of the original Python File Browser application. The new File Browser supports selection and uses double-click to open files.

The File Browser also provides the new desktop.

Dialog Prompts

screenshot

Also new is a dialog tool, which is still under development. This tool features a new button design, replacing the older Python button widgets. The new buttons will eventually be available through a widget library.

Travis Builds

Automated builds have resumed on Travis, and release images are now built there when a new tag is pushed.

What's New

  • New File Browser and desktop.
  • New showdialog tool for displaying graphical prompts.
  • sysinfo now shows package information.
  • Added dirname; moved basename function to libc.
  • Panel now prompts for confirmation on log out.
  • An experimental tool for building ISO images from scratch has been added.
  • An experimental text markup implementation has been added and will eventually become the new Help Browser.
  • New icons have been added for C source files, header files, and bitmap images.
  • A missing permission check has been implemented for mkdir.
  • New graphics library functions have been added, and some bugs have been fixed.
  • Travis CI builds have resumed, and this release's ISO was built by Travis.

v1.8.1 - Network Packages

12 Nov 07:25
Compare
Choose a tag to compare

This minor release update includes support for installing packages from network sources.

screenshot from 2018-11-12 16-31-26

There are two versions available:

  • toaruos-core.iso - No local package repository for minimal size. Suitable for VM users.
  • toaruos-extra.iso - Core ToaruOS with a local package repository on the CD. Suitable for users with no network access (eg., running ToaruOS on real hardware without a supported network chipset) or users with slow Internet access who want to have access to the package repository.

What's New

  • libc: Added support for + flag in printf, resolving a gcc issue with building some applications.
  • kernel: The network stack will now close TCP connections when their sockets are closed.
  • msk: The package manager now supports multiple remotes, including network remotes.
  • bim: Bug fixes and added syntax support for conf files.
  • other: Added support for using a TCP connection to run a remote shell, which offers considerable speed improvements over the serial console. Run nc -l 8090 on the host and then use sudo petty /dev/net/10.0.2.1:8090 to attach a login session.

The complete set of changes can be viewed here.

v1.8.0 - Package Management Returns (and more!)

07 Nov 04:06
Compare
Choose a tag to compare

screenshot from 2018-11-07 12-54-38

There are two major features of note in this release.

Package Management

Rudimentary package management has returned with the newly rewritten msk tool. Currently, packages are installed from the CD. A future update will provide network-installable packages.

To install the full Extra distribution:

sudo msk update
sudo msk install extra

To see what packages are available and installed:

msk list

Job Control

Job control has been implemented, allowing process groups to be suspended and resumed. This support is still experimental - many changes have gone into the kernel and shell to support job control, and there may still be edge cases that are not correctly handled.

To suspend a job, press Ctrl-Z. To resume it, call fg at the shell. Backgrounded tasks can also be brought to the foreground with fg.

Currently, process groups are not yet suspended if they attempt to read from the terminal while not the foreground group.

What's New

  • Job control has been implemented.
  • /dev/ttyS* serial devices are now proper TTYs without the need for a wrapper.
  • /tmp and /var are mounted by a startup script.
  • Changes to modules and kernel memory management should now allow driver modules to be loaded at runtime, including graphic drivers.
  • Changes have been implemented in the framebuffer drivers to allow late initialization. A tool has been added to demonstrate this functionality - run sudo go-video.sh from the VGA terminal to switch to a graphics mode on supported graphics chipsets.
  • Many improvements have been made to utilities and the C library.
  • Directory permissions (search, etc.) have been partially implemented.
  • A new package manager has been added (msk, a rewrite of the original Python msk).
  • The shell now supports ~ to refer to the user's home directory.
  • The shell line editor handles cases where there is not room for prompt strings.
  • sudo now has a (basic) configuration file and will cache successful authorizations (for five minutes).
  • Additional TTY functionality has been implemented (werase, etc.)

Licenses

This release includes installable software under additional licenses:

  • Cairo is available under the terms of either the GNU Lesser General Public License (LGPL) version 2.1 or the Mozilla Public License (MPL) version 1.1.
  • pycairo is also also under the LGPLv3. Our fork is here, which adds some functionality that wasn't upstreamed when pycairo was originally ported.
  • Binutils is available under the GPL v3. The version of binutils included on the CD was built with the patchset available from this repository.
  • GCC was also patched similarly
  • zlib has its eponymous license
  • DejaVu fonts are also included and bare this license
  • VLGothic has this license
  • Symbola is an older version from when George was still releasing them "In lieu of a licence; fonts and documents in this site are free for any use".

v1.7.0 - installable Extra

26 Oct 01:45
Compare
Choose a tag to compare

screenshot from 2018-10-26 10-37-43

v1.7.0 celebrates 4000 commits to ToaruOS!

This release is available as a single CD ISO. The applications and libraries from the Extra distribution can be installed after boot, if the CD can be mounted, with the following command:

sudo sh /cdrom/extra/install.sh

Note that the password for the local account is local.

With the Extra package installed, GCC, Python, a copy of the source code for ToaruOS, and tools to build the kernel and applications are available. For example, you can rebuild the kernel as follows:

cd /src
sudo build-kernel.py

Freetype, Cairo, and the standard set of TrueType fonts (DejaVu, etc.) will also be available after installation of the Extra package. To see changes to font rendering, it is recommended that you log out and then log back in. The compositor will automatically use Cairo after installation of the relevant packages.

Additionally, this release comes with an updated bim and several bug fixes and new features. Kernel module loading has been improved and drivers which were previously only capable of being successfully loaded at boot should now function when loaded at runtime, including the framebuffer driver (though it requires some kernel arguments to enable, which may be set through kdebug by running set vid auto) and the PRO/1000 ethernet driver (which has been tested on real hardware).

What's New

  • All yasm/nasm sources have been translated to GNU As to unify the build system.
  • Added tar (extract only, no built-in compression support)
  • Added ungz to extra; target for decompression can now be specified
  • Fixed a bug in fetch where download start times were not calculated
  • Added --build and --buildlib commands to auto-dep.py
  • Esh: Syntax highlighting improvements, support for $$, read
  • insmod: multiple modules can be loaded at once
  • Kernel: Several PTY improvements (canon support for ^V, fixes to nlcr/crnl, etc.); fixes for runtime module loading
  • lfbvideo: Reintroduced the old hack method of locating video memory, available as "kludge" driver
  • bim: updated to 1.1.1

What's Planned

This release line will eventually include a new version of the msk package manager.

Licenses

This release includes installable software under additional licenses:

  • Cairo is available under the terms of either the GNU Lesser General Public License (LGPL) version 2.1 or the Mozilla Public License (MPL) version 1.1.
  • pycairo is also also under the LGPLv3. Our fork is here, which adds some functionality that wasn't upstreamed when pycairo was originally ported.
  • Binutils is available under the GPL v3. The version of binutils included on the CD was built with the patchset available from this repository.
  • GCC was also patched similarly
  • zlib has its eponymous license
  • DejaVu fonts are also included and bare this license
  • VLGothic has this license
  • Symbola is an older version from when George was still releasing them "In lieu of a licence; fonts and documents in this site are free for any use".

v1.6.1 - GCC returns

12 Oct 11:53
Compare
Choose a tag to compare

This is an experimental release specifically focused on ToaruOS Extra.

screenshot from 2018-10-12 20-29-57

GCC 6.4.0

The Extra CD image in this release includes GCC 6.4.0 and should be capable of compiling C applications.

Consider the following demo:

  1. Download the source for Bim: fetch -O http://toaruos.org/bim.c
  2. Compile it with GCC: gcc -o bim bim.c
  3. Edit the downloaded source with the compiled editor: ./bim bim.c

Please note that the size of the ramdisk in this image results in long boot times on QEMU. Additionally, some issues may be experienced in VirtualBox - it is recommend that you use the BIOS loader and supply VirtualBox with 2GB of RAM when using the Extra distribution until these issues are investigated and resolved.

What's New

  • Several new C library functions have been added to support the porting of Binutils and GCC, and some noncompliant functions have been corrected.
  • The behavior of the terminal cursor when on the last column of a row has been fixed. Previously, printing a newline when the cursor was in this position erroneously advanced the line, which was breaking nyancat.
  • Scrollback can now be selected in the terminal, and general behavior of scrollback and text selection has been improved.
  • Improvements have been made to the argument processing of kill and killall.
  • /dev/tty and /dev/pts/{n} have been added, and terminals now have names, as specified in POSIX.
  • The behavior of the VFS when a symlink is the root of a mount has been corrected. Previously, the VFS did not follow these symlinks correctly.
  • ls now correctly lstats arguments, as it does for the contents of directories, so symlinks are shown correctly when given as the direct argument to ls -l.
  • New utilities have been added: basename, logname, tty, strings
  • The behavior of tiled windows in the compositor and default decorator has been adjusted.
  • Improvements and bug fixes have been made to rline_exp, including a notable fix for a crash with Unicode characters in history.
  • The permissions of user home directories on live CDs should now be correct.
  • The default startup app for the compositor is now glogin (this does not affect the normal setup of live CDs).

v1.6.0 - ToaruOS Core / Extra

06 Oct 13:19
Compare
Choose a tag to compare

After over half a year of work, I've made the decision to replace ToaruOS "mainline" with ToaruOS-NIH. The NIH project was started out of desire to rethink some of the internals of ToaruOS and replace Newlib with my own C library.

This release is a demo release for the new merged repository. Some functionality may still be missing over a complete release.

Core and Extra

With the merge of ToaruOS-NIH, there are now two "versions" of ToaruOS available: Core contains only first-party components, Extra includes some additional third-party libraries as well as Python. Eventually, the Extra distribution will be a metapackage available from the package management system.

Building this repository will get you Core. Extra is hand-crafted with some additional software which, currently, must be built by hand. An automated system to build the packages needed for Extra is in development based on the toolchain scripts from ToaruOS 1.2.x.

Migrating from ToaruOS 1.2.x

Many ports are still in progress and the package management system is not yet available in ToaruOS 1.6.0. I hope to have everything ready for 2.0 before the year is out.

Development Changes

The new core toolchain contains only Binutils and GCC. Third party libraries have been removed from the toolchain entirely. Because of this, and other changes to the build, it is recommended you start from a fresh repository and build a new toolchain.

With the addition of the native EFI loader, the build process now depends on a few additional tools and packages, including GNU-EFI and mtools. We also now have a direct dependency on xorriso, while 1.2.x used grub-mkrescue with whatever backend was available. If you are attempting to build ToaruOS from a non-x86-64 host (or not on Linux), you may need to make some changes to disable the building of the 64-bit EFI loader, which uses the system GCC.

The directory structure of the project has changed somewhat. The userspace directory has been removed. Libraries are now in lib, with the C standard library implementation in libc. Applications have moved to a flat apps directory. The automatic userspace build system has been significantly improved.

User Changes

The core experience of ToaruOS 1.6.0 has changed somewhat, as the Python userspace is now longer included in Core and is no longer the default environment in Extra. Most of the Python userspace applications are available and functioning, including the panel, file browser, help browser (including limited web browser functionality), and games.

As the package manager is not yet available, several ports are missing. Of those missing ports, some are not yet supported by ToaruOS's new C standard library - I hope to resolve all missing functionality in due time.

What's New in ToaruOS 1.6.0

Roughly seven months of development has gone into ToaruOS 1.6.0 over 1.2.3. A few beta releases were made in the 1.5.x series during this time. As the complete list of changes would easily be over a thousand lines long, here is a brief overview:

  • Newlib has been replaced with an in-house C standard library. This is currently incomplete and some functionality is still missing.
  • Grub has been replaced by a native bootloader. Both a minimal ATAPI CD BIOS loader and a more complete EFI loader are available, the latter in both a 32-bit and 64-bit variety for maximum compatibility. Both are included on the CD.
  • Bim, ToaruOS's text editor, has seen significant improvements, including several performance improvement, notably more complete editing, and syntax highlighting. Bim is also now available separately from ToaruOS, so it can be built on Linux, BSD, MacOS, etc.
  • Yutani, the window compositor, has been overhauled and now has a native backend. The original Cairo backend is available in Extra.
  • Clipboard functionality has been added to the compositor.
  • The Python menu library has been ported to C and is now used in the Terminal.
  • The Terminal has seen many new features, including text selection and altscreen support.
  • Many improvements and bug fixes have been made to the kernel, including several fixes to signal handling, improved TTY functionality, etc.
  • A native antialiased text rendering system has been added, using signed distance fields. It is not perfect, and visually may not look as nice as Truetype rendering with Freetype. Freetype is available in Extra and is used by several parts of the system when installed.
  • Many new utilities have been added, and existing utilities have been improved.
  • Support for VMware Workstation's automatic display sizing has been added (this is experimental).
  • A new syntax-highlighting line editor has been added and is used by the shell.
  • Several new syntax features are now supported in the shell.

v1.2.3 - ToaruOS Legacy

13 Jun 03:43
Compare
Choose a tag to compare

This is the final release of "ToaruOS Legacy" - the Newlib-based userspace and Python desktop environment for ToaruOS. This release is not supported, and the majority of ports have been rebuilt against the native libc and are available with newer releases.

What's New over v1.2.2

  • Backported fixes from ToaruOS-NIH, including a VirtualBox Guest Extensions driver bugfix for newer versions of VitualBox.

v1.2.2

12 Oct 03:12
Compare
Choose a tag to compare

Minor bug fix update.

Adds support for https links in Help Browser (a TLS-enabled version of fetch must be installed to use this functionality).