- Quickemu QEMU के लिए एक wrapper है, जो चलाए जाने वाले operating system का चयन करने पर virtual machine बनाने के लिए आवश्यक settings को अपने-आप संभालता है, जिससे Windows, macOS, Linux VM जल्दी बनाए और चलाए जा सकते हैं
quickget मनचाहे operating system की upstream OS image को अपने-आप डाउनलोड करता है और VM configuration file बनाता है, जबकि quickemu hardware को detect करके उस कंप्यूटर के मुताबिक configuration में VM चलाता है
- शुरुआती लक्ष्य Linux distributions को तेज़ी से टेस्ट करना था, और VM व settings को external USB storage या home directory जैसी किसी भी इच्छित जगह पर रखा जा सकता है, साथ ही चलाने के लिए elevated privileges की ज़रूरत नहीं होती
- अब यह macOS, Windows, ज़्यादातर BSD, FreeDOS, Haiku, KolibriOS, OpenIndiana, ReactOS आदि समेत लगभग 1000 operating system editions को support करता है
- यह Linux और macOS host पर काम करता है और SPICE, file sharing, QEMU Guest Agent, VirGL, USB passthrough, port forwarding, audio, EFI तथा Legacy BIOS boot जैसे VM उपयोग के लिए ज़रूरी features देता है
Quickemu क्या करता है
- Quickemu QEMU पर बना एक wrapper है, जो virtual machine बनाते समय ज़रूरी settings को अपने-आप संभालता है
- उपयोगकर्ता को सिर्फ़ वह operating system चुनना होता है जिसे चलाना है, और कई settings options को मैन्युअली तय करने की ज़रूरत नहीं पड़ती
- इसके दो मुख्य tools हैं
quickget: मनचाहे operating system की upstream OS को अपने-आप डाउनलोड करता है और VM configuration file बनाता है
quickemu: host hardware की जाँच करने के बाद उस कंप्यूटर के लिए उपयुक्त optimal configuration के साथ virtual machine चलाता है
प्रोजेक्ट की शुरुआत और मौजूदा दायरा
- शुरुआती लक्ष्य Linux distributions की testing को तेज़ बनाना था
- VM और settings को external USB storage या home directory जैसी किसी भी इच्छित जगह पर store किया जा सकता है
- virtual machine चलाने के लिए elevated privileges की ज़रूरत नहीं होती
- अब support का दायरा Linux distributions से आगे बढ़कर macOS, Windows, ज़्यादातर BSD और non-Linux operating systems तक फैल चुका है
- support किए जाने वाले उदाहरणों में FreeDOS, Haiku, KolibriOS, OpenIndiana, ReactOS शामिल हैं
समर्थित operating systems और host
- host के रूप में Linux और macOS supported हैं
- guest operating systems में निम्न शामिल हैं
- macOS Sequoia, Sonoma, Ventura, Monterey, Big Sur, Catalina, Mojave
- Windows 10 और 11, TPM 2.0 सहित
- Windows Server 2022, 2019, 2016
- Ubuntu और सभी official Ubuntu flavours
- ज़्यादातर BSD और कई non-Linux operating systems
- ARM64 guest support उपलब्ध है, जिससे aarch64 VM चलाए जा सकते हैं
- ARM host पर native execution
- x86_64 host पर emulated execution
- supported operating system editions की संख्या लगभग 1000 तक पहुँचती है
VM features
- SPICE का full support दिया जाता है, जिसमें host/guest clipboard sharing शामिल है
- file sharing के लिए guest operating system के अनुसार कई तरीके supported हैं
- VirtIO-webdavd: Linux और Windows guest के लिए file sharing
- VirtIO-9p: Linux और macOS guest के लिए file sharing
- Samba: Linux, macOS, Windows guest के लिए file sharing; इसके लिए host पर
smbd install होना चाहिए
- QEMU Guest Agent supported है, जिससे standard QMP commands के जरिए system-level agent तक पहुँचा जा सकता है
- graphics और device features में VirGL acceleration, USB device passthrough, और smartcard passthrough supported हैं
- network और input/output features भी शामिल हैं
- guest के लिए automatic SSH port forwarding
- network port forwarding
- full duplex audio
- braille support
- SecureBoot के साथ या बिना EFI boot
- Legacy BIOS boot
Quick start flow
- Quickemu install करें, फिर दो चरणों में VM बनाएँ और चलाएँ
quickget से ISO image डाउनलोड करें और VM configuration file बनाएँ
quickget nixos unstable minimal
quickemu के साथ quickget द्वारा बनाई गई configuration file का उपयोग करके VM शुरू करें
quickemu --vm nixos-unstable-minimal.conf
- बिना arguments के
quickget चलाने पर supported operating systems की पूरी सूची देखी जा सकती है
दस्तावेज़ और संदर्भ सामग्री
- wiki में शुरुआत करने के तरीके, advanced settings और उपयोग विधि शामिल हैं
1 टिप्पणियां
Hacker News की राय
पहले जब अलग-अलग VM hosts और local VM बहुत manage करता/करती था/थी, तब हमेशा यही इस्तेमाल करता/करती था/थी
VM से जुड़े basic terms की थोड़ी जानकारी चाहिए, लेकिन यह features और power से भरे पुराने style के GUI की काफी याद दिलाता है
अगर आपकी जरूरतें simple हैं या आप VM side में कम familiar हैं, तो Gnome Boxes वही backend इस्तेमाल करते हुए भी साफ-सुथरा GUI देता है। Simple होने की वजह से flexibility कम हो जाती है, लेकिन अच्छी बात यह है कि अगर बाद में Boxes में expose न किए गए settings adjust करने हों, तो Gnome Boxes VM को virt-manager में खोल सकते हैं
SSH से remote system पर चलाने पर यह Fedora के local Wayland session में QEMU console को “X forwarding” कर देता है
शुरुआत में मुझे लगा था कि यह headless mode में चल रहा है, लेकिन window खुली तो काफी surprise हुआ :)
सोचने पर मजबूर करता है कि अगर configuration उस software से अलग हो जिसे वह configure कर रहा है, तो कैसा होगा। हर UI program ने wheel को जिस तरह फिर से invent किया है उसे सीखने के बजाय, आप अपना पसंदीदा configuration manager चुनकर इस्तेमाल कर सकेंगे
अभी इसके सबसे करीब text config files हैं। इन्हें इस्तेमाल करने वाले हर program को कोई खास language और storage location चुननी पड़ती है
इन दिनों जिस idea के बारे में बहुत सोच रहा/रही हूँ, वह है configuration broker layer। User-facing settings UI में अपनी पसंद की language/format इस्तेमाल करें, और उस data को single source of truth बनाकर software द्वारा पढ़ी जाने वाली config files generate करें
Config file आधारित start/stop या serial console access जैसी useful management features भी हैं, लेकिन इन्हें shell script से खुद implement करना भी बहुत simple है। libvirt का storage handling बेहद verbose और complex है, फिर भी thin LV या ZFS को भी ठीक से handle नहीं कर पाता
अगर आप standard enterprise-style तरीके से चलाना चाहते हैं और QEMU या shell जैसे basic software सीखने का इरादा नहीं है, या libvirt की कोई अस्पष्ट/odd feature सच में जरूरी नहीं है, तो KVM के ऊपर सीधे QEMU इस्तेमाल करने और अपनी scripts लिखने की सलाह दूँगा/दूँगी। खराब Python wrapper के बजाय आप QEMU ज्यादा सीखेंगे और system पर control भी अधिक रहेगा
साथ ही IBM/Red Hat virt-manager को नए web interface Copilot की तरफ धकेलते हुए उसे practically abandon कर चुके लगते हैं
Quickemu ज्यादा interesting है, क्योंकि किसी बड़े complex UI को सीखने में समय लगाए बिना examples थोड़ी देर देखकर नया VM तुरंत start किया जा सकता है
यह tool internet से arbitrary files download करता है, और उनके checksums को भी internet पर मौजूद किसी दूसरी arbitrary file से मिलाता है[2]
यह best security practice नहीं है। सही तरीका यह है कि distribution developers की GPG keys repository में commit की जाएँ और सभी files को उस key से verify किया जाए
इसका मतलब यह नहीं कि मैं कई OS boot कराने के लिए QEMU को pass किए जाने वाले सही flags खोजने में इस project की मेहनत को कम आँक रहा/रही हूँ
[1] https://news.ycombinator.com/item?id=28797129
[2] https://github.com/quickemu-project/quickemu/blob/0c8e1a5205...
ऊपर से यह hash match verification भी करता है, जो ज्यादातर लोग नहीं करते
FTP के दौर में checksums और GPG जरूरी थे। HTTP/TCP में retry और checksum handling TCP करता है, इसलिए GPG की जरूरत ज्यादा हो जाती है, लेकिन man-in-the-middle attack की वजह से दोनों अभी भी जरूरी थे
लेकिन HTTPS हो तो यह अभी भी इतना important क्यों है? क्या HTTPS दोनों verification और signature checking की जगह नहीं लेता
उम्मीद है कि इस साल Hacker News की दिलचस्पी से कोई Linux के लिए signature verification implement कर देगा
0. https://mac.getutm.app/
https://docs.getutm.app/installation/ios/
हाल का Alma Linux example यह है
$ virt-install --name alma9 --memory 1536 --vcpus 1 --disk path=$PWD/alma9.img,size=20 --cdrom alma9.iso --unattendedकॉफी पीकर लौटें तो इंस्टॉल हो चुकी Alma Linux VM चल रही होती है। समर्थित OS की सूची libvirt version पर निर्भर करती है, और इसे इस तरह देखा जाता है
$ osinfo-query osअगर Fedora 39 disk image चाहिए, तो virt-builder भी है
$ virt-builder fedora-39बाद में इसे
virt-install --importसे libvirt में import किया जा सकता हैक्या virt-install ISO को अपने आप download करता है? कोशिश करने पर ऐसा message आता है
$ virt-install --name alma9 --memory 1536 --vcpus 1 --disk path=$PWD/alma9.img,size=20 --cdrom alma9.iso --unattendedERROR Validating install media 'alma9.iso' failed: Must specify storage creation parameters for non-existent path '/home/foo/alma9.iso'.यह साफ नहीं है कि इसका नतीजा क्या होगा। hostname क्या होगा, disk कैसे partition होगी, कौन-से packages install होंगे, timezone और keyboard layout किस पर set होंगे वगैरह जानने की उत्सुकता है
यह करने के लिए libosinfo-bin install करना पड़ा
ऐसे tools की सुविधा शानदार है, लेकिन दो मुख्य scripts को मिलाएँ तो लगभग Bash की 5000 lines हैं
चलाने से पहले review करना चाहूँगा, लेकिन Bash की 5000 lines पढ़ना नहीं चाहता
पता नहीं यह आपको convince करेगा या नहीं, लेकिन चलाने से पहले मैंने Bash script पढ़ी थी और वह काफी अच्छी तरह structured थी। functionality functions में अच्छी तरह बंटी हुई है, variable names भी reasonable हैं, उपयोगी comments हैं, कोई अजीब control flow या indirect calls नहीं हैं, और obscure commands का इस्तेमाल भी minimum है। अब तक देखी गई shell scripts में यह सबसे पढ़ने लायक scripts में से है
यह script असल में क्या करती है, यह सोचें तो code का अपेक्षाकृत सीधा होना भी समझ आता है। core काम QEMU start करने वाली एक command चलाना है। बाकी code local system check करता है कि उस command को कौन-से arguments देने हैं, या जरूरत हो तो कुछ files download करता है
मेरा मतलब यह नहीं कि इसे आँख बंद करके चलाना चाहिए, लेकिन हम जो software चलाते हैं उसे चुनने के criteria आम तौर पर इस बात पर निर्भर नहीं करते कि हम उसके source code से कितने familiar हैं
“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.”
छोटे code, फिर भी prompt limit से ऊपर जाने वाले 1000 lines से कम code पर मैंने यह तरीका आज़माया है और यह काफी अच्छा चला। मानता हूँ कि आजकल ChatGPT थोड़ा lazy हो गया है, और कभी-कभी साफ कहना पड़ता है कि lazy मत बनो और मांगा गया पूरा output दो, लेकिन कुल मिलाकर code समझाने में यह काफी अच्छा है
“कई आँखें सभी bugs को सतही बना देती हैं” वाला phrase कुछ users के लिए सोच बंद करा देने वाला cliché जैसा लगता है। वे मान लेते हैं कि source खुला है और review किया जा सकता है, इसलिए ठीक होगा, और हर चीज़ जांचने वाले code auditors के झुंड की कल्पना करते हैं; लेकिन असल में सद्भावना से ज्यादा दुर्भावना की आशंका होती है
Windows side पर दशकों से tweak utilities लगातार रही हैं। वे उन लोगों को आकर्षित करती हैं जो मानते हैं कि “बड़ी कंपनी” के developers के पास system performance को आखिरी हद तक निचोड़ने की motivation नहीं होती, और quick settings या registry tweaks के पीछे सबके लिए उपयोगी आसान options छिपे रह गए हैं। कभी-कभी दिखने वाला TronScript याद आता है; history और participation देखें तो मुझे लगता है कि यह smell test pass कर लेगा, इसलिए ठीक लगता है, लेकिन automation के नाम पर details छिपाता है और users से उम्मीद करवाता है कि उनके behalf पर अच्छे decisions ले लिए जाएँ। कोई गहराई में जाकर क्या हो रहा है और क्यों हो रहा है, यह investigate करके सीख भी सकता है, लेकिन बहुत लोगों के लिए यह effectively binary जैसा ही है
अच्छी बात यह है कि ऐसे ज्यादातर tools की user base सीमित होती है, इसलिए उन्हें compromise करने का payoff बड़ा नहीं होता। अगर कोई खास brand पर्याप्त रूप से widely used हो जाए, तो 2017 में backdoor लगाए गए Piriform के CCleaner जैसी स्थिति बन सकती है
दिलचस्प लग रहा है, लेकिन जो व्यक्ति Ubuntu पर कभी-कभी VirtualBox में सिर्फ Windows 11 चलाता है, उसके लिए इसके क्या फायदे हैं, बता सकते हैं?
Linux में मैं Incus/LXD की जोरदार recommendation करता हूँ। VM चलाना इतना आसान है
चलने के बाद shell access इस तरह करें
Incus/LXD system containers भी support करता है
मुझे पसंद है, लेकिन जिसका ज़िक्र बहुत कम होता है, वह है systemd-nspawn.
docker create --name ubuntu ubuntu:22.04चलाएँ औरdocker export ubuntuसे किसी भी Docker image से tar बनाएँफिर उसे
/var/lib/machines/ubuntuमें extract कर दें. आपको ऐसी image चुननी होगी जिसमें systemd हो, या container के अंदर systemd install करना होगा. आखिर मेंmachinectl start ubuntuऔरmachinectl shell ubuntuसे अंदर जाएँsystemd-nspawn बहुत simple और lightweight है, और असली Linux machine को बहुत अच्छी तरह emulate करता है. systemd-based कोई भी root partition लेकर systemd-nspawn से boot करें तो वह वैसे ही काम करता है
VM को सिर्फ run करने की तुलना में performance में बदलाव के आँकड़े हैं क्या? आम तौर पर Linux host के अंदर Linux guest चलाता हूँ, लेकिन guest performance से अक्सर निराश होता हूँ
VM experience को tune करने पर मैंने कभी जाँच नहीं की, इसलिए सोच रहा हूँ कि मैं कितना miss कर रहा हूँ. 5% तेज़? 100%?
Arm, यानी Apple Silicon पर क्या यह native रूप से चलता है? नए macOS versions का क्या? Graphics acceleration है? Network कैसे handle होता है?
Proxmox से यह कैसे अलग है, और यहाँ की गई optimizations को क्या मैं अपने Proxmox environment में manually reproduce कर सकता हूँ, यह जानना चाहता हूँ
Quickemu मुख्य रूप से desktop उपयोग को ध्यान में रखकर बनाया गया लगता है