7 ms·
Quickemu: Quickly run optimised Windows, macOS and Linux virtual machines
- arghwhat 3y agoThe convenience of such a tool is great, but it's also ~5000 lines of bash across the two main scripts. I'd want to vet such a thing before I run it, but I also really don't want to read 5000 lines of bash.
- keyringlight 3y agoI'd say this is a general issue with software, most generally how and what you do to establish trust, what expectations/responsibilities there are of a developer and user. The "many eyes make all bugs shallow" phrase does seem to be a little bit of a thought terminating cliché for some users, if it's open to scrutiny then it must be fine, conjuring an image of roaming packs of code auditors to inspect everything (I'd expect them more on the malicious side rather than benevolent) Over for windows, there's been a constant presence of tweak utilities for decades that attract people trying to get everything out of their system on the assumption that 'big corp' developers don't have the motivation to do so and leave easy options on the table behind quick config or registry tweaks that are universally useful. One that comes to mind which I see occasionally is TronScript which if I had to bet on it passes the 'sniff test' with its history and participation I'd say it's good, but presents itself as automation, abstracting away the details and hoping they make good decisions on your behalf. While you could dig into it and research/educate yourself on what is happening and why, for many it might as well be a binary. I think only saving grace for this is that most of these tools have a limited audience, so they're not worth compromising. When one brand does become used often enough you may get situations like CCleaner from piriform that was backdoored in 2017.
- wjdp 3y agoGoogled that, found the GitHub with a <h1> of > DO NOT DOWNLOAD TRON FROM GITHUB, IT WILL NOT WORK!! YOU NEED THE ENTIRE PACKAGE FROM r/TronScript I see later it mentions you can check some signed checksums but that doesn't inspire confidence. Very much epitomises the state of Windows tweaky utilities vs stuff you see on other platforms.
- nu11ptr 3y agoWhy is it different from any other software just because it is a shell script? Do you read the kernel sources for your OS before running it? Your web browser? My point is not that we should blindly run things, but that we all have criteria for what software we choose to run that typically doesn't rely on being familiar with its source code.
- hnfong 3y agoI believe GP implicitly assumes that bash (and generally POSIX-y shell script) has lots of quirks and footguns (to which I generally agree). After skimming through the source code though, I'd say the concerns are probably overstated.
- arghwhat 3y agoWell, yes, I read code of (and contribute to) the kernel and web browsers I use, but that's not really relevant. There's a big difference between "large, structured projects developed by thousands of companies with a clear goal" vs. "humongous shell script by small group that downloads and runs random things from the internet without proper validation". And my own personal opinion: The venn diagram of "Projects that have trustworthy design and security practices", and "projects that are based on multi-thousand line bash scripts" is two circles, each on their own distinct piece of paper. (Not trying to be mean to the developers - we all had to build our toolkits from somewhere.)
- freedomben 3y agoHeh, this reminds me a bit of when on live television Contessa Brewer tried to dismiss Mo Brooks with "well do you have an economics degree?" and he actually did and responded with "Yes ma'am I do, highest honors" :-D [1] I have no problem with (and have written a few) giant bash scripts, and I completely agree with you. A giant bash script isn't going to have many eyes on it, whereas a huge project like the kernel is going to get a ton of scrutiny. [1] https://www.youtube.com/watch?v=5mtQyEd-zS4 https://www.youtube.com/watch?v=5mtQyEd-zS4
- deleted 3y ago[deleted]
- elheffe80 3y agoProbably going to catch some flack for this comment but... if you are that concerned with it, and have some free time, you could always use chatgpt to talk about the code. A prompt could be: "You are a linux guru, and you have extensive experience with bash and all forms of unix/linux. I am going to be pasting a large amount of code in a little bit at a time. Every time I paste code and send it to you, you are going to add it to the previous code and ask me if I am done. When I am done we are going to talk about the code, and you are going to help me break it down and understand what is going on. If you understand you will ask me to start sending code, otherwise ask me any questions before you ask for the code." I have used this method before for some shorter code (sub 1000 lines, but still longer than the prompt allows) and it works pretty well. I will admit that ChatGPT has been lazy of late, and sometimes I have to specifically tell it not to be lazy and give me the full output I am asking for, but overall it does a pretty decent job of explaining code to me.
- jstrieb 3y agoWhile I agree in general that shell script is not usually fun to read, this particular code is really not bad. Not sure if this will sway you, but for what it's worth, I did read the bash script before running it, and it's actually very well-structured. Functionality is nicely broken into functions, variables are sensibly named, there are some helpful comments, there is no crazy control flow or indirection, and there is minimal use of esoteric commands. Overall this repo contains some of the most readable shell scripts I've seen. Reflecting on what these scripts actually do, it makes sense that the code is fairly straightforward. At its core it really just wants to run one command: the one to start QEMU. All of the other code is checking out the local system for whether to set certain arguments to that one command, and maybe downloading some files if necessary.
- arghwhat 3y agoI do see that it is better structured, but as any other bash script it relies heavily on global variables. For example, `--delete-vm` is effectively `rm -rf $(dirname ${disk_img})`, but the function takes no arguments. It's getting the folder name from the global variable `$VMDIR`, which is set by the handling of the `--vm` option (another global variable named $VM) to `$(dirname ${disk_img})`, which in turn relies on sourcing a script named `$VM`. First, when it works, it'll `rm -rf` the parent path of the VMs disk_img variable is set to, irrespective of whether it exists or is valid as dirname doesn't check that - it just tries to snip the end of the string. Enter an arbitrary string, and you'll `rm -rf` your current working directory as `dirname` just return ".". Second, it does not handle relative paths. If you you pass `--vm somedir/name` with `disk_img` just set to the relative file name, it will not resolve`$VMDIR` relative to "somedir"- `dirname` will return ".", resulting in your current working directory being wiped rather than the VM directory. Third, you're relying on the flow of global variables across several code paths in a huge bash script, not to mention global variables from a sourced bash script that could accidentally mess up quickemu's state, to protect you against even more broken rm -rf behavior. This is fragile and easily messed up by future changes. The core functionality of just piecing together a qemu instantiation is an entirely fine and safe use of bash, and the script is well-organized for a bash script... But all the extra functionality makes this convoluted, fragile, and one bug away from rm -rf'ing your home folder.
- nexus6 3y agoWonder what the difference is with Proxmox and if there’s any optimisation done here that I can manually recreate in my Proxmox environment.
- bityard 3y agoThis is straggeringly different from Proxmox. Proxmox is made for labs and datacenters that have a need to host lots of servers as VMs. Quickemu looks like it is mainly geared toward desktop use.
- deleted 3y ago[deleted]
- yoyoinbog 3y agoLooks interesting but would someone be so kind to point out if there are any advantages for a guy like me who just runs win 11 in VirtualBox under Ubuntu from time to time?
- kxrm 3y agoHard to answer this question as it largely depends on what you are doing with your VM. This appears to be a wrapper for QEMU and tries to pick reasonable settings to make spinning up new VMs easier.
- prmoustache 3y agoI think it is more an alternative to gnome boxes where the tool take care of downloading latest image in addition to offering a default config specific to that distro/os and additionally supporting dirty OSes like windows and macOS.
- xdennis 3y agoIf it actually runs MacOS then it's a huge advantage to installing in VirtualBox or VMware where it's very difficult to get it running (you have to patch various things).
- ge0rg 3y agoEspecially regarding GPU acceleration... Running video-conferencing inside windows inside vbox is almost impossible, and even modestly complex GUI apps have a significant lag there.
- user_7832 3y agoDoes qemu allow GPU acceleration while running with a single GPU? From the video on the website it appears so, however from what I’ve read (at least with amd igpus) it doesn’t seem to work.
- anthk 3y agoInstall the guest additions and enable 3D acceleration in the emulated video card settings. Also, give it 128 MB of RAM as a minimum.
- mihalycsaba 3y agoIt's a QEMU wrapper. I don't know how is this useful. It might save you 2 minutes. Maybe more with windows 11 because of tpm.
- spongebobstoes 3y agoLooks like this tries to use better default settings for qemu, which doesn't always have good defaults. I think that is useful practically, as a learning tool, and as a repository of recommended settings.
- wufocaculura 3y agothis is what we are really missing, something like: "here are 'good enough' cmd line args that you can use to boot $OS with qemu". Quickemu seems to try to help here.
- overbytecode 3y agoQuickemu gives me the ability to instantly spin up a full blown VM without fiddling with QEMU configurations, just by telling it what OS I want. This might be less useful for those who are quite familiar with QEMU, but it’s great for someone like me who isn’t. So this saves me a whole lot more than 2 minutes. And that’s generally what I want from a wrapper: improved UX.
- colejohnson66 3y ago> Quickemu is a wrapper for the excellent QEMU that attempts to automatically "do the right thing", rather than expose exhaustive configuration options. As others have said, it's to get past the awful QEMU configuration step. It makes spinning up a VM as easy as VirtualBox (and friends).
- acatton 3y agoJust a security reminder from the last time this got posted[1] This tool downloads random files from the internet, and check their checksum against other random files from the internet. [2] This is not the best security practice. (The right security practice would be to have the gpg keys of the distro developers committed in the repository, and checking all files against these keys) This is not downplaying the effort which was put in this project to find the correct flags to pass to QEMU to boot all of these. [1] https://news.ycombinator.com/item?id=28797129 https://news.ycombinator.com/item?id=28797129 [2] https://github.com/quickemu-project/quickemu/blob/0c8e1a5205c5706f63b2921e50d4c8fa9f60c774/quickget#L2113-L2116 https://github.com/quickemu-project/quickemu/blob/0c8e1a5205...
- prmoustache 3y agoAlso, author is typing his user password during live streaming with a mechanical keyboard while microphone is on.
- wolf89618 3y ago[dead]
- bobim 3y agoYou mean that the sound of each key is unique and sufficiently different from the others? Or it has to do with how a person is typing?
- wolf89618 3y ago[dead]
- overengineer 3y agoThis is an actual attack surface: https://www.researchgate.net/publication/284949922_Keyboard_acoustic_side_channel_attacks_exploring_realistic_and_security-sensitive_scenarios https://www.researchgate.net/publication/284949922_Keyboard_...
- steve_rambo 3y agolibvirt ships with virt-install which also allows for quickly creating and auto-installing Windows and many Linux distributions. I haven't tried it with mac. Here's a recent example with Alma Linux: $ virt-install --name alma9 --memory 1536 --vcpus 1 --disk path=$PWD/alma9.img,size=20 --cdrom alma9.iso --unattended Then you go for a coffee, come back and have a fully installed and working Alma Linux VM. To get the list of supported operating systems (which varies with your version of libvirt), use: $ osinfo-query os
- deleted 3y ago[deleted]
- mrAssHat 3y agoIt is not obvious what the result of this would be. What hostname will it have? How will the disk be partitioned? What packages will be installed? What timezone will be set? What keyboard layout will be set? And so on.
- serf 3y agovirt-install can be given all of those parameters as arguments[0], too; parent just didn't post an obnoxiously large shell line to demonstrate. [0]: https://linux.die.net/man/1/virt-install https://linux.die.net/man/1/virt-install
- JamesonNetworks 3y agoTo do this I had to install libosinfo-bin
- rwmj 3y agoAlso $ virt-builder fedora-39 if you wanted a Fedora 39 disk image. (Can be later imported to libvirt using virt-install --import).
- stefanha 3y agovirt-builder is awesome for quickly provisioning Linux distros. It skips the installer because it works from template images. You can use virt-builder with virt-manager (GUI) or virt-install (CLI).
- ngcc_hk 3y agoSadly “ macOS Monterey, Big Sur, Catalina, Mojave & High Sierra”
- Gabrys1 3y agoWhy is it sad?
- JoachimS 3y agoProbably because the two latest major versions - Ventura (13.x) and Sonoma (14.x) are not included in that list, and may not be supported. Patches to older versions may be supported. Apples patch policy according to Wikipedia: ``` Only the latest major release of macOS (currently macOS Sonoma) receives patches for all known security vulnerabilities. The previous two releases receive some security updates, but not for all vulnerabilities known to Apple. In 2021, Apple fixed a critical privilege escalation vulnerability in macOS Big Sur, but a fix remained unavailable for the previous release, macOS Catalina, for 234 days, until Apple was informed that the vulnerability was being used to infect the computers of people who visited Hong Kong pro-democracy websites. ```
- uttamdp_10 3y ago[flagged]
- claviola 3y agoUTM[0] does this quite well on macOS. They also have a small gallery[1] of pre-built images. 0. https://mac.getutm.app/ https://mac.getutm.app/ 1. https://mac.getutm.app/gallery/ https://mac.getutm.app/gallery/
- ivanjermakov 3y agoUTM even works on iPads! I was able to run Arch Linux in TTY mode quite well. https://docs.getutm.app/installation/ios/ https://docs.getutm.app/installation/ios/
- _joel 3y agoShout out to https://virt-manager.org/ https://virt-manager.org/ - works much better for me, supports running qemu on remote systems via ssh. I used to use this all the time for managing bunches of disparate vm hosts and local vms.
- antongribok 3y agoI know it's not the same thing, but Quickemu happily works over SSH too. Run it on a remote system via ssh, and it will "X-Forward" the Qemu console on my local Wayland session in Fedora. First time I ran it, thinking I was doing a headless mode, and it popped up a window, was quite surprising. :)
- freedomben 3y agovirt-manager is one of the most underrated softwares there is. It's a powerhouse and I use it all the time. It is going to expect you to know some basic terminology about VMs, but it reminds me a lot of the old skool GUIs that were packed with features and power. If your needs are simple or you're less technical with the VMs, Gnome Boxes uses the same backend and has a beautiful streamlined GUI. With the simplicity of course comes less flexibility, but cool thing is you can actually open Gnome Boxes VMs with virt-manager should you later need to tweak a setting that isn't exposed through Boxes.
- buffet_overflow 3y agoI’m so appreciative that virt-manager has a GUI that crafts and then lets you edit the XML directly. It really eased that beginner into competent stages of using the program for me.
- beebeepka 3y agoAgreed, it's much better than nothing, though I still don't know how to port forward.
- stbenjam 3y agoAbsolutely love virt-manager. I try gnome-boxes every so often and it just doesn’t compare. I guess its interface is easier for beginners.
- sandbags 3y agoI couldn’t answer this from the site. Will this let me run macOS Catalina on an M2 Mac Studio with usable graphics performance? Because that would give me back a bunch of 32-bit games I didn’t want to give up.
- sharikous 3y agoNo. It will be slow as hell But something like El Capitan will be somehow acceptable and Lion will be actually usable
- T3RMINATED 3y ago[dead]
- tambourine_man 3y agoDoes it run natively on Arm (Apple Silicon)? How about the latest versions of macOS? Is there graphic acceleration? How's network handled?
- itherseed 3y agoIs there something similar to this but for Windows 10 or 11? I want a Windows GUI for QEMU to build some Linux machines. I tried QtEMU but didn't like it. Thanks in advance.
- nightowl_games 3y agoAnyone know if I can I legitamately make and submit iPhone builds off a macosx VM?
- jmb99 3y agoTechnically, yes probably. You’ll be breaking Apple’s ToS though, so depends how big of a fish you are as to whether Apple cares.
- xrd 3y agoI don't think you can. All virtualized MacOS machines, iirc, can't fully install the tools necessary to build software for MacOS. For example, I don't believe you will ever be able to sign and staple the app. I would really love to have someone prove me wrong on this thread but I've never found a solution other than building on MacOS hardware, which is such a pain to maintain. I have multiple old MacOS machines that I keep in a stable state just so I can be sure I'll be able to build our app. I'm terrified of failure or just clicking the wrong update button.
- saagarjha 3y agoYou can run codesign just fine in a VM.
- xrd 3y agoI really appreciate your comment, I'm hoping I am wrong about my experiences! But, this is the issue I believe: https://mjtsai.com/blog/2023/09/15/limitations-on-macos-virtual-machines/ https://mjtsai.com/blog/2023/09/15/limitations-on-macos-virt... (or, the original is here: https://eclecticlight.co/2023/12/26/when-macos-wont-work-with-the-app-store/ https://eclecticlight.co/2023/12/26/when-macos-wont-work-wit...) You cannot login using AppleID. If you can't do that, aren't you prevented from basically doing any kind of stapling and/or retrieving certificates for signing? I would LOVE to be wrong about this. You've done that?
- tarruda 3y agoFor Linux I highly recommend Incus/LXD. Launching a VM is as simple as ``` incus launch images:ubuntu/22.04 --vm my-ubuntu-vm ``` After launching, access a shell with: ``` incus exec my-ubuntu-vm /bin/bash ``` Incus/LXD also works with system containers.
- renonce 3y agoOne thing I loved but rarely mentioned is systemd-nspawn. You do `docker create --name ubuntu ubuntu:22.04` and then `docker export ubuntu` to create a tar from an arbitrary docker image. Then you extract that to `/var/lib/machines/ubuntu`. Make sure to choose an image with systemd or install systemd in the container. Finally do `machinectl start ubuntu` and `machinectl shell ubuntu` to get inside. systemd-nspawn is very simple and lightweight and emulates a real Linux machine very well. You can take an arbitrary root partition based on systemd and boot it using systemd-nspawn and it will just work.
- tarruda 3y agosystemd-nspawn is simple but AFAIK it doesn't do any security other than the kernel namespacing. Docker is even worse because it runs containers as root, which means a rogue process can take over the host very easily. Incus/LXD runs containers as normal users (by default) and also confines the whole namespace in apparmor to further isolate containerized processes from the host. Apparmor confinement is also used for VMs (the qemu process cannot access anything that is not defined in the whitelist)
- viraptor 3y agoDocker runs container as the user you tell it to. Same with nspawn. There's not much difference there in that respect. Nspawn does seccomp-based filtering, similar to the usual systemd services.
- makeworld 3y agoquickemu has been great, really convenient for running a performant Windows VM on my Linux laptop.
- osigurdson 3y agoSomething like macOS Parallels would be nice on Linux.
- siquick 3y agoWould this be how I get to run PC games on Steam on my Mac?
- cassianoleal 3y agoNo, that would be either Crossover [0] or Game Porting Toolkit [1] (easily run via Whisky [2]). [0] https://www.codeweavers.com/crossover https://www.codeweavers.com/crossover [1] https://www.applegamingwiki.com/wiki/Game_Porting_Toolkit https://www.applegamingwiki.com/wiki/Game_Porting_Toolkit [2] https://getwhisky.app/ https://getwhisky.app/
- 0cf8612b2e1e 3y agoAre there any numbers on performance change vs naively running a VM? Usually running Linux guest inside Linux host and frequently disappointed at the guest performance. I have never done any research on tuning the VM experience, so I am curious how much I might be missing. 5% faster? 100%?
- nickstinemates 3y agoHow are you running them? Running KVM/Qemu with appropriate settings gives near metal performance.
- 0cf8612b2e1e 3y agovirt-manager with PopOS host, usually Ubuntu/PopOS guest on a Ryzen 5500(? Something in that series). Do not know what virt-manager runs under the hood. Again, never done anything other than install virt-manager, so would be happy to read a guide on any recommended configuration settings.
- ErikBjare 3y agoAs someone who has recently struggled with setting up both macOS and Windows VMs with qemu, this was really useful and really easy to set up.