ToaruOS v1.99.9
Pre-releaseWhat's New in v1.99.9?
We are nearing the end of the 1.99.x beta series and the final release of ToaruOS 2.0 will soon be ready.
This beta brings a number of improvements based on user feedback from v1.99.8:
- The BIOS bootloader now performs VESA modesetting and has been tested on real hardware.
- The startup process in general has been improved to provide a more visually coherent experience.
- The compositor now supports different window layers so that toast notifications appear above regular windows but below menus.
- The panel has a new volume slider:
- The alt+tab switcher shows windows previews:
- Packages are now hosted on a CDN that should see better download speeds for users not close to our original server's datacenter in San Francisco (users that include me!)
- A number of improvements have been made to kernel debugging, including better panic messages and more available symbol information for tracebacks.
- The network stack now provides an initial implementation of a local loopback.
Will there be a v1.99.10?
Possibly.
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 manually. 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 or EFI, and has also been successfully tested on some real hardware.
Changelog
assert
: use dprintf, not printf, when printing assertion messagebase
: Don't wait for msk on bootbase
: Ensure we're still providing the fake libm.sobase
: Install auto-dep.krk to /bin instead of /usr/binbase
: Show some toasts on startup.base
: Wait a bit before starting the wizardbim
: upstream bug fixboot
: Add 1280x800 as a preferred resolutionboot
: Add a shortcut to toggle video/text modeboot
: Clean up editor redraw, shift-arrow input?boot
: Don't clear lines before printing on them when drawing bannersboot
: Fall back to 24bpp modesboot
: Make sure menu displays if an unrecognized key is pressedboot
: Prettifyboot
: VBE modesettingboot
: fixup returning from editor to menuboot
: generalize video mode selection to work on BIOSboot
: retain last mode when toggle to text modebuild
: Remove C++ support, stop including libstdcxx on the ramdiskcalculator
: set binpath so we can at least import 'math'compositor
: Add a new OVERLAY layer, specifically for toastscompositor
: Add another layer above overlays for menus so they show in front of toastscompositor
: Animate bottom and top windows normally if they aren't marked ALT_ANIMATIONcompositor
: Hack to support 24bpp framebufferscompositor
: Restructure 'advertise' messages to provide window buffer, sizecompositor
: correctly set next focused window when a window closescpuwidget
: Cap graphs bettercpuwidget
: Legend cleanupcpuwidget
: Shoddily add interface names to network legendcpuwidget
: fix file descriptor leakdhclient
: Skip things that don't have hardware addressesfbterm
: Move log to center, set bg to blackfbterm
: Support 24bpp framebuffersfile-browser
: Don't restart when wallpaper changesfile-browser
: Show a different context menu when no files are selectedglogin-provider
: cleanup, remove animationi965
: Don't load if mode wasn't already setirq
: Mark isr_common as global so it shows up in symbol tablekernel
: Export sys_ functions so they appear in symbol tablekernel
: Fix gdt install clobbering symbol table, or whatever else ends up after itkernel
: Print gs alongside other registers in panickernel
: Put codename string in quotes for stylistic reasonskernel
: exclude serial ports from pts numbering; start numbering at 1kmalloc
: Use existing assertion infrastructurekuroko
: Bump for sendto() supportkuroko
: Sync with upstreamkuroko
: sync with upstreamlfbvideo
: Don't map EGA/VGA text mode range as WC as apparently things don't like thatlfbvideo
: Keep resolution set by loader if none specified by argslibc
: Update wcwidth with latest datamake
: Clean more stuffmake
: Default SMP=4 for qemu targets because why notmeta
: A note on licensesmeta
: Add .mailmapmeta
: Add more screenshotsmeta
: Cleanup Makefile, add some commentsmeta
: Cleanup, rewrite parts of the READMEmeta
: Describe filesystem structure in READMEmeta
: Fix typo in READMEmeta
: I really should not have to keep doing this. Please stop stealing my free code.meta
: Some README updatesmeta
: Update README, new screenshotmmu
: Be more clear about what's happening when we run out of RAMmmu
: Fixup mapping for physical memory address >4GiBmsk
: Fixup local manifest file resolutionmsk
: Fixup support for multiple remotes, add a few optionsmsk
: Switch back to using tar/gunzip with pipesmsk
: Switch package source to CDNmsk
: Use 192.168.11.* for local repo as it bails faster in vmwaremultiboot
: Correctly pass bits-per-pixel from framebuffer datanet
: initial loopback interface supportnet
: net_udp_send() should return size of data sentnet
: try to actually track received packet sizes...package-manager
: Spin up a thread to run 'msk'panel
: Add icon, update less oftenpanel
: Don't display loopback in network status widgetpanel
: Keep ticking the clock when receiving other eventspanel
: New volume slider menu widgetpanel
: Visual adjustments to sliderpipe
: Embiggen pipe bufferspipe
: Make pipes more direct with ring buffer usagereadelf
: Fix missing -d optionringbuffer
: don't use heap allocator if buffer size is one pagesocket
: Purge rx queue when socket closes?splash-log
: Cleanup, disable log if 'debug' is not specified, unless we take too longsplash-log
: Retain last message to print it if we switch out of quiet modesysinfo
: Update, add CPU, re-add Fontterminal
: make scrollback more efficient?toastd
: Adjust spacing, try to vertically center textvbox
: Minor cleanup, don't process events we didn't get an IRQ forx86_64
: Don't wrap version codename in quotes as we're doing that directly now
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.