This is a cool intro to how virtualization instructions work, but people need to understand that it is not revolutionary simplicity or anything like that. It's just a a cool tech demo lacking all the important bits of a modern hypervisor required to make it practical, like paravirtualized drivers for example.
Same when someone claims to have written an OS in 1000 lines and all it does is get you to real mode with VGA graphics and an interactive (but useless) prompt.
(Note that you can benefit from virtualization technology in specialized scenarios outside common hypervisors, but that's not really what's being demoed here.)
This is a cool intro to how virtualization instructions work, but people need to understand that it is not revolutionary simplicity or anything like that. It's just a a cool tech demo lacking all the important bits of a modern hypervisor required to make it practical, like paravirtualized drivers for example.
Same when someone claims to have written an OS in 1000 lines and all it does is get you to real mode with VGA graphics and an interactive (but useless) prompt.
(Note that you can benefit from virtualization technology in specialized scenarios outside common hypervisors, but that's not really what's being demoed here.)
Why does it need qemu? Isn't it a qemu?
I guess because it's a risc-v hypervisor and the author expects you to run it on an x86 machine.
Also discussed at:
https://news.ycombinator.com/item?id=45070019
Hm I would like to see this in C rather than Rust. And I wonder if you can run the 1000 line OS in C along with the 1000 line hypervisor
It would be nice to see a demo!
This repo seems to handle VM exits and memory initialization : https://github.com/soulxu/kvmsample/blob/master/main.c
I'd say it's a good place to start !
How do you define an OS? You can write an EFI "OS" that prints "Hello, world" in approximately 5 lines.
It's a bit more than that.
> We'll implement basic context switching, paging, user mode, a command-line shell, a disk device driver, and file read/write operations in C.
see https://1000os.seiya.me/en/
See also https://ionescu007.github.io/SimpleVisor/ in around 500 lines of C.
That's not risc-v, though.