[HN Gopher] Show HN: Wiser - minimal hypervisor boots Linux VM, ...
       ___________________________________________________________________
        
       Show HN: Wiser - minimal hypervisor boots Linux VM, written in C
        
       Author : flouthoc_fl
       Score  : 119 points
       Date   : 2021-07-22 11:08 UTC (11 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | flakiness wrote:
       | Once 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/
       | 
       | - [2]
       | https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool...
        
       | chaoticmass wrote:
       | Excuse my ignorance, but what is this sort of thing used for?
        
         | Topgamer7 wrote:
         | An 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
        
       | [deleted]
        
       | fwsgonzo wrote:
       | Not 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 wrote:
         | also really thanks for discussing about CPU SIGNATURE
         | specifically.
        
         | flouthoc_fl wrote:
         | This is a really nice feedback, thanks a lot.
        
       | qwertu wrote:
       | why you would want to choose C over others ?
        
         | FpUser wrote:
         | Maybe because it is their own project and it is their rights to
         | do however they see fit.
        
         | Santosh83 wrote:
         | The author has also written a Rust project: a minimal Linux
         | container framework. I guess these projects are for learning
         | purposes...
        
         | inshadows wrote:
         | I guess because it works?
         | 
         | I don't fear Rust Evangelism Strike Force. Bring it.
        
       | rwmj wrote:
       | How is it better than libkrun (written in Rust but with a C API).
        
         | netr0ute wrote:
         | It's another option.
        
         | oscargrouch wrote:
         | This 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
        
           | sigjuice wrote:
           | It will take a few years. We just got over the "written in
           | Go" era.
        
           | rileytg wrote:
           | afaik one of the reasons it is considered a feature is memory
           | safety. i agree a better selling point would be to say
           | "written in a memory safe language".
        
           | bobthebuilders wrote:
           | Rust 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...
        
             | throwawayboise wrote:
             | Colleges should not be churning out "programmers" with
             | skills in one language. Trade schools would be better for
             | that.
             | 
             | In college I learned theory and algorithms, and was exposed
             | to half a dozen programming languages at least. I mastered
             | none of them, that wasn't the point.
        
             | vp8989 wrote:
             | Are you implying that Rust takes less time to "learn"
             | (whatever that means) than C? Have you _seen_ Rust?
        
               | unrealhoang wrote:
               | Rust does take less time to learn than C.
        
               | Zababa wrote:
               | I think it's commonly accepted that it takes less time to
               | write memory-safe code in Rust than in C. It's also
               | commonly accepted that for stuff where you can leverage a
               | lots of libraries and mostly write glue code, Rust is
               | faster than C. It's up to you to evaluate if those are
               | your goals or not.
        
             | kobebrookskC3 wrote:
             | yeah, and that license should be revoked if you decide to
             | use a memory unsafe language for code exposed to untrusted
             | input
        
               | sergiomattei wrote:
               | Didn't you hear? It's only programming if you use
               | assembly.
               | 
               | Use of a memory safe or high level language results in
               | immediate revocation of the Programmer Card(tm).
        
           | riquito wrote:
           | > This whole "written in Rust" as if it was a feature BS must
           | stop someday.
           | 
           | I hope you can notice the hypocrisy when the title of this
           | post has "written in <language>" in it but you have no qualm
           | with it. The comment you are responding to didn't imply
           | anything, it could have mentioned any language, try to read
           | with a more open mind
        
         | flouthoc_fl wrote:
         | actually 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.
        
       | flouthoc_fl wrote:
       | Its is hypervisor-ish as of now more like a vm monitor.
        
         | gwd wrote:
         | Why 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.
        
           | jnwatson wrote:
           | KVM 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.
        
           | flouthoc_fl wrote:
           | @gwd you are correct vmm is a better fit. I'll update the
           | repo thanks for the feedback :)
        
         | flouthoc_fl wrote:
         | it is*
        
           | tsegratis wrote:
           | Wow, nice work, great name
           | 
           | What's your roadmap?
        
             | flouthoc_fl wrote:
             | Its something to think upon. As of now i don't have
             | anything, just fix bugs and complete unfinished components
             | maybe :).
        
       ___________________________________________________________________
       (page generated 2021-07-22 23:02 UTC)