Встановити віртуальну машину як некореневу?


15

Чи можна встановити будь-яке програмне забезпечення віртуальної машини як некористувального користувача та запустити його?

Які VM можна встановити за потреби кореневого доступу?

Якщо це неможливо, яку саме віртуальну машину на найменшій вазі використовувати для кількох операційних машин VM xp sp3?

Відповіді:


5

Будь-яка реальна віртуалізація потребує низькорівневого доступу до центрального процесора, і тому root повинен її встановити. Після встановлення вам не потрібно мати root, щоб запустити його. Можливо, ви могли б встановити та запустити емулятор як некореневі, такі як bochs, або адаптер, наприклад вино. Якщо у вас є конкретна програма для Windows, ви можете просто запустити її під вином (можливо).


Можливо, але мені доведеться просити додаток перетворити на моно, щоб воно працювало також, що було б чимало клопоту, навіть не знаю, чи дійсно це робитиму, дякую за відповідь. Чи трапляється вам знати, які найбільш легкі вітрини для простого запуску вікна xp sp3 з двома дійсно малими програмами для використання пам'яті?
Приз

Напевно, найкращим став би програвач VMware . Це безкоштовно від VMware.
Кіт

11

Для KVM потрібен доступ до пристрою /dev/kvm. Якщо ваш користувач може читати / писати на цьому пристрої, ви можете запускати віртуальні машини на базі KVM як ваш користувач.

У більшості дистрибутивів учасники kvmгрупи мають доступ до цього пристрою, тому все, що вам потрібно зробити, - це додати свого користувача до kvmгрупи.

Для більшості інших прискорених технологій вам знадобляться завантажені модулі ядра (сюди входить virtualbox та VMWare). Це майже напевно вимагає кореневого доступу.

Ви можете запускати не прискорені технології віртуалізації як будь-який користувач. Наприклад, qemu в неприскореному режимі. Будьте в курсі, це буде дуже повільно порівняно з прискореною віртуалізацією.


thaks неприскорена інформація була корисною;)
Prix

7

Користувацький режим Linux - це рішення для віртуалізації Linux, яке повністю працює в просторі користувачів - не потрібні кореневі привілеї.

Однак він може запускати лише гість Linux у межах хоста Linux, тому він не підходить, якщо ви хочете запустити щось інше.


4

Віртуальна машина потребує досить низького рівня доступу до процесора (та іншого обладнання), щоб бути ефективними. Тому ви не побачите жодного добре працюючого програмного забезпечення VM, яке можна встановити некоректно.

Що стосується легких віртуальних машин, то легкість досягається лише включенням необхідних функцій. Для цього потрібні певні знання про ОС, яка буде запущена, і тому легкі VM з відкритим кодом ( Plex86 , LilyVM ) підтримують лише операційні системи з відкритим кодом. За цією логікою може бути, що Microsoft Virtual PC легше, ніж VirtualBox / VMWare / тощо. але я насправді не знаю. VirtualBox доступний у відкритому коді, цілком придатний для використання і завжди був достатнім для моїх цілей (але я спробував інші).


2

Virtualbox 4.0.8 повинен бути встановлений як кореневий аукціон, але згодом ви можете дозволити користувачам створювати власні комп'ютери. Ви просто повинні бути членом групиvboxusers

usermod -G vboxusers USERNAME

Подивіться на це посилання , приємна стаття, як запустити його без голови, прямо з оболонки. Я також дуже розумію, що він підтримує протокол RDP, тобто ви можете просто використовувати rdesktopдля з'єднання.


2

QEmu здатний це зробити. Я робив це кілька разів. Хоча не надзвичайно ефектно


2

1) Відповідь три рядки

Для того, щоб використовувати мої прекомпілірованние зображення / скомпільовану версію QEMU, скачати його тут , а потім розпаковувати це:

tar -xvzf qemu_packed.tar.gz

ви також можете завантажити моє зображення Debian 8 (1.6G) звідси :

tar -xvzf test01.qcow2.tar.gz

і нарешті біжи

./command.sh

У вас повинен бути робочий Debian 8 в текстовому режимі з відкритим портом ssh в гості-хості в порту 22222. Ви можете ввійти в систему, використовуючи користувальницький "root" і пароль "root".

2) Більш довга відповідь, зробіть ці зображення власноруч

QEMU - це дійсно рішення, яке дозволило мені встановити власне зображення linux на сервер, на який у мене не було кореневого доступу. Це дуже корисно, я використовую його, наприклад, для того, щоб робити зворотну ssh, не розкриваючи основний пароль користувача, або з навчальною метою. Але дійсно, оскільки ви не можете використовувати KVM для реальної віртуалізації без кореневого облікового запису, ви зможете робити лише емуляцію, яка може бути досить неефективною (але для операцій з командним рядком я ніколи не бачив накладних витрат).

2.1) Пакет qemu

Ось опис того, як я дію. Перший крок - зробити qemu "портативною", тобто придатною для використання на сервері без кореневого доступу. Для цього у вас є кілька методів, я спробую представити їх, щоб ви могли вибрати той, який вам більше подобається.

2.1.a) Спосіб 1: завантажте доступний .deb

Це рішення може бути дуже швидким у застосуванні (в основному, якщо воно працює, за 1 команду ви його отримаєте), але оскільки мій скрипт може бути помилковим / може забути якусь вкладку, завантажувати всі бінарні файли можна досить довго ... Інша перевага цього методу полягає в тому, що ви можете запустити його в не кореневому режимі безпосередньо на сервері. Ідея отримати сюди бінарні файли qemu полягає в тому, щоб отримати .deb / .rpm файл (з apt або з веб-сайтів, на яких розміщено .deb), витягнути його, перевірити залежності бібліотек за допомогою lddта завантажити всі .debзалежності, які є ще не є на комп’ютері для того, щоб витягнути їх ( .soфайли). Оскільки це може бути досить довгим і повторюваним, я створив невеликий сценарій, але якщо ви сміливі, ви можете все це зробити вручну ... Це просто потребує часу. Щоб використовувати його, збережіть цей скрипт у файліcreate_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>"

і запустіть його, використовуючи:

chmod +x create_qemu_binaries.sh 
./create_qemu_binaries.sh 

все працює добре, наприкінці ви повинні мати в папці ./qemu_extract/qemu_packed/один файл qemu-system-x86_64(основний бінарний), одну папку lib(вкладки, з якими потрібно брати qemu), і одну папку pc-bios, набір файлів, які qemuпотрібно запустити. Потім можна запустити qemu, використовуючи (не забудьте замінити зображення на вашу файлову систему):

$ 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

Насолоджуйтесь! (якщо скрипт не працює для вас, не соромтеся запитати мене, я перевірив його лише на двох комп’ютерах, і заповніть безкоштовно, щоб видалити, redirякщо вам не потрібна переадресація ssh між хостом і здогадкою)

2.1.b) Спосіб 2: якщо ви маєте доступ до комп'ютера з кореневим доступом

Перший метод потребує комп’ютера з кореневим доступом (або qemuвстановленим). Спочатку встановіть, qemuвикористовуючи щось подібне

sudo apt install qemu-system-x86

а потім знайдіть абсолютний шлях qemu:

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

Потім створіть папку, щоб розмістити її:

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

і отримати список бібліотек, пов'язаних з qemu:

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

тепер нам потрібно використовувати BIOS за допомогою qemu. Файл доступний у вашій системі, але я не знаю, чому вони знаходяться в різних папках, тому я думаю, що їх легше отримати з джерел:

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

Тепер це повинно працювати, ви можете скопіювати ці файли на машині, що не працює кореневим, і просто запустіть qemuза допомогою наступного рядка (не забудьте замінити зображення):

$ 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) Метод 3: з джерел

Ви також можете компілювати джерела, але якщо у вас не встановлені всі бібліотеки, можливо, складно уникнути використання вкоріненого комп'ютера для компіляції qemu. Але я думаю, це трохи надійніше, якщо вищевказані два методи не працюють. Потім, після його компіляції, дістаньте виконуваний файл і виконайте той самий трюк, що і вище, щоб отримати бібліотеки (використовуючиldd всі бібліотеки, які вже мають бути на комп’ютері) та файл pc-bios. І знову запустіть його з тією ж командою.

2.3) Створіть власний образ

Якщо ви не хочете використовувати попередньо зроблене зображення файлової системи, просто дотримуйтесь численних навчальних посібників, використовуючи команди вище, замість qemu/qemu-system-x86_64! Примітка: якщо ви також хочете використовувати qemu-imgдля створення зображень як не root, то виконайте той самий процес, що і вище!

Насолоджуйтесь!

Примітка: якщо ви хочете використовувати дисплей прокльонів для того, щоб запустити його на сервері без графічного інтерфейсу, слід додати у своє зображення рядок у варіанті завантаження, щоб він не включав буфер кадру у /etc/default/grub:

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

(найважливіше - останнє, я не впевнений, чи потрібно). Так само, як

GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text

щоб гріш залишався в текстовому режимі. Ви також можете увімкнути текстовий режим у systemd, якщо його недостатньо.


1
Підкажіть, будь ласка, хлопець -1, чи не могли б ви мені пояснити чому?
tobiasBora

Я поняття не маю, але це чудово, дякую.
wbkang
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.