Raspberry Pi OS가 포함 된 SD 카드를 Linux PC에 연결하고 에뮬레이터에서 OS를 부팅하려면 어떻게해야합니까?
VMWare가 작동하지 않는 이유는 무엇입니까?
이 방법의 한계는 무엇입니까?
관련 : Windows PC에서 에뮬레이션
Raspberry Pi OS가 포함 된 SD 카드를 Linux PC에 연결하고 에뮬레이터에서 OS를 부팅하려면 어떻게해야합니까?
VMWare가 작동하지 않는 이유는 무엇입니까?
이 방법의 한계는 무엇입니까?
관련 : Windows PC에서 에뮬레이션
답변:
예, 이것은 가능합니다. 그러나 실제로는 생각하는 방식과 약간 다릅니다.
SD 카드에는 운영 체제 이미지 가 포함되어 있습니다 . 장치 전원을 켤 때이 이미지를 부풀려서 작동합니다.
이미 알고 있듯이이 시스템을 작동시키기 위해이 이미지를 SD 카드에 플래시합니다. 그러나 이미지를 플래시 하기 전에 수행 할 수있는 작업 은 프로세서 에뮬레이터 인 QEMU를 사용하여 이미지를 재생 하는 것이며 ARM 명령어 세트를 에뮬레이션 할 수 있습니다.
이런 식으로 SD 카드에 이미지를 플래시 한 후에도 이미지 변경 (설치, 컴파일 등)이 그대로 유지됩니다.
이제 QEMU를 사용하여 이미지를로드하는 방법에 대해 설명하겠습니다. Arch Linux 이미지로 시연 할 것이지만 프로세스는 관계없이 동일해야합니다.
시스템에 대한 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
우리는 Arch Linux와 함께 작업하고 있으므로 Arch Arm 이미지를 사용할 것입니다. 그러나 이것을 작업하고 싶거나 이미 이미지가있는 것으로 바꾸십시오. 이 경우이 단계를 건너 뛰십시오.
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 파일 안에 있음)도 필요합니다.
참고 : 데비안에서는이 단계가 필요하다고 생각하지 않습니다. 누군가 확인해주세요.
운 좋게도 사전 컴파일 된 이미지가 있으며 여기 에서 직접 사용할 수 있습니다 ( 직접 다운로드 ).
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 사용 설명서 에 따라 가상 하드 디스크를 만들 수 있습니다 .
우분투 16.04, QEMU 2.9.0 -M raspi2, Raspbian 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`
이미지를 다운로드하고 커널과 dts를 추출하십시오.
이미지를 다운로드하고 압축을 풉니 다 :
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
Ubuntu 16.04의 최신 버전에서만 작동하며 https://askubuntu.com/questions/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
운영:
./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를 컴파일해야합니다. 그러나 이것은 어렵지 않습니다.우분투 16.04, QEMU 2.5.0, Raspbian 2016-05-27, 수정 된 커널
이 방법은 -M versatilepb
Ubuntu 16.04의 QEMU 2.5.0에있는 것을 사용합니다 .
단점은 수정 된 커널을 다운로드하고 ( Qemu로 에뮬레이션 : 왜 추가 커널? ) 이미지를 수정해야하므로 실제 시스템을 덜 대표한다는 것입니다.
우리 4.4.12
는 그것이 Raspbian 이미지에서 커널 버전이기 때문에 선택 합니다.
커널 Blob을 생성하는 프로세스는 https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools 의 저장소에 설명되어 있습니다.
이 추가 커널 이미지가 필요한 이유 : Qemu로 에뮬레이션 : 왜 추가 커널입니까?
https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulating-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cada5c 에서 언급 한대로 Raspbian 이미지를 수정 하십시오.
요약:
에 대한 것처럼 이미지를 마운트 -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
운영:
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
[실패] 우분투 17.04, QEMU 2.8.0 -M raspi2, Raspbian 2016-05-27, 바닐라 커널
이 최신 Ubuntu에서는 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, Raspbian 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
QEMU의 RPI3 베어 메탈
https://github.com/bztsrc/raspi3-tutorial는 단지 QEMU 작업 예제의 좋은 세트, ultraquick은에서 시작됩니다 : 베어 메탈 라즈베리 파이 이미지 QEMU 에뮬레이션을 수행하는 방법
Raspberry Pi는 대부분의 PC와 다른 프로세서 아키텍처를 가지고 있기 때문에 제안하는 것을 수행 할 수 없습니다. 대부분의 PC는 x86 기반이지만 RPi는 ARM 기반 컴퓨터입니다.
RPi에서 Microsoft Windows와 같이 실행할 수없는 이유와 같은 이유 입니다.
VmWare는 x86 기반 운영 체제 (32 비트 및 64 비트) 만 가상화 할 수 있으므로 작동하지 않습니다. QEMU와 같이 ARM을 가상화 할 수있는 다른 에뮬레이터가 있지만 기본 CPU 가상화 지원없이 전체 소프트웨어 에뮬레이션을 실행하므로 속도가 느릴 것으로 예상 할 수 있습니다.
iotify.io에서 센서, 명령 행 및 파일 편집기에 포함 된 Raspberry Pi 시뮬레이터를 쉽게 시험해볼 수 있습니다. https://docs.iotify.io/ 에서 문서를 확인 하여 다양한 프로젝트, OS를 시작하고 Raspberry Pi 작업 환경에 익숙해 지십시오.