ToaruOS v1.99.10
Pre-releaseToaruOS v1.99.10
What's New in v1.99.10?
This is the last beta release of ToaruOS 2.0.
- A number of issues with the ATA disk drivers and ext2 filesystem have been fixed, though both are still considered unstable and disk-based installations are not recommended.
- The panel has been largely rewritten to load libraries for widgets. Further improvements are planned for the panel widget system.
- The window switcher has been vastly improved with multiple window previews and a design I totally stole from Gnome.
- The terminal emulator's rendering pipeline has been rewritten. Asynchronous redraws allow for significant improvements in throughput, though some latency may be visible.
- Copy-on-write support has been added to the kernel for
fork()
operations. - An issue with the userspace dynamic linker that caused
gcc
to have extremely long startup times (up to a second) has been resolved.
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
: New disk scheduler; less terrible but very slowata
: deal in pages, not sectorsata
: drop the disk scheduler task and just use a proper sleepable mutexata
: fix badly allocated prdtata
: slap a warning at the top of thatbase
: make sure dir exists to build host Kurokobim
: sync with upstreambim
: version 3.0.0block-dev-stats
: Test tool for ongoing ata rewriteboot
: Select current mode on video menu; esc to go back without changingboot
: first pass at cleanup, just make sure everything has lead commentse1000
: Remove debug procfs entry that was causing errorsext2
: Add some necessary mutexes around block and inode allocationext2
: Assign correct ownership of new filesext2
: No cache for youext2
: Try to make this less brokenext2
: fix block group calculation for inodesext2
: fixup expanding directoriesgunzip
: Hidden option to print progress reports, for debuggingioctl
: request should be 'unsigned long'kernel
: Add simple mutex with a wait queuekernel
: Implement basic copy-on-write for fork()kernel
: Possibly fix sporadic lockup in compositor?kernel
: Use local APIC timer for preemption on APs, not an IPIkernel
: at least add full lead comments to everythingkernel
: bad ordering of list insert / wakeup caused crasheskernel
: clean up kernel/arch/x86_64/{cmos,pit}.ckernel
: cleanup kernel/arch/x86_64/idt.ckernel
: cleanup kernel/arch/x86_64/smp.ckernel
: cleanup kernel/arch/x86_64/user.ckernel
: cleanup kernel/generic.ckernel
: cleanup things introduced in COWkernel
: prevent modules from being loaded multiple timesld.so
: Use a much bigger hash size and cc1 loads a lot fastermenu
: Better tail alignment for bubble windowsmenu
: Disallow dragging/resizing of menu windowsmeta
: Stop recommended recursive git checkout, since it pulls in gcc/binutilsmeta
: Update all of the heading comments in apps/meta
: Update leading comments in modules/meta
: We shouldn't need to link -lgcc in the kernelmeta
: purge most instances of vim hintsnetty
: quick hack to use threads so pasting doesn't deadlockpanel
: Add notifications when a network connects/disconnectspanel
: Apply smarter alignment to popup menuspanel
: Don't crash when alt-tab window is open and the last tabable window closespanel
: First pass at modularizationpanel
: Improvements to the window switcherpanel
: Little improvements to weather widgetpanel
: always prefer center alignment for popupspanel
: cleanup widgets, part 1panel
: fixup window title display in alt-tab switcherpanel
: redo layout when panel resizessync
: Support argumentsync
: temporary thing for testing; not a proper syncsysinfo
: Try to be slightly smarter about printing logotarfs
: throw EROFS on createterminal-vga
: Rewrite display caching so it's actually fast, and bufferedterminal
: Add some functionality to the -g flagterminal
: defer updates; not fully asynchronousterminal
: rewrite redraw logic to be more bufferedterminal
: support ^[[3J to clear scrollbacktext
: Should have been doing two box blurs this whole timetop
: Allow sorting by command linetop
: Don't cap at 100, but do format >=100 differentlytop
: cap CPU%/CPUA at 100x86_64
: fixup bad memory walk when doing backtraces
Known Issues
- Several utilities, libc functions, and hardware drivers are missing functionality.
- The ext2 driver is known to set incorrect block counts on inodes.
- 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.