Redox OS 0.7.0
redox-os.org
redox-os.org
It would be great if it could get some traction on Linux as any level of success on Linux would bring a relatively large audience and substantial testing. A filesystem also seems like the kind of place that Rust features would be very welcome. The fact that Linux is moving towards allowing Rust usage gives me hope that Redoxfs could make it into the kernel at some point.
One question I have is: Is there any plan or prioritisation to get Firefox running on Redox? Totally understand if that's way down the line of prerequisites of course :)
Therefore, it is sensible that other approaches are being considered.
This is a unix-like, and none of those are inherit to unix/derivatives; there are small unixen, there are microkernel unixen, containers are popular, and whatever security model you want, someone has hacked it onto an existing unix-family OS.
GNU Hurd on drivers, you can use the ones from GNU/Linux I think. On global namespaces, I'd say Plan9/9front it's Unix 2.0.
(P.s. thanks for starting the gargantuan task of writing a modern OS in a memory safe language)
Are you counting the ability itself to open sockets as a "file descriptor"? Is it straightforward to implement a "namespace" (not sure if I'm using that correctly) that limits network access to certain IP addresses? Certain domains?
Would you mind sharing any details of your dev setup (HW/SW)?
I have loads of computers (which helps when doing OS work!) but my main one is my desktop. I have a System76 Thelio Mira with AMD Ryzen 9 5950X CPU, AMD Radeon RX 6900 XT GPU, 128 GB DDR4-3200 ECC RAM, a couple PCIe Gen 4 drives, and a couple larger PCIe Gen 3 drives. The most important parts of my setup, though, are my System76 Launch keyboard and 3x LG 27GL850 monitors. There's also probably a mouse somewhere.
This computer runs primarily Pop!_OS 22.04 LTS, but on those extra drives I often have some other OS's installed for testing. I also use loads of VM's, as you can probably imagine.
For apps, I mostly use Alacritty for my terminal, Firefox for my browser, and Vim for my editor.
I basically wish more OSs would allow me to easily isolate the different "topics" of my life like gaming, studying, banking, etc.
Also, are most syscalls async?
Syscalls are mostly sync, but with some syscalls for doing blocking operations asynchronously, like on Linux.
Going by the screenshot, I am guessing it'll require x86_64, and that I should built it myself for some other architecture (which ones are supported? This is not easy to find either, yet it belongs to the bulletpoint list in the front page).
Too much bad design (UNIX-like, drivers in the kernel, global namespaces, ambient security) out there.
It is fascinating to see the emphasis on working with a broad range of hardware and low level features like the file system. Contrast this with something like SerenityOS where they spend so much time on things like the web browser and where many contributors are working on things like fonts and dialog boxes.
This leads me to ask, “what are your goals and ambitions for Redox?”. How should I be thinking about it? Who should be using it today and tomorrow?
Some people have asked what is unique about Redox as if being an OS in Rust is not enough. That is not really what I am asking.
If I am allowed to ask another question, “what’s next?”.
Improving this so it can be used to have permanent installs of Redox OS, and then improving rustc so those installs can build software for Redox OS (self-hosted), would accelerate development so we can take on bigger, higher level projects.
(This would be a great thing to flesh out in the official docs, currently there are a lot of TODOs in those sections)
Is it really Redirect-on-Write?
I ask this because I use what I would call "a rather capable" 64-bit laptop that normally does nothing but yet can easily struggle with some web-based multimedia service running in a browser.
I tried v0.6 a couple of weeks ago, shortly after TheRegister.co.uk had an article on it.
v6's major lack was self hosting and from the release notes it seemed far away, but with v7 it's now mentioned as one of the main user visible new features...
only I can't find 'rustc' or 'cargo', so I'm afraid that capability isn't quite there yet, correct?
Like your hardware btw. mine's rather similar only home-grown with same CPU and RAM, but an RTX2080ti GPU, 10Gbit Ethernet, dual NVMe but also dual tray-less 2.5" SATA SSD hot-swap enclosure, pretty much like 1.44" floppy disks at SSD speed and Terabyte capacity, so I can swap operating systems like floppies.
I'd love to have the same for NVMe, but those solutions are rare, pricey and most likely troublesome, unless you have retimers in place.
I strongly doubt that within scope for a single developer, but I would absolutely love to be able to run Linux software on something that's not Linux.
I imagine the biggest barrier to adoption is always application support. If I can run chrome on an OS you made last week, I'll be set
I've never designed an OS so I might be off base here.
If you are interested in OS design, I suggest taking a look at NetBSD. It is a full OS supporting a bunch of different platforms all in one source tree and not quite as complex as Linux while still supporting most software the works on Linux. It has a nice crosscompile system and "rump kernels" that allow large parts of the kernel to be run in userland for testing (I think GNU Hurd also uses this for some device support). I think it has had at least a couple hundred active volunteer developers at any particular time for about three decades now (vs 7 years with mostly one developer it looks like for Redox). It is really quite a lot of work. src/sys is the kernel and src/sys/arch has the platform specific code, such as:
https://nxr.netbsd.org/xref/src/sys/arch/amd64/
https://nxr.netbsd.org/xref/src/sys/arch/x86/
x86 has the generic x86 support shared between 32-bit and 64-bit systems while amd64 has the 64-bit specific stuff. The rest of the tree is relatively easy to understand as well (e.g. most devices are under src/sys/dev), although a few things are in less than optimal place due to NetBSD still using CVS (there are git and hg mirrors so no need to learn CVS). The tech-* mailing lists can have interesting discussions.
https://mail-index.netbsd.org/
For Linux, LWN is a great resource for learning about OS stuff with in depth summaries of disscusions on many topics as they come up:
It looks like Redox has a web forum, subreddit, and gitlab issues:
If never been good at C, but I'm enjoying reading though this
I do see a lot of unsafe keyword, are they inevitable?
As soon as there's a working compiler it might be fun to implement something like gentoo's ports system, would be quite fun to run something like that as an excercise in how far pure rust can get you. :D
Actually the Rust ecosystem is doing some exciting work on supply chain security[1], but it would be good to have something like pacman-bintrans[2] supported from day one of any new distro.
[0] https://theupdateframework.io/
[1] https://docs.rs/cargo_crev_reviews/2022.122.1621/cargo_crev_...
Did you not navigate to the main page?