이지랑드로랑 - 11장. EZ-S3C6410 이더넷 포트로 안드로이드 웹킷을 느껴보자!
야호! 강좌다~
글이 너무 간만에 올라왔죠? 강좌를 목이 빠져라 기다리신 분들에게는 정말 죄송하다는 말씀을 드리고 싶습니다.
먹고살기 위해 잠깐 바빴습니다. 사실, 가장 많이 하는 거짓말이 '나 오늘 바뻐' 라는데, 정말 바빴어요. 믿어주세요. ㅜ_ㅜ
아무튼 오늘 잠시 일을 뒤로 미루고 강좌를 계속 하기 위해 또닥또닥 키보드를 두드릅니다.
오늘은 향후 강좌를 위해 요즘 M사와 S사의 합작, 모토XX를 통해 국내 IT 기사에 많이 등장하는 Android 2.1 Eclair 를 빌드 중에 있습니다만... 이것이 잘 되서 이지보드에서 돌아줘야 강좌에 포함이 될껀데요. ^^
아무튼, 넥서스 폰때문에 유명해진 Android 2.1 (당최 왜 한국에선 몇몇 대기업들이 후발주자면서 마치 최초인양 떠드는지;) 포팅 또한 강좌에 올라갈 수 있도록 응원해 주세요.
What about WebKit for Android
결론부터 말하자면 Webkit 엔진은 공개되어 있어서 많은 브라우저들이 사용하고 있죠.
안드로이드를 비롯해 아이폰도 얼추 영향권 안에 있습니다. IE가 기본인 Windows Mobile은 아니겠지만요.
요즘 스마트폰 하면 바로 웹 브라우징 능력인데요..
[그림11-1. HTC의 Nexus One의 웹 브라우징 모습]
아이폰은 솔직이 제가 사용해서 편을 드는 것이 아니라, 워낙 브라우징 속도가 빠릅니다.
여기에 견줄 수 있는 것이 바로 안드로이드 웹 브라우저가 되겠습니다.
오늘 이 강좌 이후 브라우징을 해보시면 알겠지만 정말 빠르고 이쁘게 브라우징이 되는 모습을 보면 '헉!' 합니다.
[동영상11-1. Droid vs iPhone 3GS vs Nexus One]
Step1. 커널 옵션 확인해 보기
사실, EZ-S3C6410을 구매하신 분들은 이걸 신경 안쓰셔도 됩니다.
이미 다 잘 되어 있으니까요.
히자만 그렇지 않은 분들은 이 옵션을 확인해 주시고, 드라이버가 없다면 포팅해 넣어주셔야 하겠죠?
Device Drivers - Network device support 옵션에서 알맞는 디바이스를 선택하거나 추가합니다.
[그림11-2. 이더넷 드라이버 추가]
항상 그렇지만 컴파일이 잘 되고 Kernel Panic 이란 메시지가 안나오면 행복한 겁니다.
오류나면 조금 불행한 거에요.
그래도 EZ-S3C6410을 사용하시는 분들은 조금 더 행복한거에요.
이런건 에프에이리눅스에서 해주니까요.
Step2. 이더넷을 활성화 시키자!
우리는 이전 시간에 멋지게 Busybox 도 심었겠다, 왠만한건 다 할 수 있다 이거죠.
이더넷도 일반적인 리눅스에서 하듯 하면 왠만한건 다~ 된다는 사실. ^^
자, 아래 명령어를 넣어볼까요?
# ifconfig eth0 up
[그림11-3. 이더넷 드라이버 추가]
명령어를 입력하고 나니 ieth0 Link mode : 100 Mb/s Full Duplex. 라는 메시지가 덜컥 나타납니다.
와우! 그래요, 이더넷이 이렇게 살아나는 겁니다.
그럼 우리 쉘을 하나 만들어 봐요.
# vi network_init_eth0.sh
ifconfig eth0 192.168.10.89 netmask 255.255.255.0 up route add default gw 192.168.10.1 dev eth0 setprop net.dns1 168.126.63.1 setprop net.dns2 168.126.63.2 setprop net.dns3 61.107.31.1 setprop net.dns4 192.168.10.1
이더넷을 살리는 쉘이 만들어졌습니다.. ^^
자, 이제 잘 되는지 해볼까요?
이지보드에 올라간 안드로이드의 웹 브라우저를 열어서 한번 해보죠.
[그림11-4. EZ-S3C6410 에서 즐기는 웹 서핑]
와우! 잘 됩니다.
처음에 네트워크가 없다고 경고가 뜨는데 그건 뭐, 안드로이드 표준을 따르지 않아서 그런거구요, 실제 잘 되네요.
해보시면 알겠지만 속도도 나름 빨라요.
WM 을 기반으로 하는 스마트폰들과 비교도 안되게 빠릅니다.
안드로이드가 참~ 착해요. ^^
Step3. 보너스! 부팅과 동시에 이더넷을 살리자!
여기서 끝낼수도 있지만 왠지 아쉽군요.
기분좋게 부팅하면 자동으로 만들어 놓은 쉘을 실행시킬 수 있도록 해볼까요?
init.rc 에 루틴을 하나 추가하는 것 만으로도 훌륭한 효과를 볼수 있다니까요. ^^
# vi /init.rc
init.rc 하단에 아래와 같은 내용을 추가 합니다.
service ethernet_on /system/bin/sh /network_init_eth0.sh oneshot
init.rc 에 서비스를 추가하는 것, 간단하죠? (물론 기존 리눅스랑은 조금 틀려요)
간단합니다.
service 라는 선언을 하고 [서비스명] [실행파일] [인자] 가 되겠습니다.
그 아래 4칸 띄우고 들어간 oneshot 이라는 옵션은 좀 중요합니다.
단 한번만 실행할지, 혹 프로세서가 죽어버리면 계속 무한히 호출할 지를 결정하는데 oneshot 을 두도록 하죠.
우리가 만든건 언제 Die 할지 모르니까요. ^^a
그리고 보드를 껐다가 켜보세요.
ifconfig 명령을 치는 순간 자동으로 실행되는 쉘 덕분에 아이피가 잘 잡히는 것을 확인할 수 있습니다.
해피하죠?
오늘 간만에 강좌를 썼는데요, 기다리신 분들에겐 정말 죄송합니다.
매주 1개씩은 올리려고 하는데 그게 가끔 쉽지 않을 때가 있는 것 같아서 빼먹고 하는데... 최대한 놓치지 않도록 노력하겠습니다.
그럼 모두들 오늘은 이지보드와 함께 인터넷 브라우징~ 고고싱!
ifconfig해도 아무것도 나타나지가 않습니다.ㅠ_ㅠ
busybox도 다 설치해놨고.. EZ6410 보드를 사용하는데 왜그럴까요..;;
제가 무엇을 빠트린것일까요.ㅠㅠ
ifconfig eth0 192.168.10.89 netmask 255.255.255.0 up
route add default gw 192.168.10.1 dev eth0
setprop net.dns1 168.126.63.1
setprop net.dns2 168.126.63.2
setprop net.dns3 61.107.31.1
setprop net.dns4 192.168.10.1
이걸 수행하는 루팅이 빠져있기 때문에 eth0 가 올라가지 않아서 ifconfig 명령을 해도 아무것도 안보이는 것 입니다.
이더넷 잡는건 굳이 sh 안 만드셔도.
커널 아규먼트에 ip=타겟ip:서버ip:gatewayIP:subnetmask의 순으로 적어주면 부팅시 자동으로 잡힙니다. 분명 ezboot에 설정한 ip를 가져가게 할 수도 있을 건데, 소스는 안 봐서 모르겠군요..
ezboot upgrade 해주세요~~