[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [MirageOS-devel] Rust unikernels
Hello! A chat on Twitter showed some interest in unikernels developed in Rust, and I was pointed here for further discussion. First, I want to acknowledge the amazing work done on MirageOS by everybody here. I have followed it from afar for some time, and there has been great progress to make it available and usable. Second, I know making a unikernel system means years of work and a team of developers and testers. I am not planning to attempt it alone. What I want is to sort out the skills needed, the big pitfalls, the important milestones, and know about the unknown unknowns. Then push for that project in the Rust community. From the beginning, people experimented with OS development in Rust (cf https://github.com/ryanra/RustOS https://github.com/thepowersgang/rust-barebones-kernel or https://github.com/charliesome/rustboot ). There is also a very active IRC channel, #rust-osdev on irc.mozilla.org From what I understand, the bare minimum to experiment would be an OS booting and communicating with a network card, scheduling and task switching, remote debugging, a network stack. Also, tools to help in building, deploying and testing applications. The ryanra/RustOS project seems well advanced, but it could use a network stack. A rough plan could be to take that project and: - strenghten the rtl8139 driver - write parsers and serializers for ARP, IP, TCP (it looks like MirageOS does not even need DHCP, since the IP address is passed at compilation time, is that right?). This is something I am already pushing for a parser combinators project I launched ( https://github.com/Geal/nom ) - building the API above that network stack - the system can be monotask at first, but preemtive threading should happen at some point - a part of Rust standard library is already available, I do not know how much is needed to support the use case of a HTTP server - building monitoring tools inside the kernel - building a testing infrastructure These steps look quite naive, but as I said, that's a very rough plan for something that could take years. As for the skills needed: - writing drivers and schedulers - developing network stacks (there are projects like https://github.com/libpnet/libpnet which could be integrated) - implementing Rust libstd APIs - testing and tooling industrialization What would you think of this project? What would increase its chances of success? Which steps will be very difficult? It could really benefit from Mirage's experience :) Cheers, Geoffroy Couprie _______________________________________________ MirageOS-devel mailing list MirageOS-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |