Redox OS 0.8.0

Megjelent a UNIX-szerű, Rust-ban írt operációs rendszer, a Redox OS 0.8.0-s kiadása, venne masszív változásokkal a 0.7.0-hoz képest:

General

  • Vast improvements to the book
  • Support for i686 (32-bit x86 from the Pentium II and up) has been added, and is generally working on real hardware
  • Support for aarch64 (64-bit ARM) has been improved, and is booting to login on QEMU. Real hardware is not working yet
  • Support for multiple displays, if firmware provides framebuffer information
  • Audio is now generally supported
  • BIOS and EFI images have been merged, one install can boot on either
  • The clone and exec syscalls have been moved to userspace. This change also involved the introduction of bootstrap and escalated. bootstrap is a very simply linked program the kernel loads into userspace, that can then handle loading ELF files such as init. escalated provides support for setuid programs like sudo.
  • Use the redox-daemon crate to simplify setting up daemons
  • Update cargo lock files on most repositories

redox

  • A work in progress hardware compatibility list was added, please consider contributing your own information: https://gitlab.redox-os.org/redox-os/redox/-/blob/master/HARDWARE.md
  • The build system was refactored to allow building multiple architectures in one source tree
  • Multiple filesystem configs are provided, and can be built side by side in the same source tree. The default is at config/ARCH/desktop.toml, where ARCH is by default x86_64
  • A demo configuration, providing example applications not present in the desktop configuration, has been added
  • A build.sh script was added to make building for different architectures and configurations easier
  • An option for building with podman was added. This option will eventually become the default, as it eliminates many issues with ensuring a clean build environment on any potential Linux distribution a user may want to build on
  • The bootloader, kernel, and initfs packages are now built by the cookbook like every other package
  • BIOS and UEFI images have been merged
  • ISOLinux has been removed, now the bootloader supports booting from CD-ROM and images always have valid ISO headers

cookbook

  • Support for i686 was added
  • Builds now happen in a architecture specific folder, so multiple architectures can be built in the same source tree
  • Icons and manifests were added for a number of GUI programs, making them show up in the launcher
  • Various new recipes were added and many recipes were updated, see detailed link: https://gitlab.redox-os.org/redox-os/cookbook/-/compare/c9e203a...3d72057

audiod

  • Support for software volume control was added, with the default being 50%, as this ends up working well on real hardware. This volume control works by multiplying the samples by the cube of the volume as a ratio. So, for the default of 50%, each sample is multiplied by 0.125.

bootloader

  • Support for i686 (BIOS) was added
  • Support for aarch64 (UEFI) was improved
  • Read performance was increased for BIOS systems
  • The bootloader can now boot from the same disk image for both BIOS and UEFI systems
  • CHS (cylinder, head, sector) support has been added for CD boot
  • ISO metadata was added to all disk images
  • Framebuffer stride is now provided to the OS
  • Multiple displays can now be supported, if using UEFI and there is a GOP driver for each display
  • Various fixes for problems on real hardware, see detailed link: https://gitlab.redox-os.org/redox-os/bootloader/-/compare/c92ba0b...d398e37

drivers

  • Support for i686 was added
  • Support for aarch64 was improved
  • Added AC’97 and IDE drivers, which are common on i686 systems
  • Intel HD Audio driver has been enabled by default, and has had various improvements:
    • Improved detection of best output path. Pin sense information is used, and headphones are prioritized over speakers if they are plugged in
    • Improved buffer sizing and usage. This prevents static while ensuring latency is still low. The ac97 driver has identical buffer sizing for consistency
    • Ensure all widgets in output path are in power state D0 (on)
    • Set headphone amp enable on output pins
    • Fix output stream cyclic buffer length
    • Ensure all input and output amps in output path are set to 0 dB, based on their reported capabilities
    • Wait for output stream to start before completing initialization
    • Add a file where codec information can be read audiohw:codec
    • Add MSI support
  • NVMe driver has had fixes to improve real hardware support
  • PCI driver now supports both 32-bit and 64-bit memory BARs
  • PS/2 driver has had fixes to ensure more touchpads are working properly
  • PS/2 driver now handles extended scancodes, providing volume up/down/mute support
  • RTL8168 driver now supports MSI and MSI-X
  • USB HID driver can now support QEMU’s USB keyboard, mouse, and touchpad. Real hardware support is blocked pending fixes in the XHCI driver
  • VESA driver can now handle multiple displays, if information is provided by firmware

installer

kernel

  • Support for i686 was added
  • Support for aarch64 was improved
  • clone syscall was removed, replaced by userspace
  • exec syscall was removed, replaced by userspace
  • Support for userspace manipulation of address spaces was added
  • Kernel memory space was greatly simplified
  • RMM integration was completed, old recursive paging code has been removed
  • Support for reading partial time between timer ticks, with very high accuracy
  • Highly accurate CPU time is now stored per context and shown in sys:context
  • Internal time tracking changed to u128 of nanoseconds
  • Preemptive context switch timer reduced to 6.75ms, to reduce latency
  • llvm_asm replaced with new asm macro
  • initfs scheme moved to userspace
  • Fixes for real hardware issues
  • The kernel in particular had a lot of changes this cycle, see detailed link: https://gitlab.redox-os.org/redox-os/kernel/-/compare/b5a9301...d298459. The syscall crate also changed to support these kernel changes, and those changes are included

orbital

  • Support for multiple displays, if firmware provides information
  • Pass super keypresses to launcher, which allows the launcher to specify shortcuts like Super+T for launching a terminal, Super+B for launching a browser, and Super+F for launching a file manager
  • Improvements for relative mouse cursor handling (used often by games)
  • Improved reliability when displays are resized (supported by VirtualBox)
  • Volume can be changed with volume keys or Super+[ for volume down, Super+] for volume up, and Super+\\ for volume toggle
  • On-screen display when volume changes

orbutils

  • Autofill username if there is only one user (usually user on a Redox image)
  • Do not keep login background resident in memory
  • Support loading background on multiple displays
  • Show categories in start menu if defined in manifests. Games is a new catagory, for example

redoxfs

relibc

Exhaustive Details

Here is an exhaustive list of changes, generated by the new changelog script: