Qemu Kullanılarak Raspberry Pi Taklit Edilemiyor: Kernel Panic


15

Fedora 22 makinemde Raspberry Pi'yi taklit etmek için internette çeşitli rehberleri takip etmeye çalışıyorum. Ben şu soruyu buldum: QEMU ile raspbian öykünmek ve bir çekirdek kapmak için çekirdek -qemu bulmak için kullanılır . Ben indirilen 2015-09-24-raspbian-jessie.imgAhududu Pi iyi millet.

Koşmaya çalıştığımda qemu-system-armbir çekirdek paniği alıyorum. Kaçırdığım bir şey var mı?

İşte qemu-system-armyazdığım komut satırı:

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

Ardından çekirdek mesajları:

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
Hırıltılı görüntüyü taklit etmeyi denediniz mi? Çekirdek onunla çalışırsa, jessie olmalı.
dhruvvyas90

Ah, ah! Evet, çekirdek img ile eşleşmediğinde işler bozulur! Hırıltılı görüntü çalışıyor ... Teşekkürler.
Mike S

Yanıtlar:


4

@Dastaan'ın dediği gibi, çekirdek sürümünün img dosyasıyla eşleşmesi gerekir. 3.18 çekirdekli bir 4.1 çekirdekli sürüm resim dosyası kullanmaya çalışıyordum.

Şimdi doğru görüntüyü kullandığım için işe yarıyor.

Teşekkürler!

Düzenleme: Bu işe almak oldukça basittir: https://github.com/dhruvvyas90/qemu-rpi-kernel/ adresinden görüntüyü yakalayın, sonra https://www.raspberrypi.org/ adresinden istediğiniz Raspian görüntüsünü indirin indirmeler / raspbian / . Şu anda, Jessie ve Wheezy her iki yerde de var, ancak gelecekte uygun çekirdeğin o Github sitesinde mevcut olacağının garantisi yok. Her halükarda, hızdan çok etkilenmedim, bu yüzden dizüstü bilgisayarımın kablolu ağ bağlantı noktasına gerçek bir Pi koymayı ve 5200 mAh cep telefonu yardımcı pili ile güçlendirmeyi ve dizüstü bilgisayarda VNC'yi kullanmayı düşünüyorum. bir ekran.

Jessie'yi çalıştırmadım; sorun buydu-Wheezy kernel ve Jessie imajım vardı, ama Jessie kernelim yoktu.


1
En son çekirdeği kullanarak nasıl çözdüğünüzü ayrıntılı olarak ekleyebilir misiniz? Jessie'yi taklit etmeye çalışan diğer kullanıcılara yardımcı olacaktır. Teşekkürler.
dhruvvyas90

3
Bir jessie çekirdeği ve jessie görüntüsünü deniyorum ve aynı hatayla başarısız oluyorlar. 4.1 çekirdeği ( github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/… ) ve Raspbian'dan Mayıs 2015 tarihli normal jessie yazısı.
Michael McGarrah

Suç yok, ama jessie çekirdeği diye bir şey yok. Raspbian netinstaller ile hırıltılı veya jessie kurmayı seçebilirsiniz ve her iki durumda da aynı çekirdek çekilir .
Diederik de Haas

Çekirdeklerin sürüme göre adlandırıldığı doğru olsa da, sorunum raspbian netinstaller'ın nasıl indirileceği değildi. Benim sorunum Raspberry Pi iyi millet görüntü dosyalarını uygun bir çekirdek sürümü ile eşleşiyordu. Gelecekte, bu soruya karışan insanların hata mesajlarıma bakacağını ve sorunlarının ne olduğunu anlayacağını umuyorum.
Mike S

@MichaelMcGarrah bu repo'nun wikisini okuduktan sonra işe koyuldu: raspberrypi.stackexchange.com/a/53993/33424 Raspbian görüntüsünü biraz düzeltmelisiniz.
Ciro Santilli 事件 at 中心 法轮功 六四 事件


1

Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2016-05-27, vanilya çekirdeği

resim açıklamasını buraya girin

Adımlar:

  1. QEMU 2.9.0 kaynağından derleyin:

    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. Görüntüyü indirin ve çekirdeği ve dts'i çıkarın:

    1. Resmi indirin ve sıkıştırmasını açın:

      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. Bölümün ikinci görüntüsünü bağlayın. En kolay yol:

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

      Bu yalnızca en son losetupUbuntu 16.04, diğer yöntemlerle çalışır : /ubuntu/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576

      Bu bir döngü cihazı yazdırır, örneğin:

      /dev/loop0
      

      bu yüzden yapıyoruz:

      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. Çalıştırmak:

    ./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 \
    ;
    

Daha sonra ana bilgisayar terminalinizde gösterilen terminalde oturum açabilirsiniz.

Mevcut sınırlamalar:

  • -M raspi2QEMU 2.6.0'da eklendi ve Ubuntu 16.04'te yalnızca QEMU 2.5.0 var, bu nedenle QEMU'yu kaynaktan derlemeliyiz. Ama bu zor değil.
  • GUI, hem SDL hem de VNC'de test edilen fare / klavyeyi gösterir ancak yanıt vermez. Ancak CLI mükemmel çalışıyor. Şimdilik GUI olan Lite görüntüsünü de kullanabilirsiniz.
  • ağ yok

Ubuntu 16.04, QEMU 2.5.0, Raspbian 2016-05-27, değiştirilmiş çekirdek

Bu yöntem -M versatilepb, Ubuntu 16.04'ün QEMU 2.5.0 sürümünde bulunan yöntemi kullanır .

Dezavantajı, değiştirilmiş bir çekirdeği indirmeniz (bkz. Qemu ile Taklit Etme: neden ekstra çekirdek? ) Ve görüntüyü değiştirmelisiniz, bu yüzden gerçek sistemi daha az temsil eder.

  1. İndir: https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/36ede073f4ccb64f60200ede36c231afe9502070/kernel-qemu-4.4.12-jessie

    Biz almak 4.4.12o Raspbian görüntüde çekirdek versiyonu beri.

    Bu çekirdek blobunu oluşturma işlemi, depoda şu adreste açıklanmıştır: https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools

    Neden bu ekstra çekirdek görüntüsüne ihtiyaç var: Qemu ile taklit etmek: neden ekstra çekirdek?

  2. Raspbian görüntüsünü şu şekilde belirtin: https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulating-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cada5c

    Özet:

    1. Görüntüyü aynen yaptığımız gibi bağlayın -M raspi2, ancak birincisi yerine ikinci bölümü kullanın:

      sudo mount /dev/loop0p2 /mnt/rpi
      
    2. Resmi düzenleyin:

      # 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. Çalıştırmak:

    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
    

[başarısız] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, Raspbian 2016-05-27, vanilya çekirdeği

Bu yeni Ubuntu'da, QEMU 2.8.0 varsayılan ayardır, bu nedenle QEMU'yu kaynağından derlememiz gerekmez -M raspi2. Ancak, 2.8.0 iletiden sonra önyüklemede asılı kalır:

Console: switching to colour frame buffer device 100x30

Bu -M raspi2hala kararsızlığın ne olduğunu gösteriyor .

[başarısız] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2017-08-16, vanilya çekirdeği

Bu yeni görüntüde, 2016-05-27 için aynı yöntemi kullanarak, çekirdek panikleri aşağıdakilerle önyükleniyor:

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 QEMU'da RPI3 çıplak metal

https://github.com/bztsrc/raspi3-tutorial , sadece QEMU üzerinde çalışan iyi bir örnektir, ultraquick başlangıç: Çıplak metal Raspberry Pi görüntüleri için QEMU öykünmesi nasıl yapılır


İle yönteminiz losetupaşırı derecede karmaşık. Bunun yerine fdisk -l your-image.img, seçeneğini kullanın ve sonra mountseçeneğin içindeki bölümün ofsetini kullanabilirsiniz -o loop,offset=$((512*YOUR_OFFSET)).
Ruslan

-M raspi2 çalışmıyor
zhaofeng-shu33

0

Kılavuzların çoğu eski ve bozuk bağlantılar içeriyor. Kullandığınız raspbian sürümüyle eşleşen yamalı bir çekirdek kullanmalısınız.

Aşağıdaki kılavuz Şubat 2017 itibariyle çalışır. QEMU üzerinde çalıştırmak için raspbian görüntüsünü değiştiren bir komut dosyası içerir ve ağ bağlantınızı raspbian ile otomatik olarak paylaşır.

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


-1

Raspbian Jessie için özel çekirdeğimi (4.1.7) github, polaco1782'den indirebilirsiniz . Doc dosyalarındaki talimatları izleyin.


1
Her taklit etmeye çalıştığımda çekirdeğiniz beni acil durum modu istemine gönderiyor. Beni okudum dosyasında yazıldığı gibi yaptım. (Son yazıya bakın -> raspberrypi.org/forums/viewtopic.php?t=112259 ) Cevabınızı, temel jessie görüntüsünde neyi değiştirdiğinizi göstermek için adım adım gösterecek şekilde düzenleyebilir misiniz? Jessie görüntüsü canlı olduğu için diğer kullanıcılara da kullanışlı olacak, giderek daha fazla kullanıcı qemu'da jessie'yi taklit edecek. Şimdiden teşekkürler.
dhruvvyas90

Çekirdeğinizin geleneklerini açıklamak için cevabınızı genişletebilir misiniz?
Greenonline

fstabSorunumu mmcblk girişlerini yorumlayarak çözebildim.
dhruvvyas90

@Greenonline qemu Rpi platformunu desteklemediğinden, Qemu üzerinde rpi öykünmesi için gerekli bir çekirdek yapılandırma ayarı vardır. Sadece Rpi çekirdeğini alıp kutudan çıkmasını sağlayamazsınız.
dhruvvyas90
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.