Release of the Redox OS 0.7 operating system written in Rust

After a year and a half of development, the release of the Redox 0.7 operating system, developed using the Rust language and the microkernel concept, has been published. The developments of the project are distributed under the free MIT license. For testing Redox OS, installation and Live images are offered, 75 MB in size. The assemblies are generated for the x86_64 architecture and are available for systems with UEFI and BIOS.

When preparing a new release, the main attention was paid to ensuring work on real hardware. Main innovations:

  • The bootloader was completely rewritten, in which the code for booting on systems with BIOS and UEFI is unified and mainly written in Rust. Changing the bootloader has significantly expanded the range of supported hardware.
  • In the kernel, in addition to fixing bugs, work has been done to improve performance and expand hardware support. CPU-specific variables have been moved to use the GS register. Reflection (mapping) of all physical memory is provided, the use of recursive memory pages is stopped. The assembler code in inline inserts has been rewritten to improve compatibility with future releases of the compiler.
  • Added initial support for the AArch64 architecture.
  • Switched to processing all file paths in UTF-8 encoding.
  • The code for working with ACPI AML (ACPI Machine Language) Specification - uefi.org has been moved from the kernel to the acpid background process running in user space.
  • The contents of Initfs have been moved to a new file, making it easier to package.
  • The RedoxFS file system has been rewritten and switched to use the CoW (Copy-on-Write) mechanism, in which changes do not overwrite information, but are saved to a new location, which made it possible to achieve a significant increase in reliability. Of the new features of RedoxFS, support for transactional updates, data encryption using the AES algorithm, as well as assurance of data and metadata with digital signatures is noted. Shared use of the FS code in the system and the bootloader is provided.
  • The improvement of the Relibc standard C library developed by the project, which can work not only in Redox, but also in distributions based on the Linux kernel, has been continued. The changes made it easier to port various programs to Redox and solved problems with many programs and libraries written in the C language.
  • A version of the rustc compiler has been prepared that can run in Redox. Of the remaining tasks, performance optimization and adaptation of the cargo package manager to work in the Redox environment are noted.

Release of the Redox OS 0.7 operating system written in Rust

The operating system develops in accordance with the Unix philosophy and borrows some ideas from SeL4, Minix and Plan 9. Redox uses the microkernel concept, in which only communication between processes and resource management is provided at the kernel level, and all other functionality is placed in libraries that can be used both kernel and user applications. All drivers run in user space in isolated sandbox environments. For compatibility with existing applications, a special POSIX layer is provided that allows many programs to run without porting.

The system applies the principle "everything is a URL". For example, the URL β€œlog://” can be used for logging, β€œbus://” for inter-process communication, β€œtcp://” for network communication, and so on. Modules, which can be implemented as drivers, kernel extensions, and custom applications, can register their own URL handlers, for example, you can write an I/O access module and bind it to the "port_io://" URL, after which you can use it to access port 60 by opening the URL "port_io://60".

The user environment in Redox is built around Orbital's own graphical shell (not to be confused with the other Orbital shell that uses Qt and Wayland) and the OrbTk toolkit, which provides an API similar to Flutter, React and Redux. Netsurf is used as a web browser. The project also develops its own package manager, a set of standard utilities (binutils, coreutils, netutils, extrautils), the ion command shell, the relibc standard C library, the sodium vim-like text editor, the network stack, and the file system. The configuration is set in the Toml language.

Source: opennet.ru

Add a comment