मैं अपने लिनक्स पीसी के लिए रास्पबेरी पाई ओएस युक्त एसडी कार्ड कैसे कनेक्ट कर सकता हूं, और एक एमुलेटर में ओएस बूट कर सकता हूं?
VMWare काम क्यों नहीं करेगा?
इस पद्धति की सीमाएँ क्या हैं?
संबंधित: एक विंडोज पीसी पर अनुकरण
मैं अपने लिनक्स पीसी के लिए रास्पबेरी पाई ओएस युक्त एसडी कार्ड कैसे कनेक्ट कर सकता हूं, और एक एमुलेटर में ओएस बूट कर सकता हूं?
VMWare काम क्यों नहीं करेगा?
इस पद्धति की सीमाएँ क्या हैं?
संबंधित: एक विंडोज पीसी पर अनुकरण
जवाबों:
हाँ यह पूरी तरह से संभव है। हालांकि, वास्तव में यह थोड़ा अलग है कि आप कैसे सोच रहे हैं।
एसडी कार्ड में ऑपरेटिंग सिस्टम की एक छवि होती है। और जब डिवाइस चालू होता है तो इस छवि को फुलाकर काम करता है।
जैसा कि मुझे उम्मीद है कि आप पहले से ही जानते हैं, आप एक कार्य प्रणाली बनाने के लिए इस छवि को एसडी कार्ड पर फ्लैश करते हैं। हालाँकि, आप क्या कर सकते हैं इससे पहले कि आप छवि को फ्लैश करें क्यूईएमयू का उपयोग करके इसके साथ एक नाटक है , जो एक प्रोसेसर एमुलेटर है , और हमें एआरएम निर्देश सेट का अनुकरण करने की अनुमति देता है।
इस तरह, आप छवि में कोई भी बदलाव (इंस्टॉल करना, संकलन करना आदि) एसडी कार्ड में फ्लैश करने के बाद भी रहेंगे।
अब मैं आपसे बात करूंगा कि इमेज को लोड करने के लिए QEMU का उपयोग कैसे करें। मैं आर्क लिनक्स छवि के साथ प्रदर्शन करूंगा, लेकिन प्रक्रिया समान रूप से होनी चाहिए।
आपको अपने सिस्टम के लिए 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: यहाँ एक कर्नेल इमेज संकलित करने का तरीका बताएं?
अब आपके पास होना चाहिए:
वर्चुअल मशीन को अब निम्न लंबी-घुमावदार कमांड का उपयोग करके शुरू किया जा सकता है:
qemu-system-arm -kernel zImage -cpu arm1176 -M versatilepb -serial stdio -append "root=/dev/sda2" -hda archlinuxarm-29-04-2012.img -clock dynticks
ध्यान दें कि आपके पास इस पद्धति (जो भी छवि पर अतिरिक्त है) का उपयोग करके केवल कई सौ मेगाबाइट का भंडारण होगा। QEMU उपयोगकर्ता गाइड का पालन करके एक वर्चुअल हार्ड डिस्क बनाई जा सकती है ।
Ubuntu 16.04, QEMU 2.9.0 -M raspi2, रास्पियन 2016-05-27, वेनिला कर्नेल
स्रोत से संकलन 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`
छवि डाउनलोड करें और उसमें से कर्नेल और डीटीएस निकालें:
चित्र डाउनलोड करें और इसे अनज़िप करें:
wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2016-05-31/2016-05-27-raspbian-jessie.zip
unzip 2016-05-27-raspbian-jessie.zip
विभाजन की दूसरी छवि को माउंट करें। सबसे आसान तरीका है:
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
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 raspi2
QEMU 2.6.0 में जोड़ा गया था, और Ubuntu 16.04 में केवल QEMU 2.5.0 है, इसलिए हमें QEMU को स्रोत से संकलित करना होगा। लेकिन यह कठिन नहीं है।Ubuntu 16.04, QEMU 2.5.0, रास्पियन 2016-05-27, संशोधित कर्नेल
यह विधि उपयोग -M versatilepb
करती है जो उबंटू 16.04 के QEMU 2.5.0 पर मौजूद है।
नकारात्मक पक्ष यह है कि आपको एक संशोधित कर्नेल डाउनलोड करना होगा ( Qemu के साथ अनुकरण करना देखें: अतिरिक्त कर्नेल क्यों? ) और छवि को संशोधित करें, इसलिए यह वास्तविक प्रणाली का कम प्रतिनिधि है।
हम चुनते 4.4.12
हैं कि रास्पियन छवि में कर्नेल संस्करण है।
उस कर्नेल बूँद को उत्पन्न करने की प्रक्रिया का वर्णन भंडार में किया गया है: https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f6020060c36c231afe9502070/tools
इस अतिरिक्त कर्नेल छवि की आवश्यकता क्यों है: Qemu के साथ अनुकरण: अतिरिक्त कर्नेल क्यों?
रास्पियन छवि को संशोधित करें जैसा कि यहां उल्लेख किया गया है: https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulating-Jessie-image-with-4.x.xx-kernel-0068f0c21d942b0f331e18014ff8e22c20cada5c5cc5
सारांश:
छवि को वैसे ही माउंट करें जैसे हमने किया था -M raspi2
, लेकिन पहले के बजाय दूसरे विभाजन का उपयोग करें:
sudo mount /dev/loop0p2 /mnt/rpi
चित्र संपादित करें:
# 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
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 अनुकरण करने के लिए कैसे
आप वह नहीं कर सकते जो आप सुझा रहे हैं, क्योंकि रास्पबेरी पाई में अधिकांश पीसी की तुलना में एक अलग प्रोसेसर वास्तुकला है। जबकि अधिकांश पीसी x86- आधारित हैं, आरपीआई एआरएम-आधारित कंप्यूटर है।
यह वही कारण है जो आप नहीं चला सकते हैं, उदाहरण के लिए, आरपीआई पर माइक्रोसॉफ्ट विंडोज।
VmWare काम नहीं करेगा, क्योंकि यह केवल x86- आधारित ऑपरेटिंग सिस्टम (32-बिट और 64-बिट) को वर्चुअलाइज कर सकता है। ऐसे अन्य एमुलेटर हैं जो एआरएम को वर्चुअलाइज कर सकते हैं, जैसे कि क्यूईएमयू, लेकिन उन पर बिना सीपीयू वर्चुअल वर्जनटोन सपोर्ट के फुल सॉफ्टवेयर एमुलेशन चल रहा है, जिससे आप उनसे काफी धीमा होने की उम्मीद कर सकते हैं।
आप iotify.io पर सेंसर, कमांड लाइन और फ़ाइल संपादक के साथ शामिल रास्पबेरी पाई सिम्युलेटर को आसानी से आज़मा सकते हैं। विभिन्न परियोजनाओं, ओएस के साथ आरंभ करने के लिए https://docs.iotify.io/ पर हमारे दस्तावेज़ देखें और रास्पबेरी पाई के काम के माहौल से खुद को परिचित करें।