Post

(QEMU) armv7 Emulate

이 밖에 에뮬레이터로는 모모 앱 플레이어, 녹스, 블루스택이 있음

Quick EMUlator

1. qemu 설치
1
2
sudo apt-get install qemu-user-static qemu-system-arm

2. 이미지 / 부트로더 / 커널

커널이 필요하고, 커널을 넣을 이미지 파일이 필요하고, arm system의 경우 바이오스가 없기 때문에 부트로더 역할을 하는 initrd라는 것이 필요하다. 여기서 설치하는 커널은 armel이 아니라 armhf이다. 이것은 ARMv7명령어와 하드웨어 부동소수점 계산을 에뮬레이트 한다.

1
2
3
4
qemu-img create -f raw hda.img 3G
wget http://ftp.debian.org/debian/dists/wheezy/main/installer-armhf/current/images/vexpress/netboot/initrd.gz
wget http://ftp.debian.org/debian/dists/wheezy/main/installer-armhf/current/images/vexpress/netboot/vmlinuz-3.2.0-4-vexpress

3. 설치
1
2
qemu-system-arm -nographic -M vexpress-a9 -kernel vmlinuz-3.2.0-4-vexpress -initrd initrd.gz -append "root=/dev/mmcblk0 console=ttyAMA0,115200" -drive if=sd,cache=unsafe,file=hda.img

4. 마운트 / 언마운트

설치가 끝난 후 다시 qemu를 재실행하면 다시 설치화면으로 오기 때문에 커널과 부트로더가 설치된had.img를 마운트시켜 initrd.img파일을 뽑아와야 한다.

1
2
3
4
5
mkdir mountdir
mount -o loop,offset=$((512\*2048)) hda.img mountdir/
cp mountdir/initrd.img-3.2.0-4-vexpress .
umount mountdir/

5. 실행
1
2
qemu-system-arm -M vexpress-a9 -kernel vmlinuz-3.2.0-4-vexpress -initrd initrd.img-3.2.0-4-vexpress -append "root=/dev/mmcblk0p2" -drive if=sd,cache=unsafe,file=hda.img

6. 네트워크 세팅

DNS서버라던지 DHCP 같은 것들을 수작업으로 설정해야 하므로 복잡하다. 그래서 port redirection으로 ssh연결을 하는 방법을 설명하겠다. 일단 실행명령어에 -redir tcp:6666::22라는 명령어를 추가하여 실행시킨다. 그리고 초기 설치시 ssh서버 설치를 선택했어야 한다. 그 후 arm 가상환경에서 ssh-keygen -t rsa 명령어를 입력하고 게스트에서 ssh id@localhost –p 6666으로 접속하면 된다.! * 주의할 점은 저렇게 순서대로 하면 파일시스템이 읽기 권한만 있어서 ssh-keygen 생성이 불가능하다. 따라서 처음에 mount -o remount,rw / 이렇게 쓰기권한을 주고 리마운트 시킨다.

This post is licensed under CC BY 4.0 by the author.