4 ms·
Show HN: Wiser – minimal hypervisor boots Linux VM, written in C
- qwertu 5y agowhy you would want to choose C over others ?
- inshadows 5y agoI guess because it works? I don't fear Rust Evangelism Strike Force. Bring it.
- Santosh83 5y agoThe author has also written a Rust project: a minimal Linux container framework. I guess these projects are for learning purposes...
- FpUser 5y agoMaybe because it is their own project and it is their rights to do however they see fit.
- flouthoc_fl 5y agoIts is hypervisor-ish as of now more like a vm monitor.
- flouthoc_fl 5y agoit is*
- tsegratis 5y agoWow, nice work, great name What's your roadmap?
- flouthoc_fl 5y agoIts something to think upon. As of now i don't have anything, just fix bugs and complete unfinished components maybe :).
- gwd 5y agoWhy do you call it a hypervisor when it's more like a VMM? Even the name "VMM" is a quirk of KVM; before KVM, "virtual machine monitor" was another name for a hypervisor: that is, the thing that ran on the bare hardware and provided the virtual hardware interface to the VM. KVM has fairly unique architecture, where a VM is basically a process. I'm willing to tolerate that "drift" of meaning, because we need a word for the piece of software which converts a process into a VM, and "VMM" is a good fit. But I'd have to really object to the idea of calling such a piece of software a "hypervisor". If your plan is to make wiser into an actual hypervisor at some point, I'd appreciate it if you made that clear in your README.
- flouthoc_fl 5y ago@gwd you are correct vmm is a better fit. I'll update the repo thanks for the feedback :)
- jnwatson 5y agoKVM isn't particularly unique in its process architecture. It is a classic "type 2 hypervisor", just as Wiser is. I do prefer VMM as the term though.
- deleted 5y ago[deleted]
- rwmj 5y agoHow is it better than libkrun (written in Rust but with a C API).
- flouthoc_fl 5y agoactually its not at all better but maybe different , libkrun is far more advanced and has a better support. Wiser is only restricted as a CLI tool as of now.
- netr0ute 5y agoIt's another option.
- oscargrouch 5y agoThis whole "written in Rust" as if it was a feature BS must stop someday. Get the project 'A' features and compare with project 'B' features, the strength and weakness of programming languages will be apparent, on the features, runtime speed, bugs, etc.. Choosing a project over another just because its in a given language is not based on logical reasoning, but emotional reasoning and therefore the bad paths will get evident with time (Except of course if the language is really unsuitable to the domain, which is not the case here whether with C or Rust). This emotional bias for me is a reason to actually look at Rust projects with suspicious if people working on it know its just another tool with some given properties and not some magical wand that will turn everything into unicorns and rainbows. Note: this is also targeted at "why you would want to choose C over others ?" comment bellow in the same line
- bobthebuilders 5y agoRust is a langauge which exists because colleges want to churn out programmers who do have not spent the requitisre 4 years required to learn C. I really think we need some sort of licensing for programming...
- kobebrookskC3 5y agoyeah, and that license should be revoked if you decide to use a memory unsafe language for code exposed to untrusted input
- fwsgonzo 5y agoNot a lot of meat on this, but it looks nice from glancing at all the bits. I would recommend that you read the CPUID bits from the real CPU and copy most of them over so that the kernel can enable features like SSE4.x, AVX/AVX2 and various others. Use KVM_GET_SUPPORTED_CPUID and then KVM_SET_CPUID2. I would also set the CPU name to KVMKVMKVM and enable a few of the paravirtual devices like KVMCLOCK. Good luck with your project!
- flouthoc_fl 5y agoThis is a really nice feedback, thanks a lot.
- flouthoc_fl 5y agoalso really thanks for discussing about CPU SIGNATURE specifically.
- chaoticmass 5y agoExcuse my ignorance, but what is this sort of thing used for?
- Topgamer7 5y agoAn excellent example is Marcan's m1n1 hypervisor. He uses it to boot MacOS to inspect interactions between the OS and hardware calls. Part of his efforts to have native linux on m1 CPU based apple devices. There is a very technical video he gives an overview of his hypervisor: https://www.youtube.com/watch?v=igYgGH6PnOw https://www.youtube.com/watch?v=igYgGH6PnOw
- flakiness 5y agoOnce I read an LWN article about KVM [1] and it introduced a tool called kvmtool [2] and a tiny test program illustrating how to use the KVM API. However the sample program was too simple and the latest kvmtool seemed too complex for my taste. Wiser seems simple enough (5 small enough .c files). If it is capable to boot Linux, it can be a great learning material. Great job! - [1] https://lwn.net/Articles/658511/ https://lwn.net/Articles/658511/ - [2] https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git/ https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool...