Instal mesin virtual sebagai non-root?

15

Apakah mungkin untuk menginstal perangkat lunak mesin virtual sebagai pengguna non-root dan menjalankannya?

VM mana yang mungkin dipasang tanpa perlu akses root?

Jika tidak mungkin, apa yang akan menjadi mesin virtual paling ringan yang digunakan untuk menjalankan beberapa windows xp sp3 VM?

Prix
sumber

Jawaban:

5

Setiap virtualisasi nyata memerlukan akses tingkat rendah ke CPU, dan karenanya root harus menginstalnya. Setelah diinstal, Anda tidak perlu menjadi root untuk menjalankannya. Anda mungkin dapat menginstal dan menjalankan emulator sebagai non-root, seperti bochs, atau adaptor seperti wine. Jika Anda memiliki aplikasi Windows tertentu dalam pikiran Anda bisa menjalankannya di bawah anggur (mungkin).

Keith
sumber
mungkin bisa tetapi saya harus meminta aplikasi untuk dikonversi ke mono agar berfungsi juga yang akan banyak masalah sebenarnya bahkan tidak tahu apakah mereka benar-benar akan melakukannya, terima kasih atas jawabannya. Apakah Anda tahu apa VM paling mudah untuk menjalankan windows xp sp3 sederhana dengan 2 aplikasi penggunaan memori sangat kecil?
Prix
Mungkin taruhan terbaik Anda adalah pemain VMware . Ini gratis dari VMware.
Keith
11

Untuk KVM , Anda memerlukan akses ke perangkat /dev/kvm. Jika pengguna Anda dapat membaca / menulis ke perangkat ini, maka Anda dapat menjalankan mesin virtual berbasis KVM sebagai pengguna Anda.

Di sebagian besar distribusi, anggota kvmgrup memiliki akses ke perangkat ini, jadi yang perlu Anda lakukan adalah menambahkan pengguna Anda kekvm grup.

Untuk sebagian besar teknologi terakselerasi lainnya, Anda perlu memuat modul kernel (ini termasuk virtualbox dan VMWare). Ini hampir pasti membutuhkan akses tingkat root.

Anda dapat menjalankan teknologi virtualisasi yang tidak dipercepat seperti pengguna mana pun. Misalnya, qemu dalam mode non-akselerasi. Sadarilah itu akan sangat lambat dibandingkan dengan virtualisasi yang dipercepat.

jmtd
sumber
terima kasih informasi yang tidak dipercepat itu berguna;)
Prix
7

Mode pengguna Linux adalah solusi virtualisasi Linux yang berjalan sepenuhnya di ruang pengguna - tidak diperlukan hak akses root.

Namun, itu hanya dapat menjalankan tamu Linux di dalam host Linux, jadi tidak cocok jika Anda ingin menjalankan hal lain.

Riccardo Murri
sumber
4

Mesin virtual membutuhkan akses tingkat rendah ke prosesor (dan perangkat keras lainnya) agar efisien. Karenanya Anda tidak akan melihat perangkat lunak VM berkinerja baik yang dapat diinstal non-root.

Adapun mesin virtual ringan, ringan dicapai hanya dengan menyertakan fitur yang dibutuhkan. Ini membutuhkan beberapa pengetahuan tentang OS yang akan dijalankan, dan karenanya VM ringan open-source ( Plex86 , LilyVM ) hanya mendukung sistem operasi open-source. Dengan logika ini, mungkin Microsoft Virtual PC lebih ringan daripada VirtualBox / VMWare / dll. tapi aku benar-benar tidak tahu. VirtualBox tersedia di open-source, cukup dapat digunakan dan selalu mencukupi untuk keperluan saya (tapi saya sudah mencoba yang lain).

dancek
sumber
2

Virtualbox 4.0.8 perlu diinstal sebagai root offcourse, tetapi setelah itu Anda dapat membiarkan pengguna membuat VM sendiri. Anda hanya harus menjadi anggota grupvboxusers

usermod -G vboxusers USERNAME

Lihat tautan ini , artikel bagus cara menjalankannya tanpa kepala, langsung dari shell. Saya juga benar-benar menggali bahwa itu mendukung protokol RDP, artinya Anda hanya dapat menggunakan rdesktopuntuk terhubung.

Bas Keur
sumber
2

QEmu mampu melakukan itu. Saya sudah melakukannya beberapa kali. Tidak terlalu performant

Marco
sumber
2

1) Tiga baris menjawab

Untuk menggunakan gambar prebuilt / kompilasi versi qemu saya, unduh dari sini , lalu hapus kompresnya:

tar -xvzf qemu_packed.tar.gz

Anda juga dapat mengunduh gambar debian 8 saya (1.6G) dari sini :

tar -xvzf test01.qcow2.tar.gz

dan akhirnya lari

./command.sh

Anda harus memiliki Debian 8 yang berfungsi, dalam mode teks, dengan port ssh dibuka di host host di port 22222. Anda dapat login menggunakan "root" pengguna dan kata sandi "root".

2) Jawaban yang lebih panjang, buat gambar-gambar ini sendiri

QEMU memang solusi yang memungkinkan saya menginstal citra linux saya sendiri di server di mana saya tidak memiliki akses root. Ini sangat berguna, saya menggunakannya misalnya untuk melakukan reverse ssh tanpa mengungkapkan kata sandi pengguna utama saya, atau untuk tujuan pendidikan. Tetapi memang, karena Anda tidak dapat menggunakan KVM untuk virtualisasi nyata tanpa akun root, Anda hanya dapat melakukan emulasi, yang bisa sangat tidak efisien (tetapi untuk operasi baris perintah, saya tidak pernah benar-benar melihat overhead).

2.1) Pak qemu

Inilah uraian bagaimana saya melanjutkan. Langkah pertama adalah membuat qemu "portable", yaitu dapat digunakan di server tanpa akses root. Untuk melakukannya, Anda memiliki beberapa metode, saya akan mencoba menyajikannya sehingga Anda dapat memilih yang Anda inginkan.

2.1.a) Metode 1: unduh .deb yang tersedia

Solusi ini bisa sangat cepat untuk diterapkan (pada dasarnya jika berfungsi, dalam 1 perintah Anda mendapatkannya), tetapi karena skrip saya mungkin buggy / mungkin lupa beberapa lib, mungkin cukup lama untuk secara manual mengunduh semua binari ... The Keuntungan lain dari metode ini adalah Anda dapat menjalankannya dalam mode non root, langsung di server. Gagasan untuk mendapatkan binari qemu di sini adalah untuk mendapatkan file .deb / .rpm (dari apt, atau dari situs web online yang menjadi host .deb), ekstrak, periksa dependensi perpustakaan menggunakan ldd, dan unduh semua .debdependensi yang ada belum ada di komputer untuk mengekstraknya ( :.so file). Karena itu bisa sangat panjang dan berulang, saya membuat skrip kecil, tetapi jika Anda berani, Anda dapat melakukan semua itu secara manual ... Hanya perlu waktu. Untuk menggunakannya, simpan skrip ini dalam filecreate_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>"

dan jalankan dengan menggunakan:

chmod +x create_qemu_binaries.sh 
./create_qemu_binaries.sh 

semuanya bekerja dengan baik, pada akhirnya Anda harus memiliki dalam folder ./qemu_extract/qemu_packed/satu file qemu-system-x86_64(biner utama), satu folder lib(lib yang perlu diambil qemu), dan satu folder pc-bios, satu set file yang qemuperlu dijalankan. Anda kemudian dapat menjalankan qemudengan menggunakan (jangan lupa ganti dengan gambar sistem file Anda):

$ 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

Nikmati ! (jika skrip tidak berfungsi untuk Anda, jangan ragu untuk bertanya kepada saya, saya mengujinya hanya pada dua komputer, dan isi bebas untuk menghapus redirjika Anda tidak perlu ssh penerusan antara host dan tebakan)

2.1.b) Metode 2: jika Anda mengakses komputer dengan akses root

Metode pertama membutuhkan komputer dengan akses root (atau qemudiinstal). Pertama instal qemumenggunakan sesuatu seperti

sudo apt install qemu-system-x86

dan kemudian cari path absolut dari qemu:

$ which qemu-system-x86_64 
/usr/bin/qemu-system-x86_64

Lalu, buat folder untuk meletakkannya:

mkdir -p qemu_packed/lib
cd qemu_packed
cp /usr/bin/qemu-system-x86_64 qemu_packed

dan dapatkan daftar perpustakaan yang terhubung dengan qemu:

ldd qemu_packed/qemu-system-x86_64 | awk '{print "cp "$3" qemu_packed/lib"}' | bash

sekarang, kita perlu menggunakan BIOS dengan qemu. File tersebut tersedia di sistem Anda, tetapi saya tidak tahu mengapa mereka ada di folder yang berbeda, jadi saya pikir lebih mudah untuk mendapatkannya dari sumber:

git clone https://github.com/qemu/qemu.git
cp -r qemu/pc-bios qemu_packed
cd qemu_packed

Sekarang, itu harus berfungsi, Anda dapat menyalin file-file ini pada mesin non root, dan jalankan saja qemumenggunakan baris berikut (jangan lupa untuk mengganti gambar):

$ 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) Metode 3: dari sumber

Anda juga dapat mengompilasi sumber, tetapi jika Anda tidak memiliki semua pustaka yang diinstal, mungkin sulit untuk menghindari menggunakan komputer yang di-root untuk mengkompilasi qemu. Tapi saya kira itu sedikit lebih dapat diandalkan jika kedua metode di atas tidak berfungsi. Kemudian, setelah dikompilasi, dapatkan file yang dapat dieksekusi, dan lakukan trik yang sama seperti di atas untuk mendapatkan perpustakaan (menggunakan ldd, semua perpustakaan harus sudah ada di komputer) dan file pc-bios. Dan lagi, jalankan dengan perintah yang sama.

2.3) Buat gambar Anda sendiri

Jika Anda tidak ingin menggunakan gambar sistem file yang sudah dibuat, cukup ikuti banyak tutorial menggunakan perintah di atas sebagai ganti qemu/qemu-system-x86_64! NB: jika Anda juga ingin menggunakan qemu-imguntuk membuat gambar sebagai non root, maka ikuti proses yang sama seperti di atas!

Nikmati !

NB: jika Anda ingin menggunakan tampilan kutukan untuk menjalankannya di server tanpa GUI, Anda harus menambahkan baris Anda pada gambar dalam opsi boot sehingga tidak mengaktifkan frame buffer di /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nofb nomodeset bochs_drm.fbdev=off"

(yang paling penting adalah yang terakhir, saya tidak yakin apakah itu diperlukan). Sebaik

GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text

sehingga grub tetap dalam mode teks. Anda mungkin juga ingin mengaktifkan mode teks di systemd jika itu tidak cukup.

tobiasBora
sumber
1
Tolong cowok yang menempatkan saya -1, bisa tolong jelaskan mengapa?
tobiasBora
Saya tidak tahu tapi ini bagus, terima kasih.
wbkang