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
#
댓글 없음:
댓글 쓰기