Releases: klange/toaruos
v1.9.1
ToaruOS v1.9.1
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
: definealarm
inunistd.h
; fixstrncpy
to actually set nil bytespackage-manager
: fix incorrect icon advertisement; visual improvementsesh
:msk
tab completion (including package names)- add
chown
file-browser
: write pid file in desktop modetoggle-relative-mouse
: addget
command- Kernel: implement
O_DIRECTORY
tmpfs
: refuse to make directories with 0-length namegraphics
: add support for subregion contextshelp-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
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
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
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
; movedbasename
function tolibc
. - 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
This minor release update includes support for installing packages from network sources.
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 inprintf
, resolving agcc
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 usesudo 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!)
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 Pythonmsk
). - 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
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 toauto-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
This is an experimental release specifically focused on ToaruOS Extra.
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:
- Download the source for Bim:
fetch -O http://toaruos.org/bim.c
- Compile it with GCC:
gcc -o bim bim.c
- 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
andkillall
. /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 correctlylstat
s arguments, as it does for the contents of directories, so symlinks are shown correctly when given as the direct argument tols -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
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
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.