5 पॉइंट द्वारा GN⁺ 2024-01-31 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 की पूरी सूची देखी जा सकती है

दस्तावेज़ और संदर्भ सामग्री

1 टिप्पणियां

 
GN⁺ 2024-01-31
Hacker News की राय
  • https://virt-manager.org/ की सिफारिश करता/करती हूँ। मेरे सेटअप में यह कहीं बेहतर चला, और SSH के जरिए remote system पर QEMU चलाने का भी support करता है
    पहले जब अलग-अलग VM hosts और local VM बहुत manage करता/करती था/थी, तब हमेशा यही इस्तेमाल करता/करती था/थी
    • virt-manager सबसे underrated software में से एक है। Powerful है और बार-बार काम आता है
      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 में खोल सकते हैं
    • बिल्कुल वही चीज नहीं है, लेकिन Quickemu भी SSH के पार अच्छे से काम करता है
      SSH से remote system पर चलाने पर यह Fedora के local Wayland session में QEMU console को “X forwarding” कर देता है
      शुरुआत में मुझे लगा था कि यह headless mode में चल रहा है, लेकिन window खुली तो काफी surprise हुआ :)
    • हैरानी होती है कि सिर्फ configuration करने वाला program इतना जरूरी और उपयोगी हो सकता है
      सोचने पर मजबूर करता है कि अगर 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 करें
    • libvirt और virt-manager असली software QEMU और KVM के लिए बस simplified user interface हैं। ये config files parse करने और QEMU binary को सही options pass करने जैसी अपेक्षाकृत मामूली problem solve करते हैं
      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 किया जा सकता है
    • QEMU को command-line options सीधे pass करने वाला तरीका पसंद है। Windows NT on MIPS या Ultrix जैसे पुराने OS के लिए यह तरीका अच्छा fit बैठता है
  • पिछली बार जब यह पोस्ट हुआ था, तब वाली security caution फिर से छोड़ रहा/रही हूँ[1]
    यह 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...
    • क्या कोई समझा सकता है कि यह security issue क्यों है? GPG key verification authenticity guarantee करने का best तरीका जरूर है, लेकिन यह लगभग वही है जो सभी करते हैं: distribution की अपनी HTTPS site से ISO download करना
      ऊपर से यह hash match verification भी करता है, जो ज्यादातर लोग नहीं करते
    • इनमें से कितना पुराना practice है? क्या TCP/TLS पहले से checksum और source signing नहीं करने चाहिए?
      FTP के दौर में checksums और GPG जरूरी थे। HTTP/TCP में retry और checksum handling TCP करता है, इसलिए GPG की जरूरत ज्यादा हो जाती है, लेकिन man-in-the-middle attack की वजह से दोनों अभी भी जरूरी थे
      लेकिन HTTPS हो तो यह अभी भी इतना important क्यों है? क्या HTTPS दोनों verification और signature checking की जगह नहीं लेता
    • इसके अलावा author ने live streaming के दौरान mic on रहते हुए mechanical keyboard पर user password टाइप किया
    • यह “internet से arbitrary files” download नहीं करता, बल्कि लगता है कि केवल original sources का इस्तेमाल करता है
    • संदर्भ के लिए, macOS अब signature verification करता है। Windows के लिए usable signatures नहीं हैं
      उम्मीद है कि इस साल Hacker News की दिलचस्पी से कोई Linux के लिए signature verification implement कर देगा
  • macOS पर UTM[0] यह काम काफी अच्छी तरह कर देता है। पहले से बनी images की छोटी gallery[1] भी देता है
    0. https://mac.getutm.app/
    1. https://mac.getutm.app/gallery/
  • libvirt में virt-install शामिल है, जिससे Windows और कई Linux distributions जल्दी create और automatically install किए जा सकते हैं। mac पर try नहीं किया
    हाल का 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 --unattended
    ERROR 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 पढ़ना नहीं चाहता

    • मैं broadly सहमत हूँ कि shell scripts आम तौर पर पढ़ने में मज़ेदार नहीं होतीं, लेकिन यह code सच में बुरा नहीं है
      पता नहीं यह आपको 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 करता है
    • सिर्फ इसलिए कि यह shell script है, क्या इसे दूसरे software से अलग तरह से देखने की कोई वजह है? OS चलाने से पहले क्या आप kernel source पढ़ते हैं? web browser का क्या?
      मेरा मतलब यह नहीं कि इसे आँख बंद करके चलाना चाहिए, लेकिन हम जो software चलाते हैं उसे चुनने के criteria आम तौर पर इस बात पर निर्भर नहीं करते कि हम उसके source code से कितने familiar हैं
    • अगर सच में चिंता है और समय है, तो लोग बुरा मान सकते हैं, लेकिन ChatGPT से code के बारे में बातचीत भी की जा सकती है। prompt कुछ इस तरह हो सकता है
      “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 समझाने में यह काफी अच्छा है
    • मुझे लगता है कि यह software के overall trust building की समस्या है। भरोसा कैसे बनाया जाए, और developers व users से कैसी expectations और responsibilities हों—यह उसका सवाल है
      “कई आँखें सभी 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 चलाता है, उसके लिए इसके क्या फायदे हैं, बता सकते हैं?

    • VM में आप क्या करते हैं, इस पर बहुत निर्भर करता है, इसलिए जवाब देना मुश्किल है। यह QEMU wrapper जैसा दिखता है, और नई VM आसानी से start कराने के लिए reasonable settings चुनने वाला tool लगता है
    • खास तौर पर GPU acceleration वाला पहलू है। vbox के अंदर Windows में video conferencing चलाना लगभग असंभव है, और थोड़ी-सी complex GUI app भी काफी lag करती है
    • यह Gnome Boxes के alternative के ज्यादा करीब लगता है। latest images download करता है, उस distro/OS के हिसाब से defaults देता है, और Windows व macOS जैसे tricky OS के लिए अतिरिक्त support भी देता है
    • अगर सच में macOS चला रहे हैं, तो VirtualBox या VMware में install करने की तुलना में यह बड़ा फायदा है। वहाँ कई चीज़ें patch करनी पड़ती हैं, इसलिए चलाना बहुत मुश्किल होता है
  • Linux में मैं Incus/LXD की जोरदार recommendation करता हूँ। VM चलाना इतना आसान है

    incus launch images:ubuntu/22.04 --vm my-ubuntu-vm  
    

    चलने के बाद shell access इस तरह करें

    incus exec my-ubuntu-vm /bin/bash  
    

    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%?

    • आप इसे कैसे चला रहे हैं? सही settings के साथ KVM/QEMU चलाने पर लगभग bare-metal performance मिलती है
  • Arm, यानी Apple Silicon पर क्या यह native रूप से चलता है? नए macOS versions का क्या? Graphics acceleration है? Network कैसे handle होता है?

  • Proxmox से यह कैसे अलग है, और यहाँ की गई optimizations को क्या मैं अपने Proxmox environment में manually reproduce कर सकता हूँ, यह जानना चाहता हूँ

    • यह Proxmox से काफ़ी अलग है. Proxmox labs और datacenters के लिए बनाया गया है, जहाँ कई servers को VM के रूप में host करना होता है
      Quickemu मुख्य रूप से desktop उपयोग को ध्यान में रखकर बनाया गया लगता है