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
ताकि ग्रब टेक्स्ट मोड में बने रहें। यदि आप पर्याप्त नहीं हैं तो आप सिस्टम मोड में टेक्स्ट मोड को सक्षम करना चाहते हैं।