- Quickemu, QEMU için bir sarmalayıcıdır; çalıştırılacak işletim sistemi seçildiğinde sanal makine oluşturmak için gereken ayarları otomatik olarak yaparak Windows, macOS ve Linux VM'lerini hızlıca oluşturup çalıştırır
quickget, istenen işletim sisteminin upstream OS imajını otomatik olarak indirip VM yapılandırma dosyasını oluşturur; quickemu ise donanımı algılayarak bilgisayara uygun yapılandırmayla VM'i çalıştırır
- İlk hedef, Linux dağıtımlarını hızlıca test etmekti; VM ve ayarlar harici USB depolama ya da ev dizini gibi istenen bir konuma yerleştirilebilir ve çalıştırmak için yükseltilmiş ayrıcalıklar gerekmez
- Günümüzde macOS, Windows, çoğu BSD, FreeDOS, Haiku, KolibriOS, OpenIndiana, ReactOS ve daha fazlası dahil neredeyse 1000 işletim sistemi sürümünü destekler
- Linux ve macOS ana sistemlerinde çalışır; SPICE, dosya paylaşımı, QEMU Guest Agent, VirGL, USB passthrough, port yönlendirme, ses, EFI ve Legacy BIOS önyükleme gibi VM kullanımı için gerekli özellikleri sunar
Quickemu ne yapar
- Quickemu, QEMU etrafına sarılmış bir araçtır ve sanal makine oluştururken gereken ayarları otomatik olarak yapar
- Kullanıcının yalnızca çalıştıracağı işletim sistemini seçmesi yeterlidir; çok sayıdaki ayar seçeneğini elle belirtmesi gerekmez
- Temel araçlar iki tanedir
quickget: İstenen işletim sisteminin upstream OS imajını otomatik olarak indirir ve VM yapılandırma dosyasını oluşturur
quickemu: Ana sistem donanımını taradıktan sonra ilgili bilgisayara uygun optimize edilmiş yapılandırmayla sanal makineyi çalıştırır
Projenin çıkış noktası ve bugünkü kapsamı
- İlk hedef, Linux dağıtımlarını test etmeyi hızlandırmaktı
- VM ve ayarlar, harici USB depolama ya da ev dizini gibi istenen bir konumda saklanabilir
- Sanal makineyi çalıştırmak için yükseltilmiş ayrıcalıklar gerekmez
- Güncel destek kapsamı Linux dağıtımlarının ötesine geçerek macOS, Windows, çoğu BSD ve Linux dışı işletim sistemlerine genişlemiştir
- Desteklenen örnekler arasında FreeDOS, Haiku, KolibriOS, OpenIndiana ve ReactOS yer alır
Desteklenen işletim sistemleri ve ana sistemler
- Ana sistem olarak Linux ve macOS desteklenir
- Misafir işletim sistemleri şunları içerir
- macOS Sequoia, Sonoma, Ventura, Monterey, Big Sur, Catalina, Mojave
- Windows 10 ve 11, TPM 2.0 dahil
- Windows Server 2022, 2019, 2016
- Ubuntu ve tüm resmi Ubuntu flavor'ları
- Çoğu BSD ve çeşitli Linux dışı işletim sistemleri
- ARM64 misafir desteği sayesinde aarch64 VM'ler çalıştırılabilir
- ARM ana sistemlerde native çalıştırma
- x86_64 ana sistemlerde emülasyonla çalıştırma
- Desteklenen işletim sistemi sürümü sayısı neredeyse 1000'e ulaşır
VM özellikleri
- SPICE için tam destek sunar ve ana sistem/misafir pano paylaşımını içerir
- Dosya paylaşımı, misafir işletim sistemine göre birden fazla yöntemle desteklenir
- VirtIO-webdavd: Linux ve Windows misafirleri için dosya paylaşımı
- VirtIO-9p: Linux ve macOS misafirleri için dosya paylaşımı
- Samba: Linux, macOS ve Windows misafirleri için dosya paylaşımı; ana sistemde
smbd kurulu olmalıdır
- QEMU Guest Agent desteğiyle standart QMP komutları üzerinden sistem düzeyi ajana erişilebilir
- Grafik ve aygıt özellikleri olarak VirGL hızlandırma, USB aygıt passthrough ve akıllı kart passthrough desteği sunar
- Ağ ve giriş/çıkış özellikleri de dahildir
- Misafire otomatik SSH port yönlendirme
- Ağ port yönlendirme
- Tam çift yönlü ses
- Braille desteği
- SecureBoot'lu veya SecureBoot'suz EFI önyükleme
- Legacy BIOS önyükleme
Hızlı başlangıç akışı
- Quickemu kurulumu sonrasında VM iki adımda oluşturulup çalıştırılır
quickget ile ISO imajı indirilir ve VM yapılandırma dosyası oluşturulur
quickget nixos unstable minimal
quickemu, quickget tarafından oluşturulan yapılandırma dosyasını kullanarak VM'i başlatır
quickemu --vm nixos-unstable-minimal.conf
quickget bağımsız değişken olmadan çalıştırıldığında desteklenen tüm işletim sistemlerinin listesi görülebilir
Belgeler ve referans materyalleri
- Wiki, başlangıç yöntemlerini, gelişmiş ayarları ve kullanım bilgilerini kapsar
1 yorum
Hacker News görüşleri
Eskiden farklı VM host’larını ve yerel VM’leri çok yönettiğim dönemde bunu hep kullanırdım
VM’lerle ilgili temel terimlere bir miktar hakim olmak gerekiyor ama işlev ve güç dolu eski tarz bir GUI’yi çok hatırlatıyor
İhtiyacınız daha basitse ya da VM tarafına daha az aşinaysanız Gnome Boxes, aynı backend’i kullanırken daha sade bir GUI sunuyor. Basit olduğu için esnekliği daha az ama sonradan Boxes’ta görünmeyen ayarları kurcalamanız gerekirse Gnome Boxes VM’ini virt-manager ile açabilmeniz güzel
Uzak sistemde SSH ile çalıştırınca QEMU konsolunu Fedora’daki yerel Wayland oturumuma “X forwarding” ile aktarıyor
Başta headless modda çalıştığını sanmıştım ama pencere açılınca epey şaşırdım :)
Yapılandırma, yapılandırdığı yazılımdan ayrılmış olsa nasıl olurdu diye düşündürüyor. Her UI programının tekerleği yeniden icat etme biçimini öğrenmek yerine sevdiğiniz bir yapılandırma yöneticisini seçip kullanabilirdiniz
Şu an buna en yakın şey metin tabanlı yapılandırma dosyaları. Bunları kullanan her program belirli bir dil ve kayıt konumu seçmek zorunda
Son zamanlarda sık düşündüğüm fikir bir yapılandırma aracılık katmanı. Kullanıcının gördüğü yapılandırma arayüzü istediği dili/formatı kullanır, bu veriyi tek doğru kaynak kabul eder ve yazılımın okuyacağı yapılandırma dosyalarını üretir
Yapılandırma dosyası tabanlı başlatma/durdurma veya seri konsol erişimi gibi faydalı yönetim özellikleri de var ama bunları shell script ile kendiniz yazmak da oldukça basit. libvirt’ün storage tarafı korkunç derecede ayrıntılı ve karmaşık, üstelik thin LV ya da ZFS’yi de düzgün ele alamıyor
Kurumsal standart yaklaşımla çalıştırmak istemiyorsanız ve QEMU ya da shell gibi temel yazılımları öğrenmeye kapalı değilseniz, ayrıca libvirt’ün o belirsiz özelliklerine gerçekten ihtiyacınız yoksa, KVM üzerinde QEMU’yu doğrudan kullanıp kendi script’lerinizi yazmanızı öneririm. Vasat bir Python wrapper yerine QEMU hakkında daha çok şey öğrenirsiniz ve sistem üzerinde daha fazla kontrolünüz olur
Ayrıca IBM/Red Hat, virt-manager’ı yeni web arayüzü Copilot lehine itip fiilen terk etmiş gibi görünüyor
Quickemu daha ilgi çekici çünkü büyük ve karmaşık bir UI öğrenmeye zaman harcamadan, örneklere kısa bir göz atıp hemen yeni bir VM başlatabiliyorsunuz
Bu araç internetten rastgele dosyalar indiriyor ve bunların checksum’unu yine internetteki başka rastgele dosyalarla karşılaştırıyor[2]
Bu en iyi güvenlik pratiği değil. Doğru yöntem, dağıtım geliştiricisinin GPG anahtarlarını repoya commit etmek ve tüm dosyaları o anahtarla doğrulamak
Yine de bununla, bu projenin çeşitli işletim sistemlerini boot ettirmek için QEMU’ya geçirilecek doğru bayrakları bulma çabasını küçümsemek istemiyorum
[1] https://news.ycombinator.com/item?id=28797129
[2] https://github.com/quickemu-project/quickemu/blob/0c8e1a5205...
Üstelik çoğu kişinin yapmadığı bir şeyi de ekliyor: hash eşleşmesini doğruluyor
FTP döneminde checksum ve GPG şarttı. HTTP/TCP tarafında yeniden deneme ve checksum işini TCP yaptığı için GPG’nin önemi daha da artıyordu ama ortadaki adam saldırıları yüzünden ikisi de yine gerekliydi
Peki HTTPS varsa neden hâlâ önemli? HTTPS bu iki doğrulama ve imza kontrolünün yerini almıyor mu
Umarım bu yıl Hacker News ilgisi sayesinde biri Linux için imza doğrulamayı da ekler
0. https://mac.getutm.app/
https://docs.getutm.app/installation/ios/
Yakın tarihli bir Alma Linux örneği şöyle
$ virt-install --name alma9 --memory 1536 --vcpus 1 --disk path=$PWD/alma9.img,size=20 --cdrom alma9.iso --unattendedBir kahve içip gelince kurulumun tamamlandığını ve Alma Linux VM’inin çalıştığını görüyorsunuz. Desteklenen işletim sistemi listesi
libvirtsürümüne göre değişiyor; şu komutla kontrol ediliyor$ osinfo-query osFedora 39 disk imajı gerekiyorsa virt-builder da var
$ virt-builder fedora-39Daha sonra
virt-install --importilelibvirtiçine aktarılabilirvirt-installISO’yu otomatik indiriyor mu? Deneyince şu mesaj çıkıyor$ 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'.Sonucun tam olarak nasıl olacağı net değil. Hostname ne olacak, disk nasıl bölümlendirilecek, hangi paketler kurulacak, saat dilimi ve klavye düzeni ne olarak ayarlanacak gibi şeyleri merak ediyorum
Bunu yapmak için libosinfo-bin kurmam gerekti
Bu tür araçların sağladığı kullanım kolaylığı harika, ama iki ana betiği birleştirince yaklaşık 5000 satır Bash ediyor
Çalıştırmadan önce incelemek isterim ama 5000 satır Bash okumak da istemiyorum
İkna edici olur mu bilmiyorum ama çalıştırmadan önce Bash betiğini okudum ve oldukça iyi yapılandırılmıştı. İşlevler fonksiyonlara düzgünce ayrılmış, değişken adları makul, faydalı yorumlar var, garip kontrol akışı ya da dolaylı çağrılar yok ve anlaşılmaz komut kullanımı en aza indirilmiş. Şimdiye kadar gördüğüm kabuk betikleri arasında okunması en kolay olanlardan biri
Bu betiğin gerçekte ne yaptığını düşününce kodun nispeten düz bir yapıda olması da mantıklı. Temelde yapılan şey QEMU’yu başlatan tek bir komutu çalıştırmak. Kalan kod ise o komuta hangi argümanların verileceğini belirlemek için yerel sistemi incelemek ya da gerekirse birkaç dosya indirmek
Bunun körü körüne çalıştırılması gerektiğini söylemiyorum ama çalıştıracağımız yazılımı seçerken kullandığımız ölçütler genelde kaynak koda ne kadar aşina olduğumuza bağlı olmuyor
“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.”
Bunu daha kısa kodlarda, yine de prompt sınırını aşan ama 1000 satırın altındaki örneklerde denedim ve oldukça iyi çalıştı. ChatGPT’nin bu aralar tembelleştiğini kabul ediyorum; bazen tembellik etmemesini ve istediğiniz tam çıktıyı vermesini açıkça söylemeniz gerekiyor, ama genel olarak kod açıklamada oldukça iyi
“Yeterince çok göz, bütün hataları sığlaştırır” sözü bazı kullanıcılar için düşünmeyi durduran bir klişe gibi görünüyor. Kod açık ve incelenebilir olduğu için her şeyin yolunda olduğunu varsayıyorlar; sanki her şeyi denetleyen bir kod denetçileri topluluğu ortalıkta dolaşıyormuş gibi. Oysa pratikte iyi niyetten çok kötü niyet bekler oldum
Windows tarafında onlarca yıldır sürekli çeşitli tweak araçları vardı. “Büyük şirket” geliştiricilerinin sistem performansını sonuna kadar zorlama motivasyonu olmadığını ve hızlı ayarlar ya da registry tweak’lerinin arkasında herkes için faydalı, kolay seçenekler bıraktıklarını düşünen kişileri cezbediyorlar. Ara sıra görünen TronScript aklıma geliyor; geçmişi ve katılım düzeyi nedeniyle ilk bakış testini geçiyor gibi göründüğünden iyi buluyorum, ama otomasyon adına ayrıntıları gizliyor ve kullanıcı adına iyi kararlar vermesini bekletiyor. İsterseniz derinlemesine girip ne olduğunu, neden olduğunu araştırıp öğrenebilirsiniz ama birçok kişi için bu fiilen ikili dosyadan farksız
Neyse ki bu tür araçların çoğunun kullanıcı kitlesi sınırlı, bu yüzden ele geçirilmesi çok cazip değil. Belirli bir marka yeterince yaygınlaşırsa, 2017’de arka kapı eklenen Piriform CCleaner örneğindeki gibi bir durum yaşanabilir
İlginç görünüyor ama Ubuntu’da ara sıra VirtualBox ile sadece Windows 11 çalıştıran biri için ne gibi avantajları olduğunu anlatabilir misiniz?
vboxiçindeki Windows’ta görüntülü toplantı çalıştırmak neredeyse imkânsız ve biraz karmaşık herhangi bir GUI uygulaması bile ciddi şekilde gecikiyorLinux’ta Incus/LXD’yi güçlü biçimde tavsiye ederim. VM çalıştırmak şu kadar basit
Çalıştıktan sonra kabuk erişimi şöyle sağlanıyor
Incus/LXD sistem konteynerlerini de destekliyor
Sevdiğim ama neredeyse hiç bahsedilmeyen bir seçenek de systemd-nspawn.
docker create --name ubuntu ubuntu:22.04komutunu çalıştırıpdocker export ubuntuile herhangi bir Docker imajından bir tar oluşturabilirsinizArdından bunu
/var/lib/machines/ubuntuiçine açmanız yeterli. systemd içeren bir imaj seçmeniz ya da konteyner içine systemd kurmanız gerekir. Son olarakmachinectl start ubuntuvemachinectl shell ubuntuile içine girersinizsystemd-nspawn çok basit ve hafiftir, ayrıca gerçek bir Linux makinesini oldukça iyi emüle eder. systemd tabanlı herhangi bir kök bölümü alıp systemd-nspawn ile başlatırsanız olduğu gibi çalışır
Bunu sadece bir VM çalıştırmakla kıyasladığınızda performans farkına dair sayılar var mı? Genelde Linux ana makine içinde Linux misafir çalıştırıyorum ama misafir performansından sık sık hayal kırıklığına uğruyorum
VM deneyimini ayarlamaya yönelik hiç araştırma yapmadım, bu yüzden ne kadarını kaçırdığımı merak ediyorum. %5 daha mı hızlı? %100 mü?
Arm, yani Apple Silicon üzerinde yerel olarak çalışıyor mu? En güncel macOS sürümleri nasıl? Grafik hızlandırma var mı? Ağ nasıl ele alınıyor?
Proxmox'tan farkının ne olduğunu ve burada yapılan optimizasyonları kendi Proxmox ortamımda elle yeniden üretip üretemeyeceğimi merak ediyorum
Quickemu ise esas olarak masaüstü kullanımını hedefliyor gibi görünüyor