रास्पबेरी पाई का अनुकरण Qemu का उपयोग नहीं कर सकता: कर्नेल आतंक


15

मैं अपने फेडोरा 22 मशीन पर रास्पबेरी पाई का अनुकरण करने के लिए इंटरनेट पर विभिन्न गाइडों का पालन करने की कोशिश कर रहा हूं। मुझे यह प्रश्न मिला है: QEMU के साथ रास्पियन का अनुकरण करना और कर्नेल को हथियाने के लिए इसे कर्नेल- क्यूमू खोजने के लिए उपयोग किया । मैंने 2015-09-24-raspbian-jessie.imgरास्पबेरी पाई में अच्छे लोगों से डाउनलोड किया।

जब मैं चलाने की कोशिश करता हूं तो मुझे qemu-system-armएक कर्नेल घबराहट होती है। क्या मुझे कुछ याद आ रहा है?

यहाँ qemu-system-armकमांड लाइन है जिसे मैंने टाइप किया है:

qemu-system-arm -cpu arm1176 -m 256 -M versatilepb -no-reboot -nographic -kernel kernel-qemu -appc=2 console=ttyAMA0 rw" -hda 2015-09-24-raspbian-jessie.img -net nic -net user,hostfwd=tcp::9999-:22

कर्नेल संदेशों द्वारा अनुसरण किया गया:

sd 0:0:0:0: [sda] Attached SCSI disk
smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>
eth0: SMC91C11xFD (rev 1) at d089a000 IRQ 25 [nowait]
eth0: Ethernet addr: 52:54:00:12:34:56
mousedev: PS/2 mouse device common for all mice
TCP cubic registered
NET: Registered protocol family 17
input: AT Raw Set 2 keyboard as /devices/fpga:06/serio0/input/input0
input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:07/serio1/input/input1
EXT2-fs (sda2): error: couldn't mount because of unsupported optional features (244)
EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
EXT4-fs (sda2): recovery complete
EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 8:2.
devtmpfs: mounted
Freeing init memory: 120K
Kernel panic - not syncing: Attempted to kill init!
[<c0032bec>] (unwind_backtrace+0x0/0xf0) from [<c03064dc>] (panic+0x58/0x170)
[<c03064dc>] (panic+0x58/0x170) from [<c0044054>] (do_exit+0x5d0/0x68c)
[<c0044054>] (do_exit+0x5d0/0x68c) from [<c004435c>] (do_group_exit+0x40/0xb0)
[<c004435c>] (do_group_exit+0x40/0xb0) from [<c004ed48>] (get_signal_to_deliver+0x1a8/0x378)
[<c004ed48>] (get_signal_to_deliver+0x1a8/0x378) from [<c002f124>] (do_signal+0x90/0x518)
[<c002f124>] (do_signal+0x90/0x518) from [<c002fa64>] (do_notify_resume+0x48/0x54)
[<c002fa64>] (do_notify_resume+0x48/0x54) from [<c002cc38>] (work_pending+0x24/0x28)

2
क्या आपने मट्ठा छवि का अनुकरण करने की कोशिश की है? यदि कर्नेल इसके साथ काम करता है, तो उसे जेसी होना चाहिए।
dhruvvyas90

ओह, दुआ! हाँ, जब कर्नेल img से मेल नहीं खाता, तो चीजें टूट जाती हैं! मट्ठा छवि काम करती है ... धन्यवाद।
माइक एस

जेनेरिक
हाउटो

जवाबों:


4

जैसा कि @dastaan ​​ने कहा, कर्नेल संस्करण को img फ़ाइल से मेल खाना चाहिए। मैं 3.18 कर्नेल के साथ 4.1 कर्नेल संस्करण छवि फ़ाइल का उपयोग करने की कोशिश कर रहा था।

अब जब मैं उचित छवि का उपयोग कर रहा हूं, तो यह काम करता है।

धन्यवाद!

संपादित करें: यह काम करने के लिए बहुत सरल है: https://github.com/dhruvvyas90/qemu-rpi-kernel/ से छवि को पकड़ो , फिर उसी रास्पियन छवि को डाउनलोड करें जिसे आप https://www.raspberrypi.org/ पर चाहते हैं। डाउनलोड / रास्पियन / । वर्तमान में, जेसी और व्हीजी दोनों जगहों पर हैं, लेकिन भविष्य में इस बात की कोई गारंटी नहीं है कि उपयुक्त गिर्ब उस गीथूब साइट पर उपलब्ध होगा। किसी भी घटना में, मैं खुद की गति से इतना प्रभावित नहीं था, इसलिए मैं अपने लैपटॉप के वायर्ड नेटवर्क पोर्ट पर एक वास्तविक पाई डालकर 5200 एमएएच की सेलफ़ोन सहायक बैटरी चीज़ के माध्यम से इसे देख रहा हूँ, और लैपटॉप पर वीएनसी का उपयोग कर रहा हूँ एक प्रदर्शन।

मुझे जेसी से काम नहीं मिला; यह समस्या थी- मेरे पास व्हीजी कर्नेल और जेसी छवि थी, लेकिन मेरे पास जेसी कर्नेल नहीं था।


1
क्या आप विस्तृत उत्तर जोड़ सकते हैं कि आपने नवीनतम कर्नेल का उपयोग करके इसे कैसे हल किया? यह अन्य उपयोगकर्ताओं को जेसी का अनुकरण करने में मदद करेगा। धन्यवाद।
druvvyas90

3
मैं एक jessie कर्नेल और jessie छवि की कोशिश कर रहा हूँ और वे एक ही त्रुटि के साथ असफल हो रहे हैं। एक 4.1 कर्नेल ( github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/… ) और नियमित जेसी पोस्ट मई 2015 से रास्पियन।
माइकल मैकगर्ह

कोई अपराध नहीं है, लेकिन जेसी कर्नेल जैसी कोई चीज नहीं है। साथ raspbian netinstaller आप खरखरा या जेसी और दोनों ही मामलों में ठीक उसी कर्नेल स्थापित हो जाता स्थापित करने के लिए चुन सकते हैं।
डिडेरिक डे हास

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

@MichaelMcGarrah को उस रेपो की विकी पढ़ने के बाद काम करने के लिए मिला: raspberrypi.stackexchange.com/a/53993/33424 आपको रास्पियन छवि को थोड़ा मोड़ना होगा।
सिरो सेंटिल्ली 新疆 i iro i 事件 '

1

बेझिझक मेरे qemu सक्षम कर्नेल पर एक नज़र डालें: https://github.com/diederikdehaas/raspbian-kernel
प्रतिबद्ध संदेशों में आप क्या और कैसे चीजें बदली गईं, इस पर विस्तृत विवरण पा सकते हैं।
इसका अधिकांश भाग इस लेख पर आधारित था: https://web.archive.org/web/20131210001638/http://xecdesign.com/compiling-a-kernel/


1

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, अन्य तरीकों पर नवीनतम के साथ काम करता है : /ubuntu/69363/mount-single-partition-from-image-of-entire-disk-device/496576/496576

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

      /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 दिखाता है, लेकिन माउस / कीबोर्ड का जवाब नहीं दे रहा है, SDL और VNC दोनों पर परीक्षण किया गया है। लेकिन सीएलआई पूरी तरह से काम करता है। तो आप लाइट इमेज का उपयोग कर सकते हैं जो अभी के लिए GUI हो गया है।
  • कोई नेटवर्किंग नहीं

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

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

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

  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-0068f0c21d942b0f331e18014ff8e22c20cada5c5

    सारांश:

    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 पर काम करते हैं, अल्ट्राक्विक शुरू हो रहे हैं: नंगे धातु के लिए QEMU अनुकरण कैसे करें रास्पबेरी पाई चित्र


आपकी विधि losetupअत्यधिक जटिल है। आप इसके बजाय बस उपयोग कर सकते हैं fdisk -l your-image.img, और फिर mountविकल्प में विभाजन के लिए ऑफसेट का उपयोग कर सकते हैं -o loop,offset=$((512*YOUR_OFFSET))
रुस्लान

-M raspi2 काम नहीं
zhaofeng-shu33

0

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

निम्न मार्गदर्शिका feb 2017 के रूप में काम करती है। यह एक ऐसी स्क्रिप्ट पेश करती है जो QEMU पर चलने के लिए रास्पियन छवि को बदलने का ध्यान रखती है, और अपने नेटवर्क कनेक्शन को रास्पियन के साथ स्वचालित रूप से साझा करती है।

https://ownyourbits.com/2017/02/06/raspbian-on-qemu-with-network-access/


-1

आप मेरे गिथब, पोलको 1782 पर रास्पियन जेसी के लिए मेरा कस्टम कर्नेल (4.1.7) डाउनलोड कर सकते हैं । डॉक्टर फ़ाइलों पर निर्देशों का पालन करें।


1
आपका कर्नेल मुझे हर बार जब मैं अनुकरण करने की कोशिश करता है, तो आपातकालीन मोड पर भेजता है। मैंने वैसा ही किया जैसा कि मुझे फाइल पढ़ने में लिखा गया है। (अंतिम पोस्ट देखें -> raspberrypi.org/forums/viewtopic.php?t=112259 ) क्या आप इसे बनाने के लिए अपने जवाब को कदम से दिखाने के लिए संपादित कर सकते हैं कि आपने इसे बनाने के लिए बेसिक जेसी इमेज में क्या बदलाव किया है। यह अन्य उपयोगकर्ताओं के लिए काम आएगा क्योंकि अब jessie छवि लाइव है, अधिक से अधिक उपयोगकर्ता qemu पर jessie का अनुकरण करने वाले हैं। अग्रिम में धन्यवाद।
druvvyas90

क्या आप अपने कर्नेल के बारे में बताने के लिए अपने उत्तर का विस्तार कर सकते हैं?
ग्रीननलाइन

मैं fstabmmcblk प्रविष्टियों पर टिप्पणी करके अपनी समस्या को हल करने में सक्षम था ।
dhruvvyas90

@Greenonline चूंकि qemu Rpi प्लेटफ़ॉर्म का समर्थन नहीं करता है, इसलिए Qemu पर rpi का अनुकरण करने के लिए आवश्यक कर्नेल कॉन्फ़िगरेशन ट्वीक है। आप सिर्फ आरपीआई कर्नेल नहीं ले सकते हैं और इसे बॉक्स से बाहर कर सकते हैं।
dhruvvyas90
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.