वर्चुअल मशीन को गैर-रूट के रूप में स्थापित करें?


15

क्या किसी भी वर्चुअल मशीन सॉफ़्टवेयर को गैर-रूट उपयोगकर्ता के रूप में स्थापित करना और उसे चलाना संभव है?

रूट एक्सेस की आवश्यकता के साथ कौन से वीएम को स्थापित किया जाना संभव है?

यदि यह संभव नहीं है तो कुछ VM की रनिंग विंडोज़ xp sp3 के लिए उपयोग करने वाली सबसे हल्की वजन वाली आभासी मशीन क्या होगी?

जवाबों:


5

किसी भी वास्तविक वर्चुअलाइजेशन को सीपीयू में निम्न-स्तरीय पहुंच की आवश्यकता होती है, और इस प्रकार रूट को इसे स्थापित करना होगा। एक बार स्थापित होने के बाद आपको इसे चलाने के लिए रूट होने की आवश्यकता नहीं है। आप संभवतः गैर-रूट के रूप में एक एमुलेटर स्थापित कर सकते हैं और चला सकते हैं, जैसे कि bochs, या एक एडॉप्टर जैसे शराब। यदि आपके पास एक विशिष्ट विंडोज ऐप है तो आप इसे शराब (शायद) के तहत चला सकते हैं।


संभव है, लेकिन मुझे इसके लिए मोनो में परिवर्तित होने के लिए एक आवेदन का अनुरोध करना होगा ताकि वह काम कर सके जो वास्तव में बहुत परेशानी होगी, अगर वे वास्तव में ऐसा नहीं करेंगे, तो उत्तर के लिए धन्यवाद। क्या आपको पता चलेगा कि 2 वास्तव में छोटे मेमोरी उपयोग ऐप के साथ सरल रन विंडो xp sp3 में सबसे हल्का वीएम क्या हैं?
प्रिक्स

शायद आपका सबसे अच्छा दांव VMware प्लेयर होगा । यह VMware से मुक्त है।
कीथ

11

के लिए केवीएम , आप डिवाइस के लिए उपयोग की जरूरत है /dev/kvm। यदि आपका उपयोगकर्ता इस उपकरण को पढ़ / लिख सकता है, तो आप अपने उपयोगकर्ता के रूप में KVM- आधारित वर्चुअल मशीन चला सकते हैं।

अधिकांश वितरण में kvmसमूह के सदस्यों के पास इस उपकरण तक पहुंच होती है, इसलिए आपको केवल अपने उपयोगकर्ता को kvmसमूह में जोड़ना होगा ।

अधिकांश अन्य त्वरित तकनीकों के लिए, आपको कर्नेल मॉड्यूल लोड करने की आवश्यकता होगी (इसमें वर्चुअलबॉक्स और वीएमवेयर शामिल हैं)। यह लगभग निश्चित रूप से रूट-स्तरीय पहुंच की आवश्यकता है।

आप किसी भी उपयोगकर्ता के रूप में गैर-त्वरित वर्चुअलाइजेशन तकनीकों को चला सकते हैं। उदाहरण के लिए, गैर-त्वरित मोड में qemu । ज्ञात हो कि त्वरित वर्चुअलाइजेशन की तुलना में यह बहुत धीमा होगा।


गैर-त्वरित जानकारी उपयोगी थी;)
प्रिक्स

7

उपयोगकर्ता मोड लिनक्स एक लिनक्स वर्चुअलाइजेशन समाधान है जो पूरी तरह से यूजरस्पेस में चलता है - कोई रूट विशेषाधिकार की आवश्यकता नहीं है।

हालांकि, यह केवल लिनक्स होस्ट के भीतर एक लिनक्स अतिथि चला सकता है, इसलिए यदि आप कुछ और चलाना चाहते हैं तो यह उपयुक्त नहीं है।


4

एक वर्चुअल मशीन को कुशल होने के लिए प्रोसेसर (और अन्य हार्डवेयर) तक काफी निम्न-स्तरीय पहुंच की आवश्यकता होती है। इसलिए आपको कोई भी अच्छा प्रदर्शन करने वाला VM सॉफ़्टवेयर दिखाई नहीं देगा जिसे गैर-रूट स्थापित किया जा सकता है।

हल्के आभासी मशीनों के लिए, लपट केवल आवश्यक विशेषताओं को शामिल करके हासिल की जाती है। इसके लिए OS के बारे में कुछ ज्ञान की आवश्यकता होती है, जिसे चलाया जाएगा, और इसलिए ओपन-सोर्स लाइटवेट VMs ( Plex86 , LilyVM ) केवल ओपन-सोर्स ऑपरेटिंग सिस्टम का समर्थन करते हैं। इस तर्क से, यह हो सकता है कि Microsoft वर्चुअल पीसी VirtualBox / VMWare / etc की तुलना में अधिक हल्का हो। लेकिन मैं वास्तव में नहीं जानता। वर्चुअलबॉक्स ओपन-सोर्स में उपलब्ध है, काफी प्रयोग करने योग्य है और हमेशा मेरे उद्देश्यों के लिए पर्याप्त है (लेकिन मैंने दूसरों की कोशिश की है)।


2

वर्चुअलबॉक्स 4.0.8 को रूट ऑफकोर्स के रूप में स्थापित करने की आवश्यकता है, लेकिन बाद में आप उपयोगकर्ताओं को स्वयं वीएम बना सकते हैं। आपको बस समूह का सदस्य बनना हैvboxusers

usermod -G vboxusers USERNAME

इस लिंक पर एक नज़र डालें , अच्छा लेख है कि इसे बिना सिर के कैसे चलाना है, सीधे खोल से। मैं वास्तव में यह भी खुदाई करता हूं कि यह आरडीपी प्रोटोकॉल का समर्थन करता है, जिसका अर्थ है कि आप बस rdesktopकनेक्ट करने के लिए उपयोग कर सकते हैं।


2

QEmu ऐसा करने में सक्षम है। मैंने कई बार किया है। हालांकि बेहद परफॉरमेंस नहीं


2

1) तीन पंक्तियों का उत्तर

मेरी पूर्वनिर्मित छवियों / qemu के संकलित संस्करण का उपयोग करने के लिए, इसे यहां से डाउनलोड करें , और फिर इसे अनलॉक्ड करें :

tar -xvzf qemu_packed.tar.gz

आप यहाँ से मेरी डेबियन 8 छवि (1.6G) डाउनलोड कर सकते हैं :

tar -xvzf test01.qcow2.tar.gz

और अंत में चला

./command.sh

आपके पास एक कामकाजी डेबियन 8 होनी चाहिए, पाठ मोड में, 22222 पोर्ट में मेजबान अतिथि में खोले गए ssh पोर्ट के साथ। आप उपयोगकर्ता "रूट" और पासवर्ड "रूट" का उपयोग करके लॉग इन कर सकते हैं।

2) लंबे समय तक जवाब, इन छवियों को अपने आप से

QEMU वास्तव में एक समाधान है जो मुझे एक सर्वर पर अपनी स्वयं की लिनक्स छवि स्थापित करने देता है जिस पर मेरी कोई रूट एक्सेस नहीं थी। यह बहुत उपयोगी है, मैं इसका उपयोग अपने मुख्य उपयोगकर्ता पासवर्ड का खुलासा किए बिना या शैक्षिक उद्देश्य से रिवर्स एसश करने के लिए करता हूं। लेकिन वास्तव में, क्योंकि आप बिना रूट खाता के वास्तविक वर्चुअलाइजेशन के लिए केवीएम का उपयोग नहीं कर सकते हैं, आप केवल एमुलेशन कर पाएंगे, जो काफी अक्षम हो सकता है (लेकिन कमांड लाइन संचालन के लिए, मैंने वास्तव में ओवरहेड नहीं देखा है)।

२.१) पैक qemu

यहां बताया गया है कि मैं कैसे आगे बढ़ता हूं। पहला कदम qemu को "पोर्टेबल" बनाना है, अर्थात बिना रूट एक्सेस वाले सर्वर पर प्रयोग करने योग्य। ऐसा करने के लिए आपके पास कई विधियां हैं, मैं उन्हें प्रस्तुत करने का प्रयास करूंगा ताकि आप अपनी पसंद का चयन कर सकें।

2.1.a) विधि 1: उपलब्ध .deb को डाउनलोड करें

यह समाधान वास्तव में लागू करने के लिए त्वरित हो सकता है (मूल रूप से अगर यह काम करता है, तो 1 कमांड में आप इसे प्राप्त करते हैं), लेकिन क्योंकि मेरी स्क्रिप्ट छोटी गाड़ी हो सकती है / कुछ काम को भूल सकती है, यह सभी बायनेरिज़ को मैन्युअल रूप से डाउनलोड करने के लिए काफी लंबा हो सकता है ... इस पद्धति का अन्य लाभ यह है कि आप इसे सीधे सर्वर पर नॉन रूट मोड में चला सकते हैं। विचार qemu यहाँ binaries .deb / .rpm फ़ाइल प्राप्त करने के लिए है (उपयुक्त से, या ऑनलाइन वेबसाइटों है कि मेजबान .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

अब, हमें qemu द्वारा BIOS का उपयोग करने की आवश्यकता है। फ़ाइल आपके सिस्टम पर उपलब्ध है, लेकिन मुझे नहीं पता कि वे विभिन्न फ़ोल्डरों में क्यों हैं, इसलिए मुझे लगता है कि उन्हें स्रोतों से प्राप्त करना आसान है:

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, सभी लाइब्रेरी कंप्यूटर पर पहले से ही होनी चाहिए) और पीसी-बायोस फ़ाइल। और फिर से इसे उसी कमांड से रन करें।

2.3) अपनी खुद की छवि बनाएं

यदि आप पूर्व-निर्मित फ़ाइल सिस्टम छवि का उपयोग नहीं करना चाहते हैं, तो इसके स्थान पर ऊपर दिए गए आदेशों का उपयोग करके कई ट्यूटोरियल का पालन ​​करें qemu/qemu-system-x86_64! NB: यदि आप भी qemu-imgगैर रूट के रूप में छवियों को बनाने के लिए उपयोग करना चाहते हैं , तो उपरोक्त प्रक्रिया का पालन करें!

का आनंद लें !

NB: यदि आप बिना जीयूआई वाले सर्वर पर इसे चलाने के लिए शाप प्रदर्शन का उपयोग करना चाहते हैं, तो आपको अपनी छवि को बूट विकल्प में एक पंक्ति में जोड़ना चाहिए ताकि यह फ्रेम बफर में चालू न हो /etc/default/grub:

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

(सबसे महत्वपूर्ण अंतिम है, मुझे यकीन नहीं है कि यह आवश्यक है)। साथ ही साथ

GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text

ताकि ग्रब टेक्स्ट मोड में बने रहें। यदि आप पर्याप्त नहीं हैं तो आप सिस्टम मोड में टेक्स्ट मोड को सक्षम करना चाहते हैं।


1
कृपया लड़का है कि मुझे डाल दिया -1, क्या आप कृपया मुझे समझा सकते हैं क्यों?
टोबैसबोरा

मेरे पास कोई विचार नहीं है लेकिन यह बहुत अच्छा है, धन्यवाद।
wbkang
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.