Bagaimana saya bisa menghubungkan kartu SD yang berisi Raspberry Pi OS ke PC Linux saya, dan boot OS di emulator?
Mengapa VMWare tidak berfungsi?
Apa keterbatasan metode ini?
Terkait: Emulasi pada PC Windows
Bagaimana saya bisa menghubungkan kartu SD yang berisi Raspberry Pi OS ke PC Linux saya, dan boot OS di emulator?
Mengapa VMWare tidak berfungsi?
Apa keterbatasan metode ini?
Terkait: Emulasi pada PC Windows
Jawaban:
Ya ini sepenuhnya mungkin. Namun, pada kenyataannya itu sedikit berbeda dengan cara Anda berpikir.
Kartu SD berisi gambar sistem operasi. Dan berfungsi dengan menggembungkan gambar ini saat perangkat dihidupkan.
Seperti yang saya harapkan Anda sudah tahu, Anda mem-flash gambar ini ke kartu SD untuk membuat sistem kerja. Namun, apa yang dapat Anda lakukan sebelum mem-flash gambar adalah bermain-main dengannya menggunakan QEMU , yang merupakan emulator prosesor , dan memungkinkan kami untuk meniru set instruksi ARM.
Dengan cara ini, setiap perubahan yang Anda lakukan pada gambar (menginstal, mengkompilasi dll) akan tetap ada setelah Anda mem-flash-nya ke kartu SD.
Sekarang saya akan membicarakan cara menggunakan QEMU untuk memuat gambar. Saya akan menunjukkan dengan gambar Arch Linux, tetapi prosesnya harus tetap sama.
Anda perlu memperoleh QEMU untuk sistem Anda. QEMU seharusnya hanya memiliki satu persyaratan, agar perangkat input berfungsi, Anda perlu menginstal paket pengembangan SDL, yang harus tersedia dari manajer paket Anda.
Saya sarankan mengunduh paket menggunakan manajer paket reguler Anda:
Lengkungan :
sudo pacman -S sdl qemu
Ubuntu :
Versi yang lebih baru (sejak 14.04) memiliki paket untuk itu:
sudo apt-get install qemu-system-arm
Untuk versi yang lebih lama:
sudo apt-get install libsdl-dev
sudo add-apt-repository ppa:linaro-maintainers/tools
sudo apt-get update
sudo apt-get install qemu-system
Bangun QEMU sendiri
Atau, Anda dapat membangun QEMU sendiri. Ini bagus jika Anda ingin mencoba versi baru, tetapi bisa lambat dan bersiaplah untuk banyak kesalahan selama kompilasi! Perhatikan bahwa jika membangun QEMU dari situs web mereka, itu harus dikompilasi untuk dukungan ARM. Jadi, periksa repositori distro Anda terlebih dahulu. Ini bisa dilakukan seperti itu;
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
Pastikan Anda memiliki dukungan ARM dengan:
qemu-system-arm --version
QEMU emulator version 1.0,1, Copyright (c) 2003-2008 Fabrice Bellard
Kami sedang bekerja dengan Arch Linux, jadi akan menggunakan gambar Arch Arm. Tetapi gantilah ini dengan apa pun yang ingin Anda kerjakan, atau mungkin Anda sudah memiliki gambar. Dalam hal ini, lewati langkah ini.
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
Agar QEMU berfungsi, kita juga membutuhkan gambar kernel (yang akan berada di dalam file .img).
Catatan: Saya rasa langkah ini tidak diperlukan untuk Debian. Seseorang tolong konfirmasi.
Untungnya ada gambar yang telah dikompilasi tersedia, dan Anda dapat menggunakannya dari sini ( unduh langsung ).
TODO: Tunjukkan cara mengkompilasi gambar kernel di sini?
Anda sekarang harus memiliki:
Mesin Virtual sekarang dapat mulai menggunakan perintah panjang lebar berikut ini:
qemu-system-arm -kernel zImage -cpu arm1176 -M versatilepb -serial stdio -append "root=/dev/sda2" -hda archlinuxarm-29-04-2012.img -clock dynticks
Perhatikan bahwa Anda hanya akan memiliki beberapa ratus megabyte penyimpanan menggunakan metode ini (apa pun yang ada di gambar). Hard disk virtual dapat dibuat dengan mengikuti panduan pengguna QEMU .
Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2016-05-27, vanilla kernel
Kompilasi QEMU 2.9.0 dari sumber:
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`
Unduh gambar dan ekstrak kernel dan dts dari itu:
Unduh gambar dan unzip:
wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2016-05-31/2016-05-27-raspbian-jessie.zip
unzip 2016-05-27-raspbian-jessie.zip
Pasang gambar kedua partisi. Cara termudah adalah:
sudo losetup -f --show -P 2016-05-27-raspbian-jessie.img
Ini hanya bekerja dengan yang terbaru losetup
di Ubuntu 16.04, metode lain di: https://askubuntu.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576
Ini mencetak perangkat loop, misalnya:
/dev/loop0
jadi kami lakukan:
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
Lari:
./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 \
;
Anda kemudian dapat login di terminal yang ditampilkan di terminal host Anda.
Batasan saat ini:
-M raspi2
ditambahkan di QEMU 2.6.0, dan Ubuntu 16.04 hanya memiliki QEMU 2.5.0, jadi kita harus mengkompilasi QEMU dari source. Tapi ini tidak sulit.Ubuntu 16.04, QEMU 2.5.0, Raspbian 2016-05-27, kernel yang dimodifikasi
Metode ini menggunakan -M versatilepb
yang ada pada QEMU 2.5.0 dari Ubuntu 16.04.
Kelemahannya adalah Anda harus mengunduh kernel yang dimodifikasi (lihat Emulasi dengan Qemu: mengapa kernel ekstra? ), Dan memodifikasi gambar, sehingga kurang mewakili sistem nyata.
Kami memilih 4.4.12
karena itu adalah versi kernel pada gambar Raspbian.
Proses untuk membuat gumpalan kernel tersebut dijelaskan di dalam repositori di: https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools
Mengapa gambar kernel tambahan ini diperlukan: Emulasi dengan Qemu: mengapa kernel ekstra?
Ubah gambar Raspbian sebagaimana disebutkan di: https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulating-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cada5c
Ringkasan:
Pasang gambar seperti yang kami lakukan untuk -M raspi2
, tetapi gunakan partisi kedua, bukan yang pertama:
sudo mount /dev/loop0p2 /mnt/rpi
Edit gambar:
# 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
Lari:
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
[gagal] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, Raspbian 2016-05-27, vanilla kernel
Di Ubuntu yang lebih baru ini, QEMU 2.8.0 adalah default, jadi kami tidak perlu mengkompilasi QEMU dari sumber -M raspi2
. Namun, 2.8.0 hang saat boot setelah pesan:
Console: switching to colour frame buffer device 100x30
Ini menunjukkan bahwa -M raspi2
masih tidak stabil .
[gagal] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2017-08-16, kernel vanilla
Pada gambar yang lebih baru ini, menggunakan metode yang sama untuk 2016-05-27, kernel panik saat boot dengan:
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 bare metal di QEMU
https://github.com/bztsrc/raspi3-tutorial adalah sekumpulan contoh yang bagus yang hanya bekerja pada QEMU, ultraquick untuk memulai di: Cara melakukan emulasi QEMU untuk gambar Raspberry Pi logam kosong
Anda tidak dapat melakukan apa yang Anda sarankan, karena Raspberry Pi memiliki arsitektur prosesor yang berbeda dari kebanyakan PC. Sementara sebagian besar PC berbasis x86, RPi adalah komputer berbasis ARM.
Ini adalah alasan yang sama dengan mengapa Anda tidak dapat menjalankan, misalnya, Microsoft Windows pada RPi.
VmWare tidak akan berfungsi, karena hanya dapat memvirtualisasikan sistem operasi berbasis x86 (32-bit dan 64-bit). Ada emulator lain yang dapat memvirtualisasikan ARM, seperti QEMU, tetapi mereka menjalankan emulasi perangkat lunak lengkap tanpa dukungan virtualisasi CPU asli, sehingga Anda dapat mengharapkan mereka menjadi sangat lambat.
Anda dapat dengan mudah mencoba simulator Raspberry Pi yang disertakan dengan sensor, command line, dan editor file di iotify.io. Lihat dokumentasi kami di https://docs.iotify.io/ untuk memulai dengan berbagai proyek, OS dan buat diri Anda terbiasa dengan lingkungan kerja Raspberry Pi.