-
Notifications
You must be signed in to change notification settings - Fork 1
deprecated
Gyumin Sim edited this page Dec 4, 2015
·
2 revisions
우리 target이 WDR4300이고 얘의 ISA는 MIPS MIPS 74Kc인데, qemu 버전 2.2 이상이 필요하다고 한다. Ubuntu 14.04 LTS에는 2.0이 사용되고 있다.
아래는 직접 컴파일해서 사용하는 경우
기존에 설치된 qemu가 있다면 먼저 지우고 시도하거나 ./configure
에 --prefix
옵션을 넣어서 다른 곳에 설치하게 하기
wget 'http://wiki.qemu-project.org/download/qemu-2.4.1.tar.bz2'
tar -xvf qemu-2.4.1.tar.bz2
cd qemu-2.4.1/
sudo apt-get install libssh-dev libnfs-dev libbz2-dev libnuma-dev libusbredirhost-dev libusbredirparser-dev libvncserver-dev libcap-ng-dev libcap-dev libgnutls-dev libncurses5-dev
./configure --target-list=mips-softmmu,mipsel-softmmu
make
checkinstall
제대로 설치를 했으면
> qemu-system-mipsel --version
QEMU emulator version 2.4.1, Copyright (c) 2003-2008 Fabrice Bellard
를 볼 수 있어야 한다.
일단 https://wiki.openwrt.org/doc/howto/qemu 여기서 나머지 정보 확인 가능
실행하였을 때 qemu: could not load kernel ...
에러가 나면 endianness 문제일 가능성이 있으니 qemu-system-mipsel
대신 qemu-system-mips
로 시도
- 열심히 build한 다음, bin/ar71xx/OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2 을 사용할 수 있다.
- 여기에 있는 환경으로 build하면 우리 장비에 올릴 수 있는 바이너리가 만들어진다.
- 적당히 아무데나 압축을 푼다.
-
https://wiki.openwrt.org/doc/devel/crosscompile 를 참고하여 진행. 요약하면 shell의 environment variable 설정인데, PATH 설정, STAGING_DIR 설정을 해주면 된다. toolchain directory의 이름은
toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2
가 나오면 정상이다.
- 원인: openwrt가 수정한 MTD device driver에서 export되지 않은 symbol인 ROOT_DEV를 설정하려고 해서 그러함.
- 해결책: Device Drivers -> Memory Techonology Device (MTD) support -> OpenWrt specific MTD options에서 rootfs 관련 option을 모두 체크 해제한다.
./build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/compat-wireless-2014-05-22/drivers/net/wireless/ath/ath9k/ath9k.ko
./build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/compat-wireless-2014-05-22/ipkg-ar71xx/kmod-ath9k/lib/modules/3.10.49/ath9k.ko
./staging_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx/lib/modules/3.10.49/ath9k.ko
by 심규민, 김찬민, 고성빈