CentOS 5.5에서 Android 커널 컴파일 하다 아래와 같은 오류가 생길 때가 있다.


host C: sqlite3 <= external/sqlite/dist/shell.c

external/sqlite/dist/shell.c: In function ‘callback’:

external/sqlite/dist/shell.c:540: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c:551: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c:561: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c:575: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c:580: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c: In function ‘do_meta_command’:

external/sqlite/dist/shell.c:1051: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c:1603: warning: comparison between signed and unsigned

host Executable: sqlite3 (out/host/linux-x86/obj/EXECUTABLES/sqlite3_intermediates/sqlite3)

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `PC'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetflag'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetent'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `UP'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tputs'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgoto'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetnum'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `BC'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetstr'

collect2: ld returned 1 exit status

make: *** [out/host/linux-x86/obj/EXECUTABLES/sqlite3_intermediates/sqlite3] 오류 1

[studioego@localhost cupcake]$

위와 같은 문제가 일어날 경우 아래와 같이 작업을 해준다.

[studioego@localhost cupcake]$ yum install -y readline*

[studioego@localhost cupcake]$ vi ./external/sqlite/dist/Android.mk


ifneq ($(strip $(have_readline)),)

-LOCAL_LDLIBS += -lreadline

 endif


위의 대용 대신 대신 아래와 같이 -lncurses 를 추가한다.

+LOCAL_LDLIBS += -lreadline -lncurses


ifneq ($(strip $(have_readline)),)

-LOCAL_LDLIBS += -lreadline -lncurses

 endif


 

Buy me a coffeeBuy me a coffee

Android Platform의 기본 개념에 대해서 매우 깔끔하게 정리한 문서


Android Platform의 4부분인 Kernel, HAL(Hardware Abstract Layer), Libraries, Application Framework를 구분하여 설명을 하였음


Android Internals Reference

http://code.google.com/intl/ko/android/

http://groups.google.com/group/android-internals

http://www.android-internals.org/

http://groups.google.com/groups/profile?enc_user=_EKOshMAAADzFnauhYxa0ga8JtF8CI5fWMj6vob75xS36mXc24h6ww

http://groups.google.com/groups/profile?enc_user=lYDbNxEAAAD8uJiqPP7Wd-bc9b1O3waCkdEasx1kiYTQavV7mdW13Q


Buy me a coffeeBuy me a coffee





아래는 옵티머스Q 루팅법에 적힌 글을 인용한것입니다.


현재 발견된 취약점으로 아마 모든 안드로이드 폰의 루팅이 가능할 것으로 보입니다 'ㅅ'

본 루팅과정은 드로이드X 루팅 과정인 http://alldroid.org/default.aspx?g=posts&t=493를 Optimus Q에 맞춰서 수정한겁니다. 

아무튼! 다음과 같이 차례대로 진행하시면 됩니다.

1. 옵큐를 usb로 컴과 연결하고 설정->응용프로그램->개발->usb디버깅에 체크한다.
2. 첨부파일을 받아서 c:\ 에 압축을 푼다.
3. 시작->실행에 들어가서 cmd 실행
4. cd c:\adb 치고 엔터
5. 이제 다음 내용을 차례대로 붙여넣기하고 엔터치면 됩니다. ㅇㅇ
 
    adb push su /sdcard/su
    adb push exploid /sqlite_stmt_journals/exploid
    adb shell
    cd /sqlite_stmt_journals
    chmod 755 exploid
    ./exploid
    rootshell
    secretlol
    cat /sdcard/su > /system/bin/su
    chmod 4755 /system/bin/su
    rm /system/bin/rootshell
    exit
    exit

6. 루팅완료!

PS. su 바이너리가 달라서인지 superuser.apk가 작동을 안하네요. 그래서 과감히 빼버렸어요. 아무튼 그래서 갤s나 다른 루팅된 기기와 달리 슈퍼유저 권한을 요청할때 allow창 같은게 안뜹니다. (보안상으로 매우 취약하군요ㄷㄷ)

PS2. busybox도 말을 안들어서 빼버렸습니다. 마켓에 검색해서 직접 깔아주세요.


LG에서 나온 옵티무스Q말고도 모토로이, 드로이드x 루팅하는 법과 국내판 갤럭시S [M110S] 루트권한 얻기시리우스 루팅방법...등의 방법이 나와 있습니다.

나온 방법들을 보면 Android OS의 취약점들을 이용하여 Root권한을 획득하는 것입니다.

보통 HTC의 단말기나 NexusOne같은 경우는 부트로더를 건드려 Root권한을 획득하기 때문에 HTC의 단말기같이 일부로 부트로더를 쉽게 루팅할수 있는 기계가 아닌 이상 모토로라사의 안드로이드폰이나 국내 안드로이드폰도 Root권한을 얻기 어려웠습니다.

이번 루팅은 Android OS의 취약점을 사용하여 부트로더를 안 건드리는 방법으로 폰들의 Root권한을 획득하는 식이다 보니, 약간의 Android OS의 보안문제가 있을 수 있겠군요.

위의 사례에서 보인 것 같이 오픈소스(Opensource)로 공개된 안드로이드(Android) OS는 Linux Kernel위에 Dalvik VM(SUN사의 Java VM을 따라하여 Java실행할수 있게 만든 Virtual Machine)이 올라간 형태입니다.

위의 오픈소스 같은 경우 소스가 공개된 상태이기 때문에 소스에 취약점이 있으면 공통적으로 바로 발견이 가능합니다.


오픈소스로 공개된 리눅스의 장점이랄까요? 단점이랄까요? 단점인 취약점이 금방 공개가 되는 듯 합니다.(그 단점으로 인해 빠른 패치가 가능하다는 장점도 있습니다.) 

안드로이드 오픈소스의 취약점이 바로 발견되기 때문에 위의 취약점으로 해킹을 하여 안드로이드폰 자체가 망가질 수 있는 문제점이 보이기 시작할듯 합니다. 

안드로이드폰의 보안 이슈에는 Root권한을 획득한 폰에서 앱을 통하여 해킹당할때의 문제가 있었지만, 이제는 Root권한을 획득하지 않은 일반 폰에서 앱에서 root권한을 취득할수 있게 만든 코드에서 해킹에 속수무책인 사항까지 나아간것 같습니다.

아마 위의 사례처럼 Android 2.2에서도 취약점발견되어 root권한 획득하는 방법이 있을듯 합니다. (Google측에서 취약점을 몰랐을 경우)

위의 취약점 사례는 아마도 Android Gingerbread 버전에서 사라질 가능성이 있습니다.

Buy me a coffeeBuy me a coffee

2010년 6월 24일 오전 0시 21분경 모님과 IRC채널에서 대화하다


<blueguy^> OddEgo / htc 갔더니..
<blueguy^> OddEgo / desire 커널 소스 공개 되어 있더군요.
<OddEgo> 우와
<OddEgo> 커널 소스 공개되어서 xda 분들이 롬을 올리군요... ㅎㄸ
<blueguy^> OddEgo / 이미지 새로 올리는데 만족하지 말고..
<blueguy^> 직접 한번 빌드해서 올려 보는 것이..
<blueguy^> 흐흐.
<OddEgo> virtualbox에 올리면 능력자가 되는건가요?!
<OddEgo> 이미지 새로 올리는데 만족하지 말고.. // 어떻게 정곡을 잘 찌르십니까? ㅎㅎ
<blueguy^> OddEgo / 버박에 올리면 능력자가. 될 듯.
<blueguy^> 흐흐.
<blueguy^> qemu에는 그냥 올릴 수 있어요.


htc에서 공개된 안드로이드 소스코드를 x86용으로 포팅해서 올리면 엄청난 굇수가 되어 있겠지?

Buy me a coffeeBuy me a coffee
예전, 2006년 5월경. 2006년 1월초부터 모 조직의 Linux서버를 갑자기 맡고나서 안정적으로 운영을 한답시고 공부를 하다가, 갑자기 서버에 이상이 생길듯한 징후들이 보였습니다.

어떤 징후였나면파일이 갑작스럽게 접근이 안되는 것도 있었고, 시스템이 갑자기 느려지고 등의 문제가 있었습니다.
그 당시에는 혼자만 쓰던 Linux가 아니라 여러 사람들이 쓰는 Linux서버를 처음 맡게 되어서 어떻게 해결할지도 걱정되었지요. 그때에 하드디스크 부족해서 N모사 다니시는 90학번 선배님이신 클랴님 친구분께 하드디스크를 얻어서 공간 확보하느라 정신 없을 시기였습니다.

그러다 2006년 8월달. 모 조직의 Linux서버가 있는 학교 컴퓨터실에 공사를 한다고 정전이 되어버렸습니다.

정전이 난 후에 다시 컴퓨터를 켜보니 뭥미? 컴퓨터 부팅이 안되는 것이였습니다. 
아래와 같은 메시지가 뜨고나서 좌절을 했지요.

*** An error occurred during the file system check.
*** Dropping your to a shell : the system whill reboot
*** when you leave the shell.
Give root passwd for maintenance
(or type Control-D for normal startup) :
이걸 알아보니, 갑작스런 정전 또는 비정상적인 시스템 종료등으로 인해 마운트되어 있던 파일 시스템이 정상적으로 언마운트 되지 않아 파일 시스템에 이상이 생기게 되면 부팅시 자동으로 파일 시스템을 복구하는 유틸리티에 의해서 복구가 되는데 파일시스템 손상정도가 심해서 자동으로 복구가 되지 않아서 이런 메시지가 나오는 것임.
파일 접근이 안되고, 파일이 안읽혀지는 등의 문제였죠.

그래서 부랴부랴 하드디스크 복구 시도를 했다만...
exec of init(/sbin/init) failed!!! : No such file or directory
Kernel panic - not syncing : Attemped to kill init!
이것때문에 하드디스크 새로 구해서 다시 설치하는 삽질을 했습니다.

이후로도 하드디스크문제때문에 2006년 내내 골치를 썩혔죠.
모 조직 Linux서버의 문제점은 하드디스크의 내구연한을 충분히 넘겼는데도 그대로 사용하여, 후임인 저에게 골탕먹이는 짓을 했다죠. 하드디스크가 3개 있었는데 다들 4년을 넘게 쓰던 것이라서 자료의 안전성이 걱정이 되었죠.

2007년도에 제 돈 쓰고 자료들을 옮겨서 자료 손실은 없는 것이 다행.

2006~2007년도에 Linux에서 하드디스크 문제로 나오는 Error들을 너무나 많이 보아서 눈 감고도 문제를 풀 정도가 되었습니다.

2007년 10월달이였나? 이때에는 Linux서버가 해킹되는 문제가 생겼습니다.
KT에서 전화가 와서 
그래서 여기서는 문제를 발견 못했다 irc데몬이 돌아간다는 것에 경악하여 서버 다시 설치 -_-;; 여기서는 서버 에러를 못알아먹을 수 있구나와 해킹이 쉽게 되는 것을 알게 되었죠.

2008년 7월 방학때.
연구실에 들어가서 2008년 2월부터 Linux서버 두대를 운영하게 되었습니다. 하나는 연구실 연구용 서버, 또 다른 하나는 교수님이 연구및강의용으로 사용하는 서버였죠. 둘다 Fedora Core 7 (x86_64)를 쓰게 되었습니다.
어느날 Linux(Fedora Core 8 x86_64)에 Sakai Project를 돌리면서 yum으로 update를 하였습니다. 
(※ 참고로 Fedora Core 7에서 8로는 5월달에 업그레이드 하였습니다.

제가 쓰고 있는 연구용 컴퓨터의 램이 1Gb라서  Sakai Project와 동시에 yum으로 update를 하다가 메모리를 다 쓰고 스왑까지 다써서 접속 자체도 안되고등의 메모리 부족 에러가 생겼다.
Sakai Project는 메인 메모리를 1G가까이 사용되는 대규모 Project이라서 tomcat를 쓰는데에 메모리 할당을 엄청 많이 해버렸지.
yum으로 업그레이드 하는데에도 실행을 해야하니 메모리를 많이 사용해야하니 컴퓨터에 메모리 부족에러 뜨면서 제대로 작동이 되지 않는 문제가 생겼 ㅠㅠ
Cannot allocate memory
Out of Memory: Kill process 
위 문제때문에 Fedora Core를 버리고 CentOS로 전향하게 되었고, 교수님과 쇼부를 쳐서 램 1G더 마련해서 위의 문제가 없게 만들었습니다.

그리고 그래픽카드 문제도 생겨서 용산서 수리까지 하였음. -_-;; 그래픽 카드는 Kernel Error는 안나왔지만 모니터 출력이 안되어서 -_-;;

(위의 문제때문에 한달내내 연구를 진행하지 못하고 서버문제만 매달리다 짤릴듯 하였다 ㄷㄷㄷ)

Linux에서 하드디스크 에러만 줄창 보다 프로세스 너무 많이 굴리면 메모리 부족하여 실행못하는 에러까지 다 봤으니 서버를 빡세게 굴리는 것은 확실한 것이다 ㅎㅎ

그리고 2008년 10월 10일
지도교수님 서버에 접속이 갑자기 안되자, 뭔가 원인이 뭔지 모르다가 아래의 메시지가 나와 당황 ;ㅁ;
Give root passwd for maintenance
(or type Control-D for normal startup) :
다른 문제는 없었고 갑자기 잘 돌아가다 멈춰버리는 것이였다.

하드디스크쪽에는 전혀 문제가 없었고(산지 얼마되지 않는 컴퓨터에 fsck로 검사해보아도 아무런 문제 없었음) 잘 돌아가다 갑자기 멈추는 에러가 생겨서 재부팅을 시도를 해보았더니......
계속 이런 메시지가 뜬다.
Kernel panic not syncing: Aiee, killing interrupt handler!
아님
RIP blah~ blah~
REP blah~ blah~
Kernel panic - not syncing: Attempted to kill init!
그러다 갑자기 부팅이 안된다. 부팅이 안되고 삐익 소리만 계속 난다. 이건 메인보드쪽 문제임을 알게 되었음.
부팅이 되었다 그러나 아래의 메세지가 나온다. ㅠㅠ
Call Trace
_atomic_dec_and_lock+0x39/0x58
dput +0x37/0xfb
path_release+0xc/0x27
vfs_stat_fd+0x3c/0x4a
autoremove_wafe_function+0x0/0x2e
kmsg_read+0x3a/0x44
sys_newstat+0x19/0x31
tracesys+0xd5/0xda
메인보드같은 하드웨어쪽의 문제를 알고 나서 용산가야겠다는 생각이 들면서..... 이건 내 책임이 아니라 컴퓨터가 부끄럼을 타서를 주장해야겠다.
(메인보드같은 하드웨어 문제이니 만큼 수리비는 교수님이 주시겠지?)

2006년도부터 조직 서버를 관리 했었고 2008년도에 연구실에 들어가면서 Linux서버에서 나오는 에러는 다 보는 것 같은 생각을 해보았다.
(위의 내용 말고도 더 많은 에러 메세지를 보았지요. 그러나 Kernel에서 에러나는 것은 아니니 기록은 제외)

ps. 이 글은 지도교수님 서버가 메인보드 에러가 나와 부팅 안되는 것을 한탄을 하며 쓴 글입니다.
Buy me a coffeeBuy me a coffee
이번에 리눅스커널책을 사서 공부하다가 리눅스 커널 만지는 재미에 푹 빠졌다.
생각보다 재미있군. 근데 재부팅하는게 귀찮어 -_-;;
reboot 치거나 shutdown -hr 치거나 init 6 치거나 재부팅하는 명령어는 거기서 거기라 내키는대로 -_-;;
 
리눅스 커널책들을 보니까 내가 1학기때 배웠던 시스템프로그래밍을 대충 공부한 느낌이 든다 이거원 -_-;;
3학년 1학기때 열심히 공부한것같은데 왜이리 대충공부한 느낌이 나지?

이것저것 만지작하다 보면 벌써 밤이다. 너무 재미들린 것 같다.
나 1~2년전 방학때에는 노느라 알바하라 정신이 없었는데 이제는 공부에 재미걸렸으니 나도 신기할 정도.

(성적표 나왔는데 전공은 생각보다는 좋지도 않고 나쁘지도 않는 성적나와서 짜증나고, 교양 학점은 전공보다 더 안나와서 캐안습 ㅠㅠ)

'일상다반사' 카테고리의 다른 글

여름방학때 어떻게 지냈었지?  (1) 2007.07.27
내 얼굴의 심슨화??  (1) 2007.07.25
살 것 목록  (3) 2007.07.21
클랴님을 뵈었습니다.  (4) 2007.07.19
대단하신 교수님  (5) 2007.07.19
Buy me a coffeeBuy me a coffee

Ubuntu에서 Linux Kernel분석할려고 VMware를 이용해서 Ubuntu를 다시 깔았다.(복귀)

그래서 Ubuntu에서 Linux Kernel분석할려니까 깔것이 많은 것 같다.-_-;;

Ubuntu에서 기본적으로 컴파일러같은 도구들을 준비하지 않는다.
아주 중요한 도구부터가 준비되지 않았다는 것이다. Kernel분석에서 가장 중요한 컴파일러가 없다니!!
C컴파일러 뿐만 아니라 C++도 각자 깔아야 하는 등등의 사용자가 수동으로 깔아주어야 한다. (이게 약간 단점이랄까?-_-;;)

# apt-get install build-essential

Kernel분석을 위해서 설치해야하는 프로그램들이다.

# apt-get install libncurses5-dev
# apt-get install manpages-dev
# apt-get install ctags cscope


Kernel 2.4대를 분석하기 위해서 꼭 깔아야 하는 gcc 3.4버전

# apt-get install gcc-3.4


만약에 Kernel 2.6.X 대에서 포기한 gcc-2.95버전을 쓰고 싶다면

# apt-get install gcc-2.95
다음에 쓸때 까먹지 말려고 기록 -_-;;

'컴퓨터 > Linux' 카테고리의 다른 글

GNOME 지우기  (3) 2007.07.17
Debian 설치 삽질을 했다.  (2) 2007.07.16
vi 환경설정 하기  (0) 2007.03.12
SPmachine 엄청 무겁군요.  (3) 2007.03.08
Cygwin 설치 중  (4) 2007.01.29
Buy me a coffeeBuy me a coffee

+ Recent posts