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

ToaruOS v1.99.6

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 18 Sep 05:05

ToaruOS v1.99.6

Screenshot from 2021-09-18 13-49-35

What's New in v1.99.6?

  • CPU time tracking has been implemented, which finally brings a top utility and related libc functions.
  • The network stack has been expanded and the e1000 NIC driver has been rewritten. UDP sockets may now be bound, transmit throughput and reliability has been improved, and an interface to ICMP has been added (alongside a ping utility).
  • Performance in the package manager has been improved, and there are new packages: doom and mupdf.
  • The Julia set renderer has been rewritten with new palettes and exploration tools.
  • The EFI loader has been recovered, with new options.
  • Various improvements have been made to the panel, image viewer application, and file browser.
  • New assets for ToaruOS 2.0, including a new wallpaper and logo.
  • The terminal and file browser text input bar now display an I-beam cursor.
  • Rudimentary support has been added for timezones, with automatic detection at startup if networking is available.

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 and possibly EFI.

Changelog

  • ata: Don't make device nodes for disks that claim to be empty
  • ata: identify disk before checking its size...
  • base: Land new assets for 2.0
  • boot: Rewrite README
  • boot: merge retooled EFI loader
  • chown: fixup semantics, support names in command
  • compositor: Add I-beam cursor; logic in terminal, file-browser
  • compositor: fixup tiling sizes for one pixel of overlap, not two
  • compositor: realign pointing hand cursor
  • cpuwidget: CPU usage graph
  • decorations: Use a single spritesheet for window borders
  • decorations: try to be a bit smarter about drawing titlebar elements
  • dhclient: fallback to /var/resolv.conf if /etc is read-only
  • e1000: Don't print that message
  • e1000: More driver rewrites
  • e1000: More transmit changes...
  • e1000: Receive SRPD irqs?
  • e1000: add ref link
  • e1000: remove print
  • e1000: rewrite tx a bit
  • ext2: Recover (experimental) ext2 filesystem driver
  • ext2: report ROFS
  • fetch: print total time when done, instead of 0.0 remaining
  • file-browser: Add picker mode
  • graphics: actually fix that off-by-one in draw_sprite_alpha
  • graphics: off-by-one on scanline width in draw_sprite_alpha
  • help-browser: viably display the AGPL text for the mupdf package
  • imgviewer: small improvements
  • ipv4: Don't wait so long for initial arp response
  • ipv4: try to arp local stuff?
  • julia: change defaults
  • julia: completely retooled julia set explorer
  • julia: fixups
  • kernel: Higher resolution CpuPermille
  • kernel: Should not need to use temporary buffer for fxsave/rstr
  • kernel: Track relative CPU usage over one-second spans
  • kernel: more sensible idle tracking
  • kernel: times() can take NULL
  • kernel: track idle task usage
  • lfbvideo: Fallback to port-IO driver if MMIO isn't available
  • libc: cleanup, some missing things
  • libm: Hyperolibc trig functions
  • localtime: rudimentary, incorrect support for timezone offsets
  • make: Default to 2 SMP cores so we're consistently testing with SMP enabled
  • make: Ensure we're creating /usr/bin so we can put auto-dep.krk in it
  • mmu: Actually read multiboot mmap data
  • mmu: Reserve a few more initial PTs so we can support 64GiB of memory
  • msk: clean up after ourselves
  • msk: keep using an intermediary file for gunzip as it's still way faster than the pipe
  • net: Handle signals
  • net: Maybe allow udp binds?
  • net: add missing declaration
  • net: another batch of rewrites
  • net: e1000 receive fixes?
  • net: ongoing network work
  • nproc: Expose processor count and use it to pick between yielding and non-yielding spin locks
  • panel: Show icon of current window at full opacity
  • pci: Implement PIIX4 PIRQ remapping
  • pex: Actually try to close server endpoints
  • pex: Cleanup pipes?
  • piix4: move to module, only load in virtualbox
  • ping: Keep pinging, show summary on ^C
  • ping: fancier sub-ms printing (I think %Ng is supposed to do this, but mine might be broken?)
  • ping: shoddy implementation
  • procfs: cleanup /proc/idle format
  • procfs: quick-and-dirty /proc/kallsyms, missing modules
  • ps: Include thread CPU usage in parent when not queried with -T
  • readelf: fix typo in usage
  • readme: Update references to EFI loader
  • smp: Co-opt Multiboot's config_table member to sneak ACPI tables to kernel
  • smp: Force userspace preemption on other cores.
  • tcp: Time out connection after 3 attempts, reduce time between resends
  • tcp: handle connection refused
  • terminal: fix bad bounds in mouse position check
  • terminal: various cleanups
  • time: Try to figure out some sensible timezone names from the TZ offset, and collect that from ip-api
  • times: rudimentary support for process times
  • tmpfs: Make total block allocations available through a procfs entry
  • tmpfs: finer-grained locks, use global mmu mapping
  • top: Differentiate general memory from memory used for tmpfs
  • top: Track multiple slices of usage, show averages
  • top: code cleanup
  • top: fixup memory leaks
  • top: process monitor
  • touch: don't segfault when unable to touch
  • touch: don't segfault when unable to touch
  • tutorial: Adjust spacings, fix centering
  • udp: add bind() and recv() test tool
  • util: Add working bochsrc

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.