लिनक्स पीसी पर अनुकरण


48

मैं अपने लिनक्स पीसी के लिए रास्पबेरी पाई ओएस युक्त एसडी कार्ड कैसे कनेक्ट कर सकता हूं, और एक एमुलेटर में ओएस बूट कर सकता हूं?

VMWare काम क्यों नहीं करेगा?

इस पद्धति की सीमाएँ क्या हैं?

संबंधित: एक विंडोज पीसी पर अनुकरण


क्या यह एक अनुकरण प्रश्न के बजाय एक वर्चुअलाइजेशन सवाल नहीं है?
Zoot

1
मुझे वर्चुअलाइजेशन संपादन का अनुकरण पसंद नहीं है ... क्या हम इसके बारे में चैट कर सकते हैं?
एलेक्स चैम्बरलेन

2
मूल समस्या यह है कि पाई में एक एआरएम सीपीयू है जो x86 के साथ असंगत है जो कि VMWare जानता है कि कैसे चलाना है। आपको एक एमुलेटर की आवश्यकता है।
थोरबजोरन रावन एंडरसन

ध्यान दें कि रास्पियन की कई विशेषताओं के साथ अनुकूलित डेबियन का एक संस्करण (डेस्कटॉप वातावरण PIXEL, और अधिकांश अनुप्रयोगों सहित) रास्पबेरी पाई वेबसाइट
angussidney

जवाबों:


52

हाँ यह पूरी तरह से संभव है। हालांकि, वास्तव में यह थोड़ा अलग है कि आप कैसे सोच रहे हैं।


प्रस्तावना

एसडी कार्ड में ऑपरेटिंग सिस्टम की एक छवि होती है। और जब डिवाइस चालू होता है तो इस छवि को फुलाकर काम करता है।

जैसा कि मुझे उम्मीद है कि आप पहले से ही जानते हैं, आप एक कार्य प्रणाली बनाने के लिए इस छवि को एसडी कार्ड पर फ्लैश करते हैं। हालाँकि, आप क्या कर सकते हैं इससे पहले कि आप छवि को फ्लैश करें क्यूईएमयू का उपयोग करके इसके साथ एक नाटक है , जो एक प्रोसेसर एमुलेटर है , और हमें एआरएम निर्देश सेट का अनुकरण करने की अनुमति देता है।

इस तरह, आप छवि में कोई भी बदलाव (इंस्टॉल करना, संकलन करना आदि) एसडी कार्ड में फ्लैश करने के बाद भी रहेंगे।

अब मैं आपसे बात करूंगा कि इमेज को लोड करने के लिए QEMU का उपयोग कैसे करें। मैं आर्क लिनक्स छवि के साथ प्रदर्शन करूंगा, लेकिन प्रक्रिया समान रूप से होनी चाहिए।


QEMU का उपयोग करना

Prerequesites

आपको अपने सिस्टम के लिए QEMU का अधिग्रहण करना होगा । QEMU की केवल एक आवश्यकता होनी चाहिए, इनपुट डिवाइस में काम करने के लिए आपको SDL डेवलपमेंट पैकेज स्थापित करना होगा, जो आपके पैकेज मैनेजर से उपलब्ध होना चाहिए।

मैं आपके नियमित पैकेज प्रबंधक का उपयोग करके पैकेज डाउनलोड करने की सलाह देता हूं:

आर्क :

sudo pacman -S sdl qemu

उबंटू :

अधिक हाल के संस्करणों (14.04 के बाद से) के लिए एक पैकेज है:

sudo apt-get install qemu-system-arm

पुराने संस्करणों के लिए:

sudo apt-get install libsdl-dev
sudo add-apt-repository ppa:linaro-maintainers/tools
sudo apt-get update
sudo apt-get install qemu-system

खुद QEMU का निर्माण

वैकल्पिक रूप से, आप स्वयं QEMU का निर्माण कर सकते हैं। यह बहुत अच्छा है अगर आप एक नया संस्करण आज़माना चाहते हैं, लेकिन यह धीमा हो सकता है और संकलन के दौरान बहुत सारी त्रुटियों के लिए तैयार रहना चाहिए! ध्यान दें कि यदि उनकी वेबसाइट से QEMU का निर्माण हो रहा है तो इसे ARM सपोर्ट के लिए संकलित किया जाना चाहिए। इसलिए पहले अपने डिस्ट्रो रिपॉजिटरी की जांच करें। ऐसा किया जा सकता है;

mkdir rpi-emu && cd rpi-emu
wget http://wiki.qemu.org/download/qemu-1.1.0-1.tar.bz2
tar xvjf qemu-1.1.0-1.tar.bz2
cd qemu-1.1.0-1
./configure –target-list=arm-softmmu,arm-linux-user
make
sudo make install

सत्यापित करें कि आपके पास ARM समर्थन है:

qemu-system-arm --version
QEMU emulator version 1.0,1, Copyright (c) 2003-2008 Fabrice Bellard

छवि प्राप्त करना

हम आर्क लिनक्स के साथ काम कर रहे हैं, इसलिए आर्क आर्म छवि का उपयोग किया जाएगा। लेकिन इसके साथ जो भी आप काम करना चाहते हैं उसे बदलें, या शायद आपके पास पहले से ही एक छवि है। किस स्थिति में, इस चरण को छोड़ें।

wget http://anorien.csc.warwick.ac.uk/mirrors/raspberrypi.org/images/archlinuxarm/archlinuxarm-29-04-2012/archlinuxarm-29-04-2012.zip
unzip archlinuxarm-29-04-2012.zip 

QEMU को काम करने के लिए हमें कर्नेल छवि (जो .img फ़ाइल के अंदर होगी) की भी आवश्यकता है।

नोट: मुझे नहीं लगता कि यह कदम डेबियन के लिए आवश्यक है। कृपया कोई पुष्टि करें।

सौभाग्य से वहाँ precompiled चित्र उपलब्ध हैं, और आप यहाँ से एक ( प्रत्यक्ष डाउनलोड ) का उपयोग कर सकते हैं ।

TODO: यहाँ एक कर्नेल इमेज संकलित करने का तरीका बताएं?

वीएम शुरू

अब आपके पास होना चाहिए:

  • एक img फ़ाइल जिसे आप आपूर्ति की गई sha1 (अनुशंसित) का उपयोग करके सत्यापित कर सकते हैं।
  • एक कर्नेल छवि (zImage)।
  • एआरएम के लिए QEMU।

वर्चुअल मशीन को अब निम्न लंबी-घुमावदार कमांड का उपयोग करके शुरू किया जा सकता है:

qemu-system-arm -kernel zImage -cpu arm1176 -M versatilepb -serial stdio -append "root=/dev/sda2" -hda archlinuxarm-29-04-2012.img -clock dynticks

ध्यान दें कि आपके पास इस पद्धति (जो भी छवि पर अतिरिक्त है) का उपयोग करके केवल कई सौ मेगाबाइट का भंडारण होगा। QEMU उपयोगकर्ता गाइड का पालन ​​करके एक वर्चुअल हार्ड डिस्क बनाई जा सकती है ।


यह वही है जो मैं बाद में था - धन्यवाद! यह एक महान संदर्भ उत्तर है
एलेक्स एल

@ कोई समस्या नहीं, मुझे बताएं कि क्या आपको विस्तृत जानकारी देने की आवश्यकता है। इसके अलावा, मुझे बताएं कि क्या आपको एक डेबियन छवि काम कर रही है और हम इसे निर्देश में जोड़ सकते हैं यदि अलग है।
Jivings

यहाँ एक बहुत अच्छी तरह से चलना है
एलेक्स एल

@ एलेक्स यह एक अच्छा है, मैंने वह नहीं देखा।
Jivings

2
दूसरा बंद है, इसलिए मैं जो भी कर सकता हूं, उसे फिर से खोलने के लिए वोट दिया गया है
Jivings

8

Ubuntu 16.04, QEMU 2.9.0 -M raspi2, रास्पियन 2016-05-27, वेनिला कर्नेल

यहाँ छवि विवरण दर्ज करें

  1. स्रोत से संकलन QEMU 2.9.0:

    sudo apt-get build-dep qemu-system-arm
    git clone --recursive git://git.qemu-project.org/qemu.git
    cd qemu
    git checkout v2.9.0
    ./configure
    make `nproc`
    
  2. छवि डाउनलोड करें और उसमें से कर्नेल और डीटीएस निकालें:

    1. चित्र डाउनलोड करें और इसे अनज़िप करें:

      wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2016-05-31/2016-05-27-raspbian-jessie.zip
      unzip 2016-05-27-raspbian-jessie.zip
      
    2. विभाजन की दूसरी छवि को माउंट करें। सबसे आसान तरीका है:

      sudo losetup -f --show -P 2016-05-27-raspbian-jessie.img
      

      यह केवल losetupउबंटू 16.04, अन्य तरीकों पर नवीनतम के साथ काम करता है : https://askubuntu.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device/4965764496576

      यह एक लूप डिवाइस को प्रिंट करता है, जैसे:

      /dev/loop0
      

      तो हम करते हैं:

      sudo mkdir /mnt/rpi
      sudo mount /dev/loop0p1 /mnt/rpi
      cp /mnt/rpi/kernel7.img bcm2709-rpi-2-b.dtb .
      sudo umount /mnt/rpi
      sudo losetup -d /dev/loop0
      
  3. Daud:

    ./arm-softmmu/qemu-system-arm \
        -M raspi2 \
        -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2" \
        -cpu arm1176 \
        -dtb bcm2709-rpi-2-b.dtb \
        -sd 2016-05-27-raspbian-jessie.img \
        -kernel kernel7.img \
        -m 1G \
        -smp 4 \
        -serial stdio \
    ;
    

फिर आप उस टर्मिनल पर लॉगिन कर सकते हैं जो आपके होस्ट टर्मिनल पर दिखाता है।

वर्तमान सीमाएँ:

  • -M raspi2QEMU 2.6.0 में जोड़ा गया था, और Ubuntu 16.04 में केवल QEMU 2.5.0 है, इसलिए हमें QEMU को स्रोत से संकलित करना होगा। लेकिन यह कठिन नहीं है।
  • जीयूआई दिखाता है लेकिन माउस / कीबोर्ड पर प्रतिक्रिया नहीं दे रहा है, एसडीएल और वीएनसी दोनों पर परीक्षण किया गया है। लेकिन सीएलआई पूरी तरह से काम करता है। तो आप लाइट इमेज का उपयोग कर सकते हैं जो अभी के लिए GUI हो गया है।
  • कोई नेटवर्किंग नहीं

Ubuntu 16.04, QEMU 2.5.0, रास्पियन 2016-05-27, संशोधित कर्नेल

यह विधि उपयोग -M versatilepbकरती है जो उबंटू 16.04 के QEMU 2.5.0 पर मौजूद है।

नकारात्मक पक्ष यह है कि आपको एक संशोधित कर्नेल डाउनलोड करना होगा ( Qemu के साथ अनुकरण करना देखें: अतिरिक्त कर्नेल क्यों? ) और छवि को संशोधित करें, इसलिए यह वास्तविक प्रणाली का कम प्रतिनिधि है।

  1. डाउनलोड: https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/36ede073f4ccb64f60200ede36c231afe9502070/kernel-qem-4-4.4.12-jessie

    हम चुनते 4.4.12हैं कि रास्पियन छवि में कर्नेल संस्करण है।

    उस कर्नेल बूँद को उत्पन्न करने की प्रक्रिया का वर्णन भंडार में किया गया है: https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f6020060c36c231afe9502070/tools

    इस अतिरिक्त कर्नेल छवि की आवश्यकता क्यों है: Qemu के साथ अनुकरण: अतिरिक्त कर्नेल क्यों?

  2. रास्पियन छवि को संशोधित करें जैसा कि यहां उल्लेख किया गया है: https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulating-Jessie-image-with-4.x.xx-kernel-0068f0c21d942b0f331e18014ff8e22c20cada5c5cc5

    सारांश:

    1. छवि को वैसे ही माउंट करें जैसे हमने किया था -M raspi2, लेकिन पहले के बजाय दूसरे विभाजन का उपयोग करें:

      sudo mount /dev/loop0p2 /mnt/rpi
      
    2. चित्र संपादित करें:

      # Comment out the line present there with #
      sudo vim /mnt/rpi/etc/ld.so.preload
      # Comment out the lines of type: "/dev/mmcblk*"
      sudo vim /mnt/rpi/etc/fstab
      
  3. Daud:

    sudo apt-get install qemu-system-arm
    qemu-system-arm \
        -kernel kernel-qemu-4.4.12-jessie \
        -cpu arm1176 \
        -m 256 \
        -M versatilepb \
        -no-reboot \
        -serial stdio \
        -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
        -hda 2016-05-27-raspbian-jessie.img
    

[विफल] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, रास्पियन 2016-05-27, वेनिला कौशिक

इस नए उबंटू पर, QEMU 2.8.0 डिफ़ॉल्ट है, इसलिए हमें QEMU को स्रोत से संकलित करने की आवश्यकता नहीं है -M raspi2। हालाँकि, संदेश के बाद बूट पर 2.8.0 लटका हुआ है:

Console: switching to colour frame buffer device 100x30

यह दिखाने के लिए जाता है कि -M raspi2अभी भी अस्थिर कैसे है।

[विफल] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, रास्पियन 2017-08-16, वेनिला कर्नेल

इस नई छवि पर, 2016-05-27 के लिए समान विधि का उपयोग करते हुए, कर्नेल पैनिक बूट के साथ:

Please append a correct "root=" boot option; here are the available partitions:
...
[    4.138114] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

bztsrc/raspi3-tutorial RPI3 QEMU पर नंगे धातु

https://github.com/bztsrc/raspi3-tutorial उदाहरण का एक अच्छा सेट है कि QEMU पर सिर्फ काम, ultraquick में शुरू हो रही है: बेयर मेटल रास्पबेरी Pi छवियों के लिए QEMU अनुकरण करने के लिए कैसे


2
यार, तुम महान हो!
सबिन

4

आप वह नहीं कर सकते जो आप सुझा रहे हैं, क्योंकि रास्पबेरी पाई में अधिकांश पीसी की तुलना में एक अलग प्रोसेसर वास्तुकला है। जबकि अधिकांश पीसी x86- आधारित हैं, आरपीआई एआरएम-आधारित कंप्यूटर है।

यह वही कारण है जो आप नहीं चला सकते हैं, उदाहरण के लिए, आरपीआई पर माइक्रोसॉफ्ट विंडोज।

VmWare काम नहीं करेगा, क्योंकि यह केवल x86- आधारित ऑपरेटिंग सिस्टम (32-बिट और 64-बिट) को वर्चुअलाइज कर सकता है। ऐसे अन्य एमुलेटर हैं जो एआरएम को वर्चुअलाइज कर सकते हैं, जैसे कि क्यूईएमयू, लेकिन उन पर बिना सीपीयू वर्चुअल वर्जनटोन सपोर्ट के फुल सॉफ्टवेयर एमुलेशन चल रहा है, जिससे आप उनसे काफी धीमा होने की उम्मीद कर सकते हैं।


3
क्या आप x86 पर RasPi का अनुकरण करने के बारे में कुछ और जानकारी शामिल कर सकते हैं (अर्थात QEMU के साथ)? यही मैं वास्तव में इस सवाल पर ध्यान केंद्रित करना चाहता था, हालांकि स्पष्टीकरण की सराहना की जाती है।
एलेक्स एल

3
वोट डाउन करने के लिए क्षमा करें, लेकिन यह नहीं बताता है कि पूछने वाले को क्या हासिल करना है।
जी-।

दूसरी ओर, यह प्रश्न के अन्य बिंदुओं को संबोधित करता है जो अन्य उत्तर नहीं देता है। मुझे लगता है कि आपके

3
देशी पुण्य समर्थन के बिना भी, धीमी गति से सापेक्ष है क्योंकि आप शायद रास्पबेरी पाई की तुलना में बहुत अधिक शक्तिशाली मशीन पर वर्चुअलाइज कर रहे हैं
केनेथ विल्के

0

आप iotify.io पर सेंसर, कमांड लाइन और फ़ाइल संपादक के साथ शामिल रास्पबेरी पाई सिम्युलेटर को आसानी से आज़मा सकते हैं। विभिन्न परियोजनाओं, ओएस के साथ आरंभ करने के लिए https://docs.iotify.io/ पर हमारे दस्तावेज़ देखें और रास्पबेरी पाई के काम के माहौल से खुद को परिचित करें।

यहाँ छवि विवरण दर्ज करें


1
जबकि तकनीकी रूप से यह एक उत्तर है, आप कुछ स्वतंत्र विज्ञापन के लिए हमारी साइट का स्पष्ट रूप से उपयोग कर रहे हैं। जब भी आप जो पेशकश करते हैं वह मुफ्त हो सकता है फिर भी यह ठीक नहीं है। हम समुदाय में आपके योगदान की सराहना करते हैं लेकिन कृपया अपना विज्ञापन कहीं और ले जाएं।
डार्थ वादेर

4
@DarthVader: चूंकि पोस्टर ने यह ज्ञात किया कि वे उत्पाद से संबद्ध हैं, और यह प्रश्न का उत्तर देता है, इसलिए मुझे यह स्वीकार्य लगता है।
Jacobm001
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.