6 ms·
QEMU 10.1.0
- ducktective 1y agoAwesome tech! It's not possible to run an android VM on QEMU right? As in, is it officially supported? (I know about Waydroid)
- homebrewer 1y agoThe official Android "emulator" supplied by Google is qemu. If you're not satisfied with it for some reason, IIRC I used these images some years ago on top of vanilla qemu: https://www.fosshub.com/Android-x86.html https://www.fosshub.com/Android-x86.html They don't seem to be well supported anymore, and there aren't many prebuilt alternatives. One can always compile AOSP from source, though Google does not make this easy.
- acuozzo 1y ago> The official Android "emulator" supplied by Google is qemu Nitpick: It's a fork of QEMU. There are quite a few Google-exclusive changes bundled-in.
- epilys 1y agoYes, it's possible and supported. QEMU can emulate an aarch64 system, and Google provides aarch64 Android builds for virtual machines specifically, called "Cuttlefish". Search for keywords "Android Cuttlefish QEMU" for instructions.
- evrennetwork 1y ago[dead]
- xhrpost 1y agoDidn't realize there was a MIPS build of Windows NT. Which led me to wikipedia to find there were a lot of other architectures supported in the past.
- cbm-vic-20 1y agoIn my last job, I was on the team that handled the Windows NT bulid on DEC Alpha. Native Alpha apps were much faster than the equivalent Intel NT machines. Apropos to this topic, DEC had a sybsystem called FX!32 that was sort of like what Rosetta does for Apple Silicon, allowing Intel apps to be run at useable speeds on Alpha. https://en.wikipedia.org/wiki/FX!32 https://en.wikipedia.org/wiki/FX!32
- mrlonglong 1y agoIf I still had my UltraSPARC, I'd be wanting to find the SPARC port of Windows NT.
- tracker1 1y agoI'm curious if QEMU will ever support features like x86(_64) hardware paths that with Arm and RISC-V... Since most of the patents are now expired, it makes a lot of sense. Apple seems to be further along here than other competitors, but it seems to be limited to Rosetta, not broadly supported.
- jbotz 1y agohttps://en.wikipedia.org/wiki/Fabrice_Bellard https://en.wikipedia.org/wiki/Fabrice_Bellard
- simonebrunozzi 1y agoCurious: how do people use Qemu the most these days? Dev environment? Running specific apps on a different OS? I don't know... gaming?
- alexrp 1y agoFor Zig we use QEMU to run our module test suites on a broad range of targets that we don't necessarily have real hardware for: https://github.com/ziglang/zig/blob/50edad37ba745502174e49af922b179b1efdd99c/test/tests.zig#L157-L1195 https://github.com/ziglang/zig/blob/50edad37ba745502174e49af...
- nativeit 1y agoMine is a rather prosaic example, but I'm sure it's not uncommon: Proxmox on leased bare metal servers make for wonderful (small scale, but impressively equipped at ~$100/mo) cheap dev hosting. If you find yourself limited by the equivalent VPS expense, I discovered that for my use-case (mixed web hosting, dev services, self-hosting) I could squeeze a lot more out of an entry level bare-metal box with ~48GB of RAM, and everything just becomes a VM in Proxmox, and it's still trivially simple to scale/replicate, maintain backups, and tie together with other VPS or cloud services. The only part that was a bit of a challenge is negotiating NAT for the virtual NICs so you don't need separate IPv4 addresses for each guest. But Proxmox's docs are pretty robust, and I'm sure there are dozens of tuts available now.
- mdaniel 1y agoI'd suspect a great deal of people are secretly benefiting from qemu when they do $(docker build --platform linux/{arm64,amd64}) courtesy of binfmt_misc and a static copy of qemu - https://github.com/moby/buildkit/blob/v0.23.2/docs/multi-platform.md#:~:text=it%20gets%20executed%20using%20a%20qemu%20user-mode%20emulator https://github.com/moby/buildkit/blob/v0.23.2/docs/multi-pla... - https://github.com/moby/buildkit/blob/v0.23.2/Dockerfile#L165 https://github.com/moby/buildkit/blob/v0.23.2/Dockerfile#L16... - https://github.com/tonistiigi/binfmt/blob/buildkit/v9.2.2-54/Dockerfile#L8 https://github.com/tonistiigi/binfmt/blob/buildkit/v9.2.2-54... - https://github.com/tonistiigi/binfmt/blob/buildkit/v9.2.2-54/cmd/binfmt/main.go#L52 https://github.com/tonistiigi/binfmt/blob/buildkit/v9.2.2-54... and https://github.com/tonistiigi/binfmt/blob/buildkit/v9.2.2-54/cmd/binfmt/config.go#L29 https://github.com/tonistiigi/binfmt/blob/buildkit/v9.2.2-54... and let me tell you from first-hand experience, that trying to swap in an updated version of the bundled qemu binary when the static version panics on some mis-emulated instruction is some whooooooo, boy
- mrlonglong 1y agoFabrice Ballard is a genius.
- Havoc 1y agoTheir website appears to be broken? >(Cannot access the database)
- _joel 1y agoWFM
- dijit 1y agoQEMU is truly excellent software, from the perspective of a person who very rarely needs to emulate another architecture. It "just works" and has wonderful integrations with basically everything I could want.. sometimes it feels like magic: even if the commandline UX is a bit weird in places. I've always wondered though how it works with KVM: I know KVM is a virtualisation accelerator that enables passing through native code to the CPU somehow; but it feels like QEMU/KVM basically runs the internet now. Almost the entire modern cloud is built on QEMU and KVM as a hypervisor (right?) but I feel like I'm missing a lot about how it's working. I also wonder if this steals huge amounts of resources away from emulation, or does it end up helping out. Because to say the modern internet is largely running on QEMU is likely a massive understatement.
- teekert 1y agoIf you use it rarely, I can high recommend the excellent QuickEMU [0] Any VM is just a `quickget ubuntu 24.04` and `quickemu --vm ubuntu-24.04.conf` away. The conf file is just a yaml that is very readable and can give you more cores/ram/disk easily. Just run `quickget` to get a list of OS's to download. [0] https://github.com/quickemu-project/quickemu https://github.com/quickemu-project/quickemu
- mrheosuper 1y agoDoesn't the 'q' in 'qemu' stand for "Quick" ?
- teekert 1y agoLooks like it does :) Maybe take it up with Martin Wimpress, who probably meant it as a way to jar us all just a tad (knowing him from podcasts he probably has a witty and funny response to such inquiries).
- stinkbeetle 1y ago> I've always wondered though how it works with KVM Other people have given some more comprehensive explanations, but I'll try to put it as simply as possible. Plain QEMU has a CPU emulation layer called TCG. The machine basically consists of memory (RAM and MMIO devices) and CPUs (CPU registers and state). When QEMU has set up the machine and is ready to run, it calls TCG to say "given this memory and this initial CPU register state, start running instructions". When you use QEMU with KVM, the TCG emulation layer is swapped out with KVM and it asks KVM to start running instructions. That's it. KVM exposes APIs that caller can specify guest memory and initial CPU register state, and a call to run that CPU with that memory. Going a bit further, the hardware virtualization functions that KVM uses have the ability to map that memory with a second level of translation which lets KVM present it to the guest at the locations it expects, and to prevent the guest from accessing any memory that it should not. The hardware also has the ability to run the CPU in a mode where it has the normal set of registers (which is what QEMU wants), but it maintains some additional hypervisor control registers not available to the guest, and those can ensure the guest can't take complete control of the CPU (for example, the guest OS can "disable interrupts" with the usual MSR or similar bit and that does prevent the guest from getting interrupts, but that it does not disable hypervisor directed interrupts, so the hypervisor can always take back control of the CPU with a hypervisor-IPI or hypervisor timer interrupt). Further still: when running in plain QEMU mode, devices are emulated by registering MMIO ranges in the memory address space and emulated loads and stores have code to detect these regions and instead of performing a simple load or store, they call into device model code which handles it accordingly. When you plug KVM in, you can still use these emulated devices. These are modeled by using that second level page table to put "not-valid" mappings in those MMIO ranges. These cause the CPU to trigger a page fault when it tries to access them, and KVM sees this, looks up the table of memory registered by QEMU, and sees that it is an address which QEMU wants to handle, so it returns from the KVM_RUN system call with result code that indicates there was an MMIO read/write that needs to be handled. QEMU then directs this into its emulated device model. Then when QEMU has performed that device emulation, it calls back into KVM to continue running the CPU. It's all pretty clever. The really astounding thing is that most of the basic concepts for all this stuff were developed/discovered/invented like 50+ years ago.
- osrec 1y agoA great piece of software that makes my and my dev team's life infinitely better and easier. A big thank you to the QEMU developers :)
- mdaniel 1y agoI couldn't find any way to donate to QEMU directly, only https://sfconservancy.org/donate/ https://sfconservancy.org/donate/
- stefanha 1y agoDonations are possible through PayPal: https://www.qemu.org/donations/ https://www.qemu.org/donations/ QEMU is a Software Freedom Conservancy member project like Git, OpenWRT, and many others. You can donate through the Conservancy link you posted and mention which project you wish to support.
- stronglikedan 1y agoare you by any chance a checker at a grocery store?
- drzaiusx11 1y ago> Experimental support for compiling to WASM using Emscripten. Neat. This will unlock various online "playgrounds" for a number of CPU architectures, among other interesting use cases. Likely this was possible beforehand, but it's nice to see it added as a feature to the project directly.
- jononor 1y agoCould be cool for interactive simulator of microcontroller/embedded in browser.
- _mlbt 1y agoIf you’re on macOS or iOS, UTM is an excellent Qemu front end. https://getutm.app/ https://getutm.app/ https://mac.getutm.app/ https://mac.getutm.app/