Releases: klange/toaruos
v1.2.1
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
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
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
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
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
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
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
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
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
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
- OS Type:
- 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.