Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

참교육

QEMU를 이용한 공유기 펌웨어 환경 구축 본문

설정

QEMU를 이용한 공유기 펌웨어 환경 구축

순수어린이 2017. 5. 17. 20:25

이걸 몇년전 까지 삽질만 하다 못한걸 이제 와서 친구랑 다시 하니까 금방 됐다.... 열받아


시작하기 전에 

apt-get update

는 필수입니다.


또 FMK를 다운받아 놔야 하는데 

FMK에 대한 에러가 하나 있어서 우선 메모로..

http://lispro06.woweb.net/app/63561



1. QEMU 다운

ARM이나 MIPS 기반의 공유기 펌웨어를 실행시키기 위해서 필요한 가상 머신이다. 

https://people.debian.org/~aurel32/qemu/ 
위 사이트에서 다운이 가능하며 armel 버전을 설치하였으며

debian_squeeze_armel_standard.qcow2 

버전을 다운받아 실행하였다. 

음.. 사실 squeeze랑 wheeze랑 두가지 버전이 있는데 뭐가 더 나중에 나왔네 뭐네 하는데 큰 차이가 없어보여서 그냥 아무거나 받았다.
묻지말고 따지지말고 wheezy받아야 한다. ㅡㅡ

squeeze받으니까 인터넷이 안됨 apt-get 으로 설치가 아무것도 안되네 어휴 이것 때매 핵고생함


다운받아야 할 파일은 아래와 같이 총 3개.


wget debian_squeeze_armel_standard.qcow2 

wget initrd initrd.img-2.6.32-5-versatile 

wget vmlinuz-2.6.32-5-versatile 


wget https://people.debian.org/~aurel32/qemu/armel/vmlinuz-3.2.0-4-versatile

wget https://people.debian.org/~aurel32/qemu/armel/initrd.img-3.2.0-4-versatile

wget https://people.debian.org/~aurel32/qemu/armel/debian_wheezy_armel_standard.qcow2


실행 명령어는 아래에 나와있으니 그에 따른 실행파일을 받으면 된다.


2. QEMU 실행

우분투 16.04에서 진행하였고 그냥 파일넣고 명령어 실행 끝! 이런느낌이라 간단하다.

qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda debian_squeeze_armel_standard.qcow2 -append "root=/dev/sda1" -redir tcp:3080::80 -redir tcp:3022::22


qemu-system-arm -M versatilepb -kernel vmlinuz-3.2.0-4-versatile -initrd initrd.img-3.2.0-4-versatile -hda debian_wheezy_armel_standard.qcow2 -append "root=/dev/sda1" -redir tcp:3080::80 -redir tcp:3022::22


위 명령어는 위에 나온 사이트에도 나와있고 마지막에 "-redir tcp:3080::80" 부분만 추가하면 된다. 이건 포트포워딩인데 3022를 22번으로 3080을 80으로 포워딩 해주는 옵션이다.



위 그림처럼 잘 실행되는 것을 볼 수 있다. 근데 가상머신에 가상머신이라 조금 느리다. 

계정은 root/root 가 있고 user/user가 있는데 루트로 작업을 하면 된다.


****

아니 근데 짜증나는게 나랑 같이한 친구는 인터넷이 잘되는데 난 안돼서 vim도 다운을 못받는다 ㅡㅡ 아니 이게 무슨일이야 

해결! wheezy를 받으세요.


3. CHROOT

이제 루트를 바꿔주는 chroot를 해주면 된다. 여기서 그냥 chroot를 실행하면 /etc/나 /var가 없다는 말이 나온다.

ls -al 명령을 확인 해 보니 /var가 /tmp/var로 링크되어 있고 /tmp에 들어가면 아무것도 없다.


또한 /default 디렉토리를 들어가 보면 var, etc등 여러 필수 디렉토리들이 있다. 


해결 : dafault 파일들을 /tmp로 옮겨준다.

 mv ./default/* ./tmp/ 



다음으로 펌웨어를 다운(sftp로 파일 전송함)받은 뒤에 그 파일을 실행하기 위해서는 링크파일 경로를 맞춰줘야 하는데 링크파일은 절대경로로 되어 있어서 chroot를 이용해서 루트를 해당 디렉토리로 바꿔줘야 된다. 

사용법은 펌웨어의 rootfs로 들어간 뒤에 아래 명령어로 실행.

chroot ./ ./bin/sh 



완료!


4. 펌웨어 실행

공유기 펌웨어를 실행하면 되는데 실행 경로는 아래와 같다!

/sbin/httpd 


***에러 잡기

처음에 그냥 실행하면 아래와 같은 에러가 발생한다.


해결 : dev 디렉토리에 null이라는 파일이 없다는 건데 이 문제의 해결책은 그냥 에디터로 /dev/null을 연 뒤 저장하고 나오면 된다.

vi /dev/null (바로 종료)


뭐 난 여기서 에러가 더이상 안났지만 다른 에러가 더 난다면 에러 메시지를 보고 맞춰주면 된다.

5. 웹 페이지 접속

분명 얘가 아이피가 있는데 웹 페이지 접속을 아이피로 하면 안되고 localhost로 접속해야 한다. 난 80포트를 3080으로 redirect 해줬으니 localhost:3080으로 해줘야 된다.

404....휴우 이거때문에 몇시간 삽질했다.


해결

cd /

mkdir /home/httpd/192.168.0.1/sess-bin

cp -r cgibin/* /home/httpd/192.168.0.1/sess-bin/

cp -r cgibin/* /bin/login-cgi



완료!



6. 외부에서 웹 페이지 접속

공유기 웹 서버가 제대로 올라가고 웹 서버를 원격(아이피)로 접속하려고 했는데 400 bad request가 떴다..


조금만 검색해도 나오는 부분이긴 한데.. 다음 그림과 같이 보안설정 > 기타 보안 설정 > CSRF 를 중단응로 설정해주면 된다.


진짜 끝!



'설정' 카테고리의 다른 글

Docker 명령어  (0) 2017.07.04
가상머신(패러렐즈) 듀얼모니터  (3) 2017.04.02