Skip to content

Releases: klange/toaruos

v1.2.1

02 Aug 06:02
Compare
Choose a tag to compare

This build was produced by a Travis CI worker using a new automated release build process.

Changes from 1.2.0:

  • Mesa has been removed from the base build. It is now available as a package.
  • Some UI theming has been moved to a theme description module for more modularity.
  • When the new libwebp package is installed, WebP wallpapers are supported.
  • chown is now available, fixing issues with home directory ownership on live CDs.

v1.2.0 - New Package Manager

10 Jul 11:38
Compare
Choose a tag to compare

This release brings a brand new package format, msk, alongside a major change to how live CDs work.

Live CDs: Live CDs now mount a tmpfs as their root filesystem and copy the contents of their ext2 ramdisk into this filesystem. This allows for a speedy, simple read-write root filesystem on a live CD while using potentially less RAM in the normal case. More importantly, it allows for package installation to work by installing files into the actual filesystem.

Packages: The package management system has been completely rewritten. It now uses specially-crafted compressed tarballs to store package contents, similar to how formats on other operating systems work.

Weather: The icons for the weather panel widget have been redesigned to better suit the visual appearance of the panel.

Terminal: A bug has been fixed in the graphical terminal wherein it preferred TTY output over events from the windowing system, causing hangs when printing large amounts of text.

libc: Fixes have been implemented for a few standard C functions.

Desktop: This release features a new wallpaper depicting Tokyo Skytree at night. All ToaruOS wallpapers are available under both the NCSA license as well as CC BY-SA 4.0 and were taken by me. If you like my wallpapers, you can find more photos on my flickr.

v1.1.2 - Panel Improvements

28 Mar 12:57
Compare
Choose a tag to compare

Panel: This release is focused on panel updates. There are quite a few, so they're broken out below.

Network Status: The network status widget's information popup has been partially redesigned.

Weather: A new weather widget has been added with weather data from OpenWeatherMap.org.

Log Out: The log out button now shows a menu, similar to the way the button works on the log in screen.

Absolute Mouse Toggle: The absolute/relative mouse toggle widget now supports VirtualBox, for uniformity.

Menus: An issue in the menu library wherein menu entry widths were not properly calculated for rich-text menu entries has been corrected.

Text Input: A cancel callback has been added to the text input dialog.

Icons: New icons have been added for "config" and "refresh".

HTML/Web Browser: Improvements have been made to handling of web pages in the Help Browser, bringing it closer to being a functioning web browser.

Bug Fixes: Some bug fixes have been implemented in various places.

v1.1.1 - Minor Network Update

22 Mar 09:48
Compare
Choose a tag to compare

Network: Basic CNAME support has been added to the DNS client. This is still experimental.

VirtualBox: The workaround for large display sizes in VirtualBox has been adjusted.

HTML: The Help Browser now has minimal support for HTML and can act as a very rudimentary web browser (HTTPS is not supported, nor are many critical web technologies).

v1.1.0

25 Feb 10:08
Compare
Choose a tag to compare

Login: The login screen has been rewritten, fixing some bugs and adding new features.

VMware: Bugs in the VMware mouse drivers and display drivers have been fixed.

Kernel: Some kernel bug fixes and improvements have been implemented.

Help Browser: The help browser's renderer has been adjusted to fully render pages, resulting in faster scrolling but potentially slower page loads. We are working to improve the parser and renderer to reduce load times.

Input Boxes: A new input box widget has been added based on the one originally built for the input dialog.

Yutani: The RAISE event has been changed so that the old_ coordinates are the coordinates of the original DOWN. Several apps have been adjusted to accept slight mouse movements as clicks, improving support for pen tablets. A bug in the decorations library causing a crash when WM_THEME is unset has been fixed.

v1.0.4 - The VMware Update

18 Feb 14:43
Compare
Choose a tag to compare

This release has been superseded by a point release, v1.1.0.

With apologies for putting out such a big update only a few days after the last one, this update is focused on providing better support for VMware. See here for instructions on using ToaruOS in VMware. There are also many general improvements and bug fixes in this release.

VMware: Fixes for several device drivers have been implemented to support VMware, including the VMware display driver, the ATA/ATAPI driver, network drivers, network subsystem, PCI subsystem, and more.

VMware Mouse: Support for the VMware backdoor absolute mouse has been added. This is supported in both VMware and QEMU and is enabled by default. In these environments, a panel widget will be displayed to toggle between absolute and relative modes as neither VM seems to provide an interface option for this (perhaps Workstation does, but I only have access to Player).

ISO9660: A very important bugfix, as well as major performance improvement have both been implemented in the ISO9660 filesystem driver.

ToaruPaint: The painting app now uses a damage region system for more efficient drawing.

Network: The network subsystem now has better support for gateways, ARP, and DHCP. It is still not recommended that ToaruOS be run on a live network, mostly due to an insufficient TCP stack. We are working to improve the real-world usability of ToaruOS's network stack.

pcnet: This driver now gracefully handles failures to initialize. Unfortunately, it does not yet work in VMware, but it will at least no longer lock up there...

e1000: Support for other PCI IDs has been added. This enables the remaining Intel PRO/1000 options in VirtualBox and allows the driver to work in VMware (when it is set to use the e1000 device).

ATAPI: A bug in ATAPI polling which caused VMware to lock up has been fixed.

PCI: A bug in recursive PCI bus scanning which caused issues in VMware has been fixed.

Video: An ioctl has been added to the framebuffer to support setting the display mode. A bug in the vmware driver that used the framebuffer size instead of the vram size to calculate how much RAM to map has been fixed, allowing VMware guests to set larger modes.

Panel: The panel should no longer crash when /dev/mixer is not available, so you can disable the audio subsystem and still have a working desktop.

QEMU: An experimental system for notifying the guest of the QEMU window size has been added when using the SDL display backend under Linux. See util/qemu-harness.py for more details. A harness monitors the size of the SDL window and informs the guest over the serial port. The guest runs a script which monitors the serial port for these updates and performs mode setting. The harness then sends a signal to QEMU to have it disable scaling. This provides a very similar, if not better, experience to VirtualBox's display size guest addition.

Known Issues

The VMware mouse driver may report incorrect positioning in VMware if the host window is moved. Resizing the window, and various other WM actions, should resolve the issue. QEMU does not exhibit this bug. It is believed this is an issue with VMware expecting additional signaling mechanisms from guests that enable the absolute mouse cursor, and this issue may not be resolvable on our end without significant effort.

v1.0.3 - various improvements

15 Feb 13:15
Compare
Choose a tag to compare

This release has been superseded by a general improvement update, v1.0.4.

This is a minor improvement over 1.0.2 with some usability and bug fixes.

Kernel: The PIT mode has been switched to 2 to workaround an issue in VirtualBox. It is believed that this should not affect anything else.

Painting: A performance improvement has been implemented wherein the checkerboard pattern is no longer regenerated on every draw. An option to create a custom-sized image has been added (this does not perform any checks, so enter large values at your own risk).

GRUB: The boot menu has had new options added for enabling the legacy ATA driver, which may allow limited hard disk access in environments where the default ATA DMA driver does not function (such as VMWare). Disable the ATA DMA driver if you are enabling the legacy ATA driver.

Help Browser: The help browser now uses a stack-based history, so you can move forward and backward multiple steps. A history menu has been added. The help browser also now supports files from arbitrary paths using the format file:/path/to/document.trt.

Build Tools: The .gitignore has been updated. The Makefile can now produce kernel header packages, for convenience.

Menus: The mouse can now be moved between menus in the menu bar when a menu is open. Formatted menu entries are now supported with the rich= option to MenuEntryAction.

v1.0.2 - audio improvements

08 Feb 13:26
Compare
Choose a tag to compare

This release has been superseded by a general improvement update, v1.0.3.

Release Notes

This update is focused on improvements to the audio mixer, but other fixes are also present.

Mouse: A fix for fast mouse movements seen in VirtualBox has been implemented - this should resolve some reported issues with VirtualBox when "Mouse Integration" is disabled.

#pragma once: System headers now use #pragma once instead of include guards.

zlib source update: The source for the zlib tarball has been updated. We are working to upgrade the version of zlib we use, but this should resolve issues with installing the toolchain for the time being.

Kernel: A minor optimization as been made in the sbrk system call. Patch provided by @Farseer2

Panel: Additional panel widgets are available for future use in a new login manager. The panel window now provides the same API as other windows for handling mouse events, so it may be used with a standard mainloop.

Audio: Many improvements to the audio mixer have been added, including better support for audio from games (the Quake package has been updated to use these new APIs and audio support is no longer available from Quake in older releases of ToaruOS).

Known Issues

We are investigating an issue where, under VirtualBox, time slows down while playing Quake, despite no apparent change in performance. The issue is not reproduced under QEMU. A workaround for this issue has been implemented and will be available in the next update.

For further information, please see the release notes for ToaruOS 1.0.

v1.0.1 - bugfix update

03 Feb 08:43
Compare
Choose a tag to compare

This release has been superseded by a bugfix, v1.0.2.

Thanks to feedback from 1.0, this is the first post-release bugfix update for ToaruOS.

Keyboard/Mouse: An issue with the PS/2 mouse driver interfering with the keyboard driver has been corrected. This bug had some pretty severe and visible side-effects including apparent loss of mouse input, jittery movement in Quake while walking, and many other more interesting things. Bug information submitted by @SirCmpwn

Toast Daemon: An issue wherein the toast daemon was always using a high-precision timeout intended only for its animations has been corrected.

fswait2: A debug message in the fswait2 system call was erroneously set to the NOTICE level and causing unnecessary log spam. It has been reduced to INFO.

Tutorial: A typographical error in the tutorial wizard has been corrected. Patch submitted by @adamdicarlo

Terminal: A bug wherein the terminal's image support was not sending correct damage rects to the compositor has been corrected.

TTY: The TTY buffer size has been increased and some potential deadlocks when using a single thread to manage a PTY master have been addressed.

README: The screenshots in the readme have been updated to a set used in the 1.0 release notes.

Some issue reports submitted for 1.0 are still in progress.

For further information, please see the release notes for ToaruOS 1.0.

ToaruOS 1.0

30 Jan 06:18
Compare
Choose a tag to compare

The latest version of ToaruOS is v1.10.7.

If you are building from source, it is recommended you build latest master.

ToaruOS 1.0






ToaruOS is a complete hobby operating system, including a kernel and userspace with many graphical applications. This is the first release considered to be "user-ready", but please keep in mind that ToaruOS is a hobby project and it may not be stable or suitable for any purpose you might have for an operating system. This release represents the culmination of many years of development, research, and learning.

History

This release has been six years in the making. The project started when I was still in university, studying computer science at the University of Illinois at Urbana-Champaign. Many of my classmates had decided to take ECE391 - a course offered by the department of Electrical and Computer Engineering which was primarily known for its final project: a basic multitasking operating system. I, however, was on track for an early graduation, and the course offered no credits for me, having already taken the CS department's "equivalent" (a systems engineering course, which I enjoyed immensely, but was definitely not about operating systems). Unable to take ECE391, I set off on my own to build an operating system that met its requirements.

ToaruOS has seen many contributions from other developers over its years. For a period of time while I was still in school, I had taken over management of UIUC's SIGOps student chapter with the goal of bringing in classmates to work on new features for the OS. From this came much of the underlying functionality of the GUI, including the shared memory subsystem. Other notable features contributed by others include much of the x86 assembly elements which were re-written in GAS from earlier YASM sources, the audio drivers and mixer, and much of the network stack.

As I returned to the software industry after my university years, ToaruOS became a weekend project. I went through many hiatuses over the past few years, and development has often been in spurts as something piques my interest. The months leading up to this release have been some of the most active for the OS, seeing the addition of a dynamic linker, upgrades to our GCC builds to 6.3 (which had been using 4.6, the version of GCC released in 2011 when the project was getting started), the growth of a Python userspace ecosystem, and much more.

Now, finally, it is time to tag "v1.0.0". Long ago, I had drafted a list of features I wanted to see in this release, and while many were considered ambitious, one by one, each box has been checked. But, of course, this is not the end, and I expect that I will make many more releases in this 1.x series, be they bug fixes or feature additions.

Features of the OS

ToaruOS's kernel in its current form is 32-bit, non-SMP, monolithic (but modular), and Unix-like. It supports processes, threads, shared memory, files, pipes, TTYs, packet-based IPC, and basic IPv4 networking. Driver modules allow for access to EXT2 and ISO9660 filesystems, PATA and ATAPI disk access for hard drives and CDs, framebuffer support on most virtual machines (as well as bootloader-assisted generic framebuffer support), networking on AMD PCnet FAST, Realtek RTL8139, and Intel PRO/1000-series NICs, PS/2 mice and keyboards, audio on Intel AC'97 chipsets, as well as special support for VirtualBox's guest additions.

The userspace includes a dynamic linker, a full-featured compositing windowing system, many Unix-like utilities, a port of Python 3.6 (including many binding libraries for the ToaruOS windowing environment), and several graphical applications (including a package manager).

Several third-party software packages have been ported to the OS, including Vim, GCC and Binutils, MuPDF, SDL, Quake, Bochs, and more, available through the package manager.

About the Name

Many people ask what "ToaruOS" means, where the name came from, and how to pronounce it. I will start by saying that the name is a reference to a series of light novels, manga, and anime, and that like the titles of those works, an acceptable translation of "ToaruOS" might be "A Certain OS". This name came about as a parody of the myriad generically-named hobby operating systems out there - many of them called things like "My OS". In the early days of development, ToaruOS was rather consistently referred to as とあるOS, and over time this changed to the romanized ToAruOS and later to ToaruOS simply because it was easier for people to read and write. The logo for the OS still bears the kana writing and is blatantly ripped from the logos of its namesakes. Following the Toaru theme, codenames for releases throughout development have come from characters from the series. As for how to pronounce it, here's a handy guide for English speakers: toe ah roo (oh ess).

Building ToaruOS

Building ToaruOS from scratch can be tricky. The recommended build environment for ToaruOS is Ubuntu 16.04 or newer. Clone the repository and run the following commands:

make toolchain               # This will take several minutes (possibly up to 30, or more)
. toolchain/activate.sh      # Adds the toolchain binaries to $PATH
make                         # Builds the kernel, modules, and core userspace.
toolchain/install-python.sh  # Builds Python 3.6
toolchain/install-pycairo.sh # Builds PyCairo bindings to Cairo
make clean-disk; make        # Rebuilds the disk image with Python included.

You can run this development image with QEMU (make run) or VirtualBox (make virtualbox).

It is recommended that you also build a separate CD image. With your toolchain from the previous step activated, clone the repository again (to a different directory), and run:

toolchain/install-python.sh
toolchain/install-pycairo.sh
make cdrom

This will produce a toaruos.iso. You can run this image with make run-cdrom or with any supported environment.

Running ToaruOS

While we do what we can to ensure compatibility with actual hardware, we focus our development efforts on running ToaruOS in virtual machines such as QEMU and VirtualBox. If you choose to run ToaruOS on "bare metal", we recommend using the live CD, which should also function as a bootable USB stick on some platforms. Please be aware of the hardware requirements of the OS, both when using ToaruOS with real hardware and when using virtual machines.

The preferred environments are as follows:

  • VirtualBox:
    • OS Type: Other/Unknown
    • Memory: At least 1024MB
    • Video Memory: May need to be adjusted if you have a large display
  • QEMU:
    • qemu-system-i386 -M accel=kvm:tcg -m 1G -vga std -net nic,model=rtl8139 -net user -soundhw ac97,pcspk -cdrom toaruos.iso

If you are trying to run ToaruOS in Bochs, please set your clock to sync to realtime and be aware that the compositing window manager is somewhat demanding, so performance on Bochs (and other software emulators) may not provide a desirable experience.

The default user on both the CD and development hard disks is local with password local. You may also make use of the root user, with password toor, but a sudo implementation is available if you need to perform privileged tasks as a regular user.

Netboot Image

Attached to this release is a 2MB CD ISO labeled "netboot.iso". This image can be used on platforms with supported network configurations to boot into a downloaded userspace obtained from our website or a mirror. It will not function in environments without network support.

Hardware Compatibility / Drivers

Display

  • preset - 32-bit linear framebuffer set up by bootloader
  • qemu - Bochs/QEMU (and VirtualBox) virtual display device
  • vmware - VMware virtual display device

(The display driver will automatically detect from the above list by default, so you should not need to worry about setting this unless you are crafting your own Grub configuration.)

Network

  • e1000 - Intel PRO/1000 MT Desktop
  • pcnet - AMD PCnet-FAST II/III
  • rtl - Realtek RTL 8139

(All of these drivers are available by default, and if a supported network card is detected the driver for it will be initialized automatically.)

Audio

  • ac97 - Intel ICH AC'97
  • pcspkr - Basic beeper support

We are working to support the Intel HD Audio chipset in the future.

Disk

  • ata - ATAPI and (P)ATA with DMA support
  • ataold - (P)ATA without DMA support

(If you are using ToaruOS on real hardware, you may need to try the ataold driver if you have issues with the ata driver, or disable the ATA drivers entirely if you are running from a live CD.)

File Systems

  • ext2 - Ext2 (basic write support is available, but may be unstable - detailed bug reports are appreciated)
  • iso9660 - Read support for CD filesystems

Keyboard/Mouse

  • ps2kbd - PS/2 keyboard
  • ps2mouse - PS/2 mouse (with scrollwheel and middle click)
  • vboxguest - Provides support for the "Mouse Integration" feature of VirtualBox

Things to Try

Install Packages

If you are running ToaruOS in an environment where networking is supported (QEMU and VirtualBox as configured in the previous section), you may want to try installing packages through the Package Manager. You can use the package manager from the command line:

sudo get-py vim # for example, will install the text editor

... or through the graphical interface available from the "Packages" icon on the desktop. Package removal is not available at this time.

Re...

Read more