Sanal makine kök olmayan olarak yüklensin mi?


15

Herhangi bir sanal makine yazılımını root olmayan kullanıcı olarak kurmak ve çalıştırmak mümkün müdür?

Hangi VM'ler root erişimi gerekmeden kurulabilir?

Mümkünse, birkaç VM'nin çalışan windows xp sp3'ü için en hafif sanal makine ne olurdu?

Yanıtlar:


5

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.


mümkün olabilir ama ben de çalışması için mono dönüştürmek için bir uygulama da istemek zorunda kalacaktı ki bu gerçekten çok fazla sorun olurdu aslında onlar gerçekten yapacaklarını bile bilmiyorum, cevap için teşekkürler. 2 gerçekten küçük bellek kullanım uygulaması ile basit çalışma penceresi xp sp3 için en hafif VM'lerin neler olduğunu biliyor musunuz?
Prix

Muhtemelen en iyi bahsiniz VMware oynatıcı olacaktır . VMware içermez.
Keith

11

İç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 kvmgrubun üyeleri bu aygıta erişebilir, bu nedenle tek yapmanız gereken kullanıcılarınızı kvmgruba 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.


hızlanmayan bilginin yararlı olduğunu söyler;)
Prix

7

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.


4

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).


2

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 rdesktopbağlanmak için kullanabilirsiniz .


2

QEmu bunu yapabilir. Birkaç kez yaptım. Yine de son derece performanslı değil


2

1) Üç satır cevap

Ö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.

2) Daha uzun cevap, bu görüntüleri kendiniz yapın

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).

2.1) Paket 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.

2.1.a) Yöntem 1: Mevcut .deb dosyasını indirin

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 lddve tüm .debbağımlılıkları indirmektir . ( .sodosyaları) 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 qemukullanarak ç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 redirve ana bilgisayar ile tahmin arasında ssh yönlendirmesine ihtiyacınız yoksa kaldırmak için ücretsiz doldurun )

2.1.b) Yöntem 2: Kök erişimli bir bilgisayara erişiyorsanız

İlk yöntemin root erişimli (veya qemukurulu) bir bilgisayara ihtiyacı vardır . Önce aşağıdaki qemugibi 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 qemuaş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

2.1.c) Yöntem 3: Kaynaklardan

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.

2.3) Kendi resminizi oluşturun

Ö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-imgKö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.


1
Lütfen beni -1 yapan adam, lütfen nedenini açıklar mısınız?
tobiasBora

Hiçbir fikrim yok ama bu harika, teşekkürler.
wbkang
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.