Skip to content

ToaruOS v1.99.8

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 21 Oct 02:22

Screenshot from 2021-10-21 11-22-24

What's New in v1.99.8?

A number of improvements have been made since 1.99.7:

  • The bootloader now supports disk boot, loads the kernel and ramdisk after displaying the menu, and can support both ELF and AOUT_KLUDGE Multiboot payloads.
  • Misaka is now capable of being booted as a Multiboot 2 payload, and can also be directly used as an Elf64 without having to be objcopy'd to an Elf32.
  • Misaka has a new debug and early startup logging interface.
  • The network subsystem now supports statistics counters.
  • The cpuwidget monitor tool has been improved to include memory and network statistics.
  • Various bug fixes based on user testing.

What is ToaruOS?

ToaruOS is a hobbyist, educational operating system for x86-64 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 GCC, Quake, 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.

Release Files

image.iso is the standard build of ToaruOS, built by the Github Actions CI workflow. It uses ToaruOS's native bootloaders and should work in most virtual machines using BIOS.

Changelog

  • ata: Ensure we lock around submitting ATAPI command so we're woken up correctly
  • ata: fix bad timeout on ATAPI initialization, fixes vbox seeing the CD
  • base: Accept QEMU IDE controller for ata driver autoload
  • base: Load ATA drivers on vbox if IDE is detected
  • base: Load iso9660 and add a desktop icon when mounting CD at boot
  • base: Load the piix4 remapper if we see the ISA bridge; fixes OVFM under qemu without -M q35
  • base: Only show tutorial once on first graphical login for 'local'
  • base: Print message when loading drivers on startup
  • base: Update README.md
  • base: update package repository on startup
  • bim: Update gas highlighter
  • boot: Cleanup strings; spot-check memory on startup
  • boot: Jump back to real mode to load sectors?
  • boot: MBR / disk boot stub
  • boot: Set a kcmdline flag when debug is set in menu
  • boot: Support AOUT_KLUDGE kernels
  • boot: recommend 1GiB of RAM
  • calculator: Don't let the window get too tiny
  • compositor: refuse to initiate dragging when currently resizing
  • cpuwidget: Add to menu as 'System Monitor'
  • cpuwidget: Complete revamp
  • dbg: add backtrace command
  • es1371: Audio driver for vmware
  • fbterm: Only enable scrolling by default on vga terminal
  • fbterm: VGA backend, enable scrolling by default
  • fetch: Parse https and bail better
  • file-browser: Icons, identification of PDFs, little launcher wrapper
  • file-browser: fix up scroll dimensions for desktop, though we really do need to make that multi-column
  • glogin-provider: Fixup animation to not smear on slow systems
  • graphics: fixup aa line rasterizer
  • hda: stub module
  • insmod: Support passing arguments to modules
  • iso9660: try to catch some potential mount errors
  • kernel: Better fault reports
  • kernel: Fixup bad lock ordering in process_awaken_signal
  • kernel: Initial pass at new debug printf interface
  • kernel: Initial try at actual user buffer validation
  • kernel: Print tracebacks for more fatal errors
  • kernel: Use 'Misaka' as the system named presented by the kernel
  • kernel: make_process_ready may be called with sleep_lock already acquired?
  • kernel: oops
  • lfbvideo: recalculate vmware memory size on display change
  • libc: Fix bad logic when looking for IP address
  • libm: Add missing M_, INFINITY, NAN constants
  • libm: Add two missing functions
  • login: Return 2 when 'disconnect' is provided as a username
  • make: /usr/lib/ libs (from gcc) should come from TOOLCHAIN
  • make: Give write access to docker container's bin dir
  • make: Replace update-extents.py with a Kuroko equivalent
  • make: Why are we trying to echo PATH here?
  • make: bail if make fails?
  • net: Add stats counters
  • net: Oops, we broke UDP sends
  • net: don't explode without a network
  • netty: Fixup the reverse shell host for socket connections
  • sh: Recommend 'ifconfig' in place of 'ip'/'ipconfig'
  • smp: Don't just fatal() if there's too many cores; initialize up to 32
  • smp: allow command line override for where to scan for RSDP
  • splash-log, migrate: Cleanup
  • tcp: Fixup socket receive buffers
  • terminal-vga: Backport selection improvements from graphical terminal
  • terminal: Minor improvements to text selection
  • terminal: bind Ctrl Shift +, Ctrl -, Ctrl 0 to modify scaling
  • text: Expose method for brute-force path stroke
  • tutorial: Add a page about the live CD
  • util: Move ISO, FAT stuff to a library
  • x86_64: Cleanup boot messages to fit in vga text mode better
  • x86_64: Mark kernel with AOUT_KLUDGE address parameters so the 64-bit ELF can be booted directly
  • x86_64: Support multiboot2 loaders

Known Issues

  • The SMP scheduler is known to have performance issues.
  • Several utilities, libc functions, and hardware drivers are missing functionality.
  • There are many known security issues with ToaruOS. You should not use ToaruOS in a production environment - it is a hobby project, not a production operating system. If you find security issues in ToaruOS and would like to responsibly report them, please file a regular issue report here on GitHub.