Yanıtlar:
Herhangi bir gerçek sanallaştırma CPU'ya düşük seviyeli erişim gerektirir ve bu nedenle root'un onu yüklemesi gerekir. Kurulduktan sonra çalıştırmak için root olmanız gerekmez. Muhtemelen bir emülatörü bochs gibi kök olmayan veya şarap gibi bir adaptör kurabilir ve çalıştırabilirsiniz. Aklınızda belirli bir Windows uygulaması varsa, sadece şarap (belki) altında çalıştırabilirsiniz.
İçin KVM , cihaza erişim ihtiyacı /dev/kvm
. Kullanıcınız bu cihazı okuyabilir / yazabilirse, KVM tabanlı sanal makineleri kullanıcı olarak çalıştırabilirsiniz.
Çoğu dağıtımda kvm
grubun üyeleri bu aygıta erişebilir, bu nedenle tek yapmanız gereken kullanıcılarınızı kvm
gruba eklemektir .
Diğer hızlandırılmış teknolojilerin çoğunda, yüklü çekirdek modüllerine ihtiyacınız olacaktır (buna sanal kutu ve VMWare de dahildir). Bu neredeyse kesinlikle kök düzeyinde erişim gerektirir.
Hızlandırılmamış sanallaştırma teknolojilerini herhangi bir kullanıcı olarak çalıştırabilirsiniz. Örneğin, hızlanmayan modda qemu . Hızlandırılmış sanallaştırmaya kıyasla çok yavaş olacağını unutmayın.
Kullanıcı modu Linux , tamamen kullanıcı alanında çalışan bir Linux sanallaştırma çözümüdür - kök ayrıcalıklarına gerek yoktur.
Ancak, yalnızca bir Linux ana bilgisayarında bir Linux misafirini çalıştırabilir, bu nedenle başka bir şey çalıştırmak istiyorsanız uygun değildir.
Bir sanal makinenin verimli olması için işlemciye (ve diğer donanıma) oldukça düşük düzeyde erişime ihtiyacı vardır. Bu nedenle, root olmayan bir şekilde kurulabilen iyi performans gösteren bir VM yazılımı görmezsiniz.
Hafif sanal makinelere gelince, hafiflik yalnızca gerekli özellikler dahil edilerek elde edilir. Bu, çalıştırılacak işletim sistemi hakkında biraz bilgi gerektirir ve bu nedenle açık kaynaklı hafif VM'ler ( Plex86 , LilyVM ) yalnızca açık kaynaklı işletim sistemlerini destekler. Bu mantıkla, Microsoft Virtual PC'nin VirtualBox / VMWare / etc'den daha hafif olması mümkündür. ama gerçekten bilmiyorum. VirtualBox açık kaynak kodlu olarak kullanılabilir, oldukça kullanılabilir ve her zaman benim amacım için yeterli olmuştur (ama başkalarını denedim).
Virtualbox 4.0.8'in kök offcourse olarak kurulması gerekir, ancak daha sonra kullanıcıların kendi VM'lerini yapmasına izin verebilirsiniz. Sadece grubun üyesi olmalısınvboxusers
usermod -G vboxusers USERNAME
Bu bağlantıya , doğrudan kabuktan başsız nasıl çalıştırılacağına dair güzel bir makaleye göz atın . Ayrıca, RDP protokolünü desteklediğini de kazıyorum, yani sadece rdesktop
bağlanmak için kullanabilirsiniz .
Önceden oluşturulmuş resimlerimi / derlenmiş qemu sürümümü kullanmak için buradan indirin ve sıkıştırmasını açın:
tar -xvzf qemu_packed.tar.gz
Ayrıca benim debian 8 imajımı (1.6G) buradan indirebilirsiniz :
tar -xvzf test01.qcow2.tar.gz
ve sonunda koş
./command.sh
Metin modunda, 22222 numaralı bağlantı noktasında ana bilgisayar misafirinde ssh bağlantı noktası açık olarak çalışan bir Debian 8'e sahip olmalısınız. Kullanıcı "root" ve "root" parolasını kullanarak oturum açabilirsiniz.
QEMU gerçekten, root erişimi olmayan bir sunucuya kendi linux imajımı kurmama izin veren bir çözüm. Çok kullanışlıdır, örneğin ana kullanıcı şifremi göstermeden ters ssh yapmak için ya da eğitim amaçlı kullanıyorum. Ama aslında, kök hesabı olmadan gerçek sanallaştırma için KVM'yi kullanamayacağınız için, sadece oldukça verimsiz olabilen öykünme yapabileceksiniz (ancak komut satırı işlemleri için, gerçekten ek yükü görmedim).
qemu
İşte nasıl ilerlediğimin açıklaması. İlk adım qemu'yu "taşınabilir" kılmak, yani root erişimi olmayan sunucuda kullanılabilir hale getirmektir. Bunu yapmak için birkaç yönteminiz var, tercih ettiğiniz yöntemi seçebilmeniz için bunları sunmaya çalışacağım.
Bu çözümün uygulanması gerçekten hızlı olabilir (temel olarak çalışırsa, 1 komutta alırsınız), ancak komut dosyam buggy olabileceğinden / bazı lib'leri unutabildiğinden, tüm ikili dosyaları manuel olarak indirmek oldukça uzun olabilir ... Bu yöntemin diğer bir avantajı, doğrudan sunucuda kök olmayan modda çalıştırabilmenizdir. Qemu ikili dosyalarını buraya getirme fikri .deb / .rpm dosyasını (apt'den veya .deb'yi barındıran çevrimiçi web sitelerinden) almak, ayıklamak, kullanarak kitaplık bağımlılıklarını kontrol etmek ldd
ve tüm .deb
bağımlılıkları indirmektir . ( .so
dosyaları) ayıklamak için bilgisayarda zaten mevcut değil . Oldukça uzun ve tekrarlayıcı olabileceğinden, küçük bir senaryo oluşturdum, ama cesursan, hepsini manuel olarak yapabilirsin ... Sadece zaman alır. Kullanmak için bu komut dosyasını bir dosyaya kaydedincreate_qemu_binaries.sh
:
#!/usr/bin/env bash
mkdir qemu_extract
cd qemu_extract
echo "########## Downloading qemu... ##########"
apt-get download qemu-system-x86
echo "########## Extracting qemu... ##########"
dpkg -x qemu-system-*.deb .
mkdir -p qemu_packed/lib
cp usr/bin/qemu-system-x86_64 qemu_packed
echo "########## Copy libs... ##########"
ldd usr/bin/qemu-system-x86_64 | grep "=>" | grep -v "not found" | awk '{print "cp "$3" qemu_packed/lib/"}' | bash
mkdir not_found
cd not_found
echo "########## Get not found libs... ##########"
ldd ../usr/bin/qemu-system-x86_64 | grep "not found" | awk '{print $1}' > not_found.txt
echo "########## Download not found libs... ##########"
for lib in $(cat not_found.txt); do echo "=== Dealing with $lib ==="; apt-file search --regexp "/${lib}\$" | sed 's/:.*//' | xargs apt-get download; done
echo "########## Extracting not found libs... ##########"
ls *.deb | xargs -I{} dpkg -x "{}" .
echo "########## Copying not found libs... ##########"
find . | grep ".so" | xargs -I{} cp "{}" ../qemu_packed/lib
cd ..
echo "########## Getting pc-bios... ##########"
git clone https://github.com/qemu/qemu.git
cp -r qemu/pc-bios qemu_packed
echo "########## Finished !!! ##########"
echo "The output file should be in the folder qemu_extract/qemu_packed."
echo "Once you have a filesystem image, you can run it using:"
echo "$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none -display curses -k fr -redir tcp:22222::22"
echo "Don't forget to replace <your image>"
ve şunu kullanarak çalıştırın:
chmod +x create_qemu_binaries.sh
./create_qemu_binaries.sh
her şey iyi çalışıyor, sonunda klasörde ./qemu_extract/qemu_packed/
bir dosya qemu-system-x86_64
(ana ikili), bir klasör lib
(alınması gereken kütüphaneler qemu
) ve bir klasör pc-bios
, qemu
çalışması gereken dosyalar kümesi olmalıdır. Daha sonra şunu qemu
kullanarak çalıştırabilirsiniz (dosya sistemi resminizle değiştirmeyi unutmayın):
$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none -redir tcp:22222::22
Zevk almak ! (komut dosyası sizin için çalışmazsa, bana sormaktan çekinmeyin, yalnızca iki bilgisayarda test ettim redir
ve ana bilgisayar ile tahmin arasında ssh yönlendirmesine ihtiyacınız yoksa kaldırmak için ücretsiz doldurun )
İlk yöntemin root erişimli (veya qemu
kurulu) bir bilgisayara ihtiyacı vardır . Önce aşağıdaki qemu
gibi bir şey kullanarak yükleyin
sudo apt install qemu-system-x86
ve qemu'nun mutlak yolunu bulun:
$ which qemu-system-x86_64
/usr/bin/qemu-system-x86_64
Sonra koymak için bir klasör oluşturun:
mkdir -p qemu_packed/lib
cd qemu_packed
cp /usr/bin/qemu-system-x86_64 qemu_packed
ve qemu ile bağlantılı kütüphanelerin listesini alın:
ldd qemu_packed/qemu-system-x86_64 | awk '{print "cp "$3" qemu_packed/lib"}' | bash
şimdi, qemu tarafından BIOS kullanımını almamız gerekiyor. Dosya sisteminizde mevcut, ancak neden farklı klasörlerde olduklarını bilmiyorum, bu yüzden onları kaynaklardan almanın daha kolay olduğunu düşünüyorum:
git clone https://github.com/qemu/qemu.git
cp -r qemu/pc-bios qemu_packed
cd qemu_packed
Şimdi, çalışması gerekir, bu dosyaları kök olmayan makineye kopyalayabilir ve sadece qemu
aşağıdaki satırı kullanarak çalıştırabilirsiniz (görüntüyü değiştirmeyi unutmayın):
$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none
Kaynakları da derleyebilirsiniz, ancak tüm kitaplıkları yüklemediyseniz, qemu'yu derlemek için köklü bir bilgisayar kullanmaktan kaçınmak zor olabilir. Ancak yukarıdaki iki yöntem işe yaramazsa biraz daha güvenilirdir. Sonra, derlendiğinde, yürütülebilir dosyayı alın ve kütüphaneleri (kullanarak ldd
, tüm kütüphanelerin zaten bilgisayarda olması gerekir) ve pc-bios dosyasını almak için yukarıdakiyle aynı numarayı yapın . Ve tekrar, aynı komutla çalıştırın.
Önceden yapılmış bir dosya sistemi görüntüsü kullanmak istemiyorsanız, yukarıdaki komutları kullanarak çok sayıda öğreticiyi takip edin qemu/qemu-system-x86_64
! Not: qemu-img
Kök olmayan görüntüler oluşturmak için de kullanmak istiyorsanız , yukarıdaki ile aynı işlemi uygulayın!
Zevk almak !
Not: curses ekranını GUI'siz bir sunucuda çalıştırmak için kullanmak istiyorsanız, görüntünüzde önyükleme seçeneğinde bir satır eklemelisiniz, böylece çerçeve arabelleğini açmaz /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nofb nomodeset bochs_drm.fbdev=off"
(en önemlisi son, gerekip gerekmediğinden emin değilim). Hem de
GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text
böylece grub metin modunda kalır. Ayrıca yeterli değilse sistemd'de metin modunu etkinleştirmek isteyebilirsiniz.