ToaruOS v1.99.6
Pre-releaseToaruOS v1.99.6
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
andmupdf
. - 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 emptyata
: identify disk before checking its size...base
: Land new assets for 2.0boot
: Rewrite READMEboot
: merge retooled EFI loaderchown
: fixup semantics, support names in commandcompositor
: Add I-beam cursor; logic in terminal, file-browsercompositor
: fixup tiling sizes for one pixel of overlap, not twocompositor
: realign pointing hand cursorcpuwidget
: CPU usage graphdecorations
: Use a single spritesheet for window bordersdecorations
: try to be a bit smarter about drawing titlebar elementsdhclient
: fallback to /var/resolv.conf if /etc is read-onlye1000
: Don't print that messagee1000
: More driver rewritese1000
: More transmit changes...e1000
: Receive SRPD irqs?e1000
: add ref linke1000
: remove printe1000
: rewrite tx a bitext2
: Recover (experimental) ext2 filesystem driverext2
: report ROFSfetch
: print total time when done, instead of 0.0 remainingfile-browser
: Add picker modegraphics
: actually fix that off-by-one in draw_sprite_alphagraphics
: off-by-one on scanline width in draw_sprite_alphahelp-browser
: viably display the AGPL text for the mupdf packageimgviewer
: small improvementsipv4
: Don't wait so long for initial arp responseipv4
: try to arp local stuff?julia
: change defaultsjulia
: completely retooled julia set explorerjulia
: fixupskernel
: Higher resolution CpuPermillekernel
: Should not need to use temporary buffer for fxsave/rstrkernel
: Track relative CPU usage over one-second spanskernel
: more sensible idle trackingkernel
: times() can take NULLkernel
: track idle task usagelfbvideo
: Fallback to port-IO driver if MMIO isn't availablelibc
: cleanup, some missing thingslibm
: Hyperolibc trig functionslocaltime
: rudimentary, incorrect support for timezone offsetsmake
: Default to 2 SMP cores so we're consistently testing with SMP enabledmake
: Ensure we're creating /usr/bin so we can put auto-dep.krk in itmmu
: Actually read multiboot mmap datammu
: Reserve a few more initial PTs so we can support 64GiB of memorymsk
: clean up after ourselvesmsk
: keep using an intermediary file for gunzip as it's still way faster than the pipenet
: Handle signalsnet
: Maybe allow udp binds?net
: add missing declarationnet
: another batch of rewritesnet
: e1000 receive fixes?net
: ongoing network worknproc
: Expose processor count and use it to pick between yielding and non-yielding spin lockspanel
: Show icon of current window at full opacitypci
: Implement PIIX4 PIRQ remappingpex
: Actually try to close server endpointspex
: Cleanup pipes?piix4
: move to module, only load in virtualboxping
: Keep pinging, show summary on ^Cping
: fancier sub-ms printing (I think %Ng is supposed to do this, but mine might be broken?)ping
: shoddy implementationprocfs
: cleanup /proc/idle formatprocfs
: quick-and-dirty /proc/kallsyms, missing modulesps
: Include thread CPU usage in parent when not queried with -Treadelf
: fix typo in usagereadme
: Update references to EFI loadersmp
: Co-opt Multiboot's config_table member to sneak ACPI tables to kernelsmp
: Force userspace preemption on other cores.tcp
: Time out connection after 3 attempts, reduce time between resendstcp
: handle connection refusedterminal
: fix bad bounds in mouse position checkterminal
: various cleanupstime
: Try to figure out some sensible timezone names from the TZ offset, and collect that from ip-apitimes
: rudimentary support for process timestmpfs
: Make total block allocations available through a procfs entrytmpfs
: finer-grained locks, use global mmu mappingtop
: Differentiate general memory from memory used for tmpfstop
: Track multiple slices of usage, show averagestop
: code cleanuptop
: fixup memory leakstop
: process monitortouch
: don't segfault when unable to touchtouch
: don't segfault when unable to touchtutorial
: Adjust spacings, fix centeringudp
: add bind() and recv() test toolutil
: 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.