카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2019/01/03

ubuntu 18.04 odroid qemu 테스트 개발 환경 구축

패키지 업데이트 및 필요한 패키지 설치
apt-get update
sudo apt-get install libpixman-1-dev zlib1g-dev libglib2.0-dev shtool build-essential

테스트할 파일 다운로드
작업 디렉토리 생성
mkdir odroidu2
cd odroidu2/

다운로드 및 압축해제.
wget http://odroid.us/odroid/users/osterluk/qemu-example/qemu-example.tgz
tar -xvf qemu-example.tgz

압출파일 설명
launch : 호스트 환경 네트워크 인터페이스 공유해 전체 네트워킹 지원을 스크립트
launch-no-bridge : 가상 LAN 루트파일 시스템 동작.
launch-ubuntu : ext4 SD 카드 이미지 추출
rootfs-buildroot.ext2 : rootfs.tar.gz에서 변환된 ext2 루트 파일 시스템 파티션
rootfs.tar.gz : 루트파일 시스템
vexpress_defconfig : 튜토리얼 사용되는 커널 zImage
vexpress_odroid_qemu_defconfig : 튜토리얼에서 사용 zImage
zImage : linux-3.2 커널 소스에서 vexpress-a9 머신 용으로 빌드 된 커널.

qemu 설치.
sudo apt install qemu-system-arm

qemu 버전 확인.
qemu-system-arm --version
QEMU emulator version 2.12.0 (Debian 1:2.12+dfsg-3ubuntu4+ppa1)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers

cortex-9 지원 여부 확인
qemu-system-arm -cpu ? | grep cortex-a9

cpu 유형 확인.
qemu-system-arm -M ? | grep vexpress-a9

최신 버전 설치
sudo apt-get install qemu

현재 우분투 18.04 재공하는 패키지에서는 cotex-a9 지원 없음.
qemu 컴파일
sudo apt-get install libpixman-1-dev zlib1g-dev libglib2.0-dev shtool build-essential

소스 다운로드
cd $HOME
mkdir qemu-build
cd qemu-build

wget http://wiki.qemu-project.org/download/qemu-3.0.0.tar.bz2
tar -xvf qemu-3.0.0.tar

cd $HOME/qemu-build/qemu-3.0.0
./configure --prefix=/usr/local --static --disable-kvm --target-list=arm-linux-user
make
sudo make install

설치 경로 확인
which qemu-arm

정적 파일이름 변경
sudo mv /usr/local/bin/qemu-arm /usr/local/bin/qemu-arm-static

동적 컴파일
cd $HOME/qemu-build/qemu-3.0.0
./configure --enable-system --prefix=/usr/local --disable-kvm --target-list=arm-linux-user
make
sudo make install

버전 확인
qemu-system-arm --version
QEMU emulator version 2.12.0 (Debian 1:2.12+dfsg-3ubuntu4+ppa1)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers

cpu 지원 확인
qemu-system-arm -M ? | grep vexpress
vexpress-a15         ARM Versatile Express for Cortex-A15
vexpress-a9          ARM Versatile Express for Cortex-A9

busybox 루트 파일 시스템 생성
cd $HOME/odroidu2
qemu-img create rootfs-buildroot.ext2 200M

ext2 파일 시스템 생성
sudo mkfs.ext2 rootfs-buildroot.ext2

mke2fs 1.44.1 (24-Mar-2018)
Discarding device blocks: done                           
Creating filesystem with 204800 1k blocks and 51200 inodes
Filesystem UUID: 36a430ea-6396-4ac8-be2e-33cea4ecf301
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729

Allocating group tables: done                           
Writing inode tables: done                           
Writing superblocks and filesystem accounting information: done

루트 파일 시스템 마운트
mkdir mnt
sudo mount -o loop rootfs-buildroot.ext2 mnt

루트 파일 시스템 압축해제
cd mnt
sudo tar -xvzf ../rootfs.tar.gz
ls
bin  dev  etc  home  lib  linuxrc  lost+found  media  mnt  opt  proc  root  run  sbin  sys  tmp  usr  var

마운트 해제
cd ../
sudo umount ./mnt

네트워 브리지 설정
cat launch-no-bridge

#! /bin/sh
# filename: launch-no-bridge
# Set environment variables to make it easier to change
export ROOTFS=rootfs-buildroot.ext2
export NETWORK="-net nic -net user"
export KERNEL="-kernel zImage "

qemu-system-arm -append "root=/dev/mmcblk0 rw physmap.enabled=0 console=ttyAMA0" -M vexpress-a9 $KERNEL -sd $ROOTFS  $NETWORK -nographic

부팅 로그인: root
./launch-no-bridge
Welcome to Buildroot
odroidu2-1 login: root
#

댓글 없음:

댓글 쓰기