1. Galaxy Nexus

 

Samsung Galaxy Nexus & Motorola RAZR
Samsung Galaxy Nexus & Motorola RAZR by gillyberlin 저작자 표시



 

Samsung Galaxy Nexus
Samsung Galaxy Nexus by gillyberlin 저작자 표시

Samsung(삼성전자)에서 만들었으며 Linux Kernel이 탑재된 Smartphone

2.Galaxy Tab

Galaxy Tab 7inch
 

GALAXY Tab (P1000)  (1)
GALAXY Tab (P1000) (1) by Cellulari World 저작자 표시비영리동일조건 변경허락

Galaxy Tab 10.1inch

Srsly? Rolling hills as default wallpaper background on Galaxy tab 10.1!? #windowsxp #BGGD43
Srsly? Rolling hills as default wallpaper background on Galaxy tab 10.1!? #windowsxp #BGGD43 by Stijn Vogels 저작자 표시비영리동일조건 변경허락



Samsung(삼성전자)에서 만들었으며 Linux Kernel이 탑재된 Tablet

3. Linux 기반 USB스틱

Linux OS가 탑재된 USB로,  컴퓨터에 USB메모리를 꼽고, 부팅하면 Linux OS가 뜹니다.

4. Barnes & Noble Nook


 

Nook
Nook by AMagill 저작자 표시


Linux Kernel이 탑재된 E-book reader

5. PogoPlug

 

Create your own personal cloud -- Pogoplug
Create your own personal cloud -- Pogoplug by bmevans80 저작자 표시비영리동일조건 변경허락


2011-01-11 Dead Pogoplug
2011-01-11 Dead Pogoplug by joe bustillos 저작자 표시비영리동일조건 변경허락


플러그 컴퓨터로 다용도로 사용 가능

6. Cadillac Cue

자동차 엔터테인먼트 시스템

7. Rasberry PI

초저가 교육용 컴퓨터(ARM기반), Linux Kernel이 탑재됨. 아직은 개발중입니다.

8. $99 Roku 2 XS


 

Roku 2 XS
Roku 2 XS by IntelFreePress 저작자 표시


스트리밍 플레이어

9. Amazon Kindle Fire

Amazon Kindle Fire
Amazon Kindle Fire by IntelFreePress 저작자 표시


Linux Kernel이 탑재된 E-book reader




tux
tux by BotheredByBees 저작자 표시


잠시 보안 문제로 문을 닫았던 kernel.org 사이트를 셧다운 하기 직전의 데이터 중 현재

 
mainline kernel,
stable kernel,
linux-next kernel
트리만 온라인 상태이고, 나머지 repository에 대해서는 해당 repo의 소유자가 새 인증권한을 받은 후 차차 오픈될 예정이라고 하네요.

이번 보안 문제로 인해 인증 방법이 변경되었다고 하며, 변경된 방식은 아래 메일링 포스트에 설명 되어있습니다.
https://lkml.org/lkml/2011/9/30/421

그리고 안드로이드 커널 사이트는 아직도.. ㅠㅠ






Beta 2에서의 새로운 기능

커뮤니티가 지원하는 ARM 구조의 이미지의 새로운 세트를 현재 그리고 출시된것에서 가능하게 된다.

Armel+ac100의 Toshiba ac100 넷북이 이제 다운로드가 가능해지고, armel+mx5로 타겟된 Freescale i.MX53퀵 스타트 개발 보드가 며칠뒤에 사용할수 있을것이다.

  • GNOME 은 현재 불안정버전(3.1.92)로 업데이트 되었으며 GNOME 3.2 로 갈 계획입니다.
  • OneConf는 컴퓨터간의 싱크로 설치된 어플리케이션과 유지할수 있도록 하기 위해 우분투 소프트웨어 센터(Ubuntu Software Center)와 통합하였다.
  • Ubuntu 11.10 Beta 2는 64비트 시스템에서 32비트 라이브러리와 어플리케이션 패키지 지원을 향상하였다.
  • Ubuntu Linux Beta 2는 Kernel version 3.0.2를 기반으로 하고 있다.

우분투 서버

Beta 2에선, 공급 및 배포, 호스팅, 관리 및 사업 데이터 센터 인프라 서비스를 최고의 자유 소프트웨어 서비스의 모음인, Orchestra를 도입하였다.

주주(juju)[이전의 코드네임은 Ensemble(앙상블)]은 이제 클라우드 및 bare metal(native) 둘다 위한 서비스 배포 및 를 조직화를 다루는 우분투 서버의 부분이 되었다.

주주(juju)는 많은 매력적인 가능성을 가지고 있으며 OpenStack 개발에 포함되었다.

젠 하이퍼바이저(Xen hypervisor)는 Ubuntu Server에서 다시 도입되었다.

우분투 11.10의 최종 릴리즈 날짜는 2011년 10월 13일 입니다. 


아래는 Ubuntu 11.10 Beta2 의 스크린샷 갤러리 링크입니다.

Ubuntu 11.10 (Oneiric Ocelot) Screenshots Gallery






심심해서, 집에서 놀고 있는 6년된 ThinkPad R52에 Linux Kernel 2.6.38.1을 Ubuntu에 올렸습니다. -_-v

(며칠전 4학년된 학부생 친구들이 리눅스 커널 어떻게 올리는지 모르겠다고 노골적으로 숙제 도와달라는 부탁을 보고 뿌리쳤습니다. 저는 커널 컴파일을 몇번씩 해서 블로그에 올린 경험이 있는지라 -_-;;)

(추가로 췌장염때문에 몸이 말을 안들어서 일찍 나갔습니다-_-;;)

Ubuntu에서 커널 컴파일이 안된다는 말때문에 뭐가 안되지 하면서 Ubuntu 10.10에서 커널 컴파일을 해보았습니다.

컴파일 하는 방법은 컴파일을 해보자 7(커널 컴파일1) 에 있는 그대로 진행하였습니다. 

  1. Kernel.org 에서 적당한 커널 소스를 받는다.
  2. cp /boot/config-`uname -r` .config
  3. make oldconfig
  4. make-kpkg clean
  5. make-kpkg --initrd --revision=386 kernel_image kernel_headers linux_source modules_image
  6. cd .. && dpkg -i linux-image-2.6.38.1_386_i386.deb (2.6.38.1은 커널 버전, 원하는 커널 버전을 올리면 됨)

컴파일 끝나고 나선 아래와 같이 Linux Kernel 2.6.38.1이 제대로 올라왔다고 나오군요. ㅎㅎ

뭐가 어렵다는거지?? (커널 올리는 것 참 쉽죠? =3=3==3)

Linux studioego-laptop 2.6.38.1 #1 SMP Sun Mar 27 02:07:50 KST 2011 i686 GNU/Linux

Ubuntu 10.10


Welcome to Ubuntu!

 * Documentation:  https://help.ubuntu.com/


Last login: Sun Mar 27 14:08:08 2011 from macbook-pro.local

studioego@studioego-laptop:~$ uname -a

Linux studioego-laptop 2.6.38.1 #1 SMP Sun Mar 27 02:07:50 KST 2011 i686 GNU/Linux

studioego@studioego-laptop:~$ 


ps. 참고로 Ubuntu Linux에서는 Linux Kernel 2.6.35를 사용합니다.

2011.2.3. 설날 맞이 기념으로 Gentoo Linux를 설치하고 있습니다. (글쓰고 있는 시점에서도 설치중)


이번에 노트북을 구입한 후, 컴퓨터 성능을 시험하고자 컴파일로 최적화시키고 퍼포먼스를 높혀서 사용할수 있는 Gentoo Linux를 virtualbox안에서 설치하였습니다.

Gentoo Linux의 경우는 다른 Linux배포판과 다르게 FreeBSD 기반의 port(BSD기반의 Mac OSX에서는 The MacPorts Project로 port를 사용할 수 있습니다.)와 비슷한 emerge로 일일히 컴파일 하여 OS를 만져볼수 있습니다.

기본적으로 Linux를 Fedora Core, CentOS, Ubuntu로 사용한 경험이 있다보니 설치하는데는 아무런 문제가 없었습니다.

아래의 Gentoo 설치 문서 

Gentoo Linux x86 Quick Install Guide

KLDP Wiki - Gentoo Install 설치 기록

를 자세히보면 문제없이 설치할수 있습니다.

네트워크 설정(Configure networking)

디스크 파티션, 파일시스템 생성, 마운트, (Create the partition, Create the file systems and Mount the file systems)

커널 설정 및 설치(Kernel Configuration and compile a kernel source and install the kernel)

시스템 툴 설치(Installing System Tools)

부트로더 설치(bootloader installation)

위의 과정은 정말 금방 끝냈다. 이후 X Window를 띄운다고 Gnome을 설치하다... 뭔가 큰일 난것 같다. -_-;;

문제가 설치 시간이 상당히 오래 걸린다는것 정도? 설치하는데 하루종일 컴파일해도 아직도 끝나지 않았다는것에 좌절하였음.

Kernel설치는 5시간만에 다한듯 한데, GNOME설치하는 것은 X11설치하는것도 있으니 아마도 1일정도 걸릴듯하다. (지금 cairo 컴파일중)

설치 시간이 머신의 성능에 따라 영향을 받는데, VirtualBox에서 설치를 했으니 실제 하드웨어에서 설치하는것 보다 당연히 느릴수 밖에 -_-


내일 정도 X Window가 띄어진 화면을 볼수 있을것 같다. Gentoo는 폐인들을 위한 배포판 같다.

ps. 2월 4일(금) 오전 8시 30분경.. 아직도 컴파일중 -_-

ㅔㄴ

  1. 호야지기 2011.02.04 19:01

    오덕등극을 축하드립니다



현재, 저는 Android가 탑재된 HTC Desire으로 사용하고 있습니다.


5월초 HTC Desire를 구입하고 나서 계속 기본으로 탑재된 Sense UI를 사용하다, Sense UI를 쓰는 것보다 Froyo의 버전인 2.2.1을 빨리 맛보고 싶고, Google NexusOne의 UI를 사용하고 싶어 DeFroST custum rom으로 바꾼지 이제 1달 반정도 지나갑니다.


Sense UI를 사용할때보단 NesuxOne의 UI를 쓰다보니 뭔가 약간 부족하긴 하지만, Froyo를 제대로 쓰면서 속도로 빠른 것을 원했기 때문에, 계속 이 Rom으로 유지하고 싶군요.

DeFroST라는 단어에서 성에를 없애는 뜻같이 아주 매끄럽게 HTC Desire를 사용할수 있는 롬이라고 말할 수 있습니다.

 

2010년 11월 20일에 DeFroST 6.0g가 나와서 바로 설치하게 되었습니다.


DeFroST 6.0g 설치 후 화면


DeFrost 6.0g를 설치후 휴대전화정보입니다.



다른 Desire롬보다 좋은 점은 최신 NexusOne에 들어간 OS인 Android 2.2.1이 들어간 점이 마음에 듭니다,


기존보다 DeFrost 6.0g의 변화된점입니다.

DeFroST의 기반인 넥서스원용 커스텀롬인 CyanogenMod의 변화와 Kernel 변화들을 적었습니다.

Version 6.0g:

CyanogenMod changes:

  • *WindowManagerService: Fix out of memory for surface error...
  • *Fix 2g/3g toggle on UMTS networks
  • *camera: Set default video focusmode to infinity
  • *Bionic: Aliasing problems with frexpf
  • *Browser: Browser settings are getting used before its initialization
  • *camera: Set video focus mode on startup
  • *Fix update of touch-focus and touch-aec
  • *Gallery3D: Add depth component to icon animation
  • *Add "Classic" mode to camera (mimics stock camera behavior regarding focus/shutter button)
  • *Fix sometimes mExpandedView will appear while screen transforming.
  • *Improve performance when getting styled string.
  • *Use a system property to determine mobile interfaces
  • *camera: Fix crash when attaching video to MMS.
  • *Change hide() to dismiss() to avoid memory leak.
  • *Add support for chunked encoding when downloading MMS PDUs
  • *Contacts: fix Contact icon cannot be replaced when set from gallery.
  • *Contacts: Check the parent for null in edit_delete
  • *Contacts: Handle the call event only for KeyUp event.

Kernel changes 6.0g:
  • *power: Enhanced ds2784 battery driver
  • *net: wireless: bcm4329: Use non-DFS channels only for US
  • *net: wireless: bcm4329: Improve way to detect BT SCO connection for BT-coex
  • *net: wireless: bcm4329: Update to Version 4.218.248-15
  • *sched: update "sched: automated per tty task groups" to 2010/11/18 - 2:00PM

2010년 10월 21일

@Linux_Kernel Twitter에 아래와 같은 소식이 올라왔습니다.


드디어 Linux Kernel 2.6.36이 정식출시되었다는겁니다.

설마 하면서 Linux 터미널에서 아래와 같은 명령어로 쳐보니 진짜 2.6.36이 Release가 되었군요^^

[root@localhost ~]# finger @ftp.kernel.org                                     

The latest linux-next version of the Linux kernel is:         next-20101021

The latest snapshot 2.6 version of the Linux kernel is:       2.6.36-rc8-git5

The latest mainline 2.6 version of the Linux kernel is:       2.6.36

The latest stable 2.6 version of the Linux kernel is:         2.6.36

The latest stable 2.6.35 version of the Linux kernel is:      2.6.35.7

The latest stable 2.6.34 version of the Linux kernel is:      2.6.34.7

The latest stable 2.6.33 version of the Linux kernel is:      2.6.33.7

The latest stable 2.6.32 version of the Linux kernel is:      2.6.32.24

The latest stable 2.6.31 version of the Linux kernel is:      2.6.31.14

The latest stable 2.6.27 version of the Linux kernel is:      2.6.27.54

The latest stable 2.4.37 version of the Linux kernel is:      2.4.37.10

[root@localhost ~]#


저는 git으로 CentOS에 Linux Kernel 2.6.36을 올렸습니다.

컴파일 해서 올리니 드디어 Linux Kernel 2.6.36을 쓸 수 있게 되었습니다.

커널을 컴파일해서 올리는 방법은 아래에 적혀있습니다.

2010/08/19 - [컴퓨터/Linux] - Linux Kernel 2.6.18에서 2.6.27로 컴파일 기록.


Linux Kernel 2.6.36 컴파일 후 결과물

[root@localhost ~]# uname -srvi

Linux 2.6.36 #1 SMP Thu Oct 21 21:26:28 KST 2010 i386

[root@localhost ~]#



이번 놀고 있는 연구실 컴퓨터에 있는 Cent OS에 있는 커널 버전이 낮은 관계에다 평소에 많은 자원들을 사용하지 않기때문에 커널 컴파일을 하게 되었다.

현재, 이 글을 쓰고 있는 시점에서 Cent OS 5.5 커널 버전은 2.6.18대이다. (현재 커널 버전과 차이가 많이 남)


[root@localhost ~]$ cat /proc/version

Linux version 2.6.18-194.8.1.el5 (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Thu Jul 1 19:07:06 EDT 2010

[root@localhost ~]$


또는 uname -a 로 현재 커널 버전을 알 수 있다.


[root@localhost linux-2.6.35]# uname -a

Linux localhost 2.6.18-194.8.1.el5 #1 SMP Thu Jul 1 19:07:06 EDT 2010 i686 i686 i386 GNU/Linux

[root@localhost ~]$


현재, 리눅스 커널 정보를 알아보려면 finger @ftp.kernel.org 로 알수 있다.


[studioego@localhost ~]$ finger @ftp.kernel.org

The latest linux-next version of the Linux kernel is:         next-20100816

The latest mainline 2.6 version of the Linux kernel is:       2.6.36-rc1

The latest snapshot 2.6 version of the Linux kernel is:       2.6.35-git17

The latest stable 2.6.35 version of the Linux kernel is:      2.6.35.2

The latest stable 2.6.34 version of the Linux kernel is:      2.6.34.4

The latest stable 2.6.33 version of the Linux kernel is:      2.6.33.7

The latest stable 2.6.32 version of the Linux kernel is:      2.6.32.19

The latest stable 2.6.31 version of the Linux kernel is:      2.6.31.14

The latest stable 2.6.27 version of the Linux kernel is:      2.6.27.51

[studioego@localhost ~]$


저는 위에서 안정화된 버전중에서 최신버전인 2.6.35.2 를 받아 설치하게 되었습니다.

커널은 git을 받아 설치하게 되었다.


[root@localhost src]# pwd

/usr/src

[root@localhost src]# git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.35.y.git linux-2.6.35


커널을 받고 나선 make menuconfig && make modules && make modules_install && make headers_install &&  make install 로 설치를 하였습니다.

아래와같이 make install을 하고 나서 아래와 같이 bzImage를 /boot 로 복사를 하고 grub에 이미지를 생성합니다. 이제 커널 컴파일이 끝나고 컴파일된 커널을 사용하게 되었습니다.


[root@localhost linux-2.6.35]# make install

sh /usr/src/linux-2.6.35/arch/x86/boot/install.sh 2.6.35.2 arch/x86/boot/bzImage \

                System.map "/boot"

[root@localhost linux-2.6.35]#



그러나 재부팅후에 아래와 같은 커널 패닉이 생겼다.


insmod: error inserting '/lib/dm-region-hash.ko': -1 File exists

Reading all physical volumes. This may take a while....

Volume group "VolGroup00" not found

mount: Could not find filesystem '/dev/root" 

setuproot: moving /dev failed

setuproot: error mounting /proc failed

setuproot: error mounting /sys failed

kernel panic - not syncing Attemped to kill init!

Pid:1, comm: init not tained 2.6.35.2 #1

(...)


커널 패닉이 일어나서 멸망하였습니다.


참고: CentOS 5.4: installing new kernel 2.6.32.9 guide http://funky-dennis.livejournal.com/3290.html 

위의 문제를 해결하기 위해 위의 내용을 보고 삽질한 끝에, 다시 컴파일 초기화 후, .config파일 불려들여 컴파일을 하게 함.

[root@localhost linux-2.6.35]# make clean

[root@localhost linux-2.6.35]# make mrproper

[root@localhost linux-2.6.35]# cp /boot/config-현재커널 버전 ./.config

[root@localhost linux-2.6.35]# make menuconfig


현재 구동중인 커널의 환경정보를 기준으로 커널을 컴파일 하기 위하여 cp /boot/config-현재커널 버전 ./.config 를 함

메뉴 하단에 Load an Al ternate Configuration File을 선택하였다.

.config 파일이 입력되어 있는데, 이를 선택하여 현재 커널 환경을 불러들였음.

이후 General Setup ---> enable deprecated sysfs features which may confuse old usersp 를 Y키를 눌러 *로 활성화 시킨다.

이후 저장하여 메뉴 환경 설정 메뉴에서 저장하고 나왔음

컴파일 완료 재부팅을 하니 좋은 결과가 나왔음.


[root@localhost src]# cat /proc/version

Linux version 2.6.35.2 (root@localhost) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Tue Aug 17 02:26:27 KST 2010

[root@localhost src]# uname -a

Linux localhost 2.6.35.2 #1 SMP Tue Aug 17 02:26:27 KST 2010 i686 i686 i386 GNU/Linux

[root@localhost src]#

그러나 문제가 생김. 2.6.35에서 kernel BUG at arch/x86/mm/highmem_32.c:45

highmem_32.c 의 45번째줄에서 메모리를 잘못 참조하는 에러가 나옵니다. 

2.6.35.2를 사용하다 보니 아래와 같은 메시지가 뜨면서 Kernel Panic이 일어납니다.


Message from syslogd@ at Tue Aug 17 15:04:27 2010 ...

localhost kernel: ------------[ cut here ]------------


Message from syslogd@ at Tue Aug 17 15:04:27 2010 ...

localhost kernel: invalid opcode: 0000 [#2] SMP


Message from syslogd@ at Tue Aug 17 15:04:27 2010 ...

localhost kernel: last sysfs file: /sys/devices/pci0000:00/0000:00:1c.3/0000:02:00.0/irq


Message from syslogd@ at Tue Aug 17 15:04:28 2010 ...

localhost kernel: Process sh (pid: 3941, ti=f51c8000 task=f6b936c0 task.ti=f51c8000)


Message from syslogd@ at Tue Aug 17 15:04:28 2010 ...

localhost kernel: Stack:


Message from syslogd@ at Tue Aug 17 15:04:28 2010 ...

localhost kernel: Call Trace:


Message from syslogd@ at Tue Aug 17 15:04:28 2010 ...

localhost kernel: Code: e8 57 98 06 00 8b 0d 00 b0 8c c0 64 a1 a4 ef 8a c0 6b c0 29 8b 15 ac 62 81 c0 8d 2c 30 8d 04 ad 00 00 00 00 29 c1 83 39 00 74 04 <0f> 0b eb fe 89 f8 83 e7 01 8b 35 00 31 92 c0 74 13 23 05 ac 4a


Message from syslogd@ at Tue Aug 17 15:04:28 2010 ...

localhost kernel: EIP: [<c0420638>] kmap_atomic_prot+0x6e/0xad SS:ESP 0068:f51c8ea8


Broadcast message from root (pts/1) (Tue Aug 17 15:21:20 2010):


The system is going down for reboot NOW!



결국은 이 문제가 해결 못한것을 알고, 이전 커널 버전인 2.6.27로 다시 컴파일 해서 설치하였습니다.


다시 2.6.27을 받아 설치 


[root@localhost src]# git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.27.y.git linux-2.6.27

위와 같이 

[root@localhost linux-2.6.27]# cp /boot/config-현재커널 버전 ./.config

[root@localhost linux-2.6.27]# make menuconfig

그리고 나서 .config파일 불러들여 저장후

[root@localhost linux-2.6.27]# CONCURRENCY_LEVEL=3 make && make modules && make modules_install && make headers_install &&  make install

컴파일을 하였습니다.


(...)

sh /usr/src/linux-2.6.27/arch/x86/boot/install.sh 2.6.27.51 arch/x86/boot/bzImage System.map "/boot"

이 나오고 Linux 2.6.27의 컴파일이 완료하였습니다. 이후 재부팅을 하였습니다.


[root@localhost linux-2.6.27]# reboot



결과, 성공!

[root@localhost ~]# uname -a

Linux localhost 2.6.27.51 #1 SMP Tue Aug 17 17:32:26 KST 2010 i686 i686 i386 GNU/Linux

[root@localhost ~]# cat /proc/version

Linux version 2.6.27.51 (root@localhost) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Tue Aug 17 17:32:26 KST 2010

[root@localhost ~]#


Linux Kernel 2.6.27.51 로 간신히 올렸음 -_-;;


오늘의 교훈: 최신 버전이라고 다 좋은 것도 아님. 아주 최신 버전에서 버그가 나올 수 있다.






제 노트북인 ThinkPad R52에 Ubuntu 10.04가 설치가 되어 있고, 커널은 2.6.32가 설치되어 있습니다.

studioego@studioego-laptop:~$ uname -a 

Linux studioego-laptop 2.6.32-24-generic #39-Ubuntu SMP Wed Jul 28 06:07:29 UTC 2010 i686 GNU/Linux

studioego@studioego-laptop:~$ cat /proc/version

Linux version 2.6.32-24-generic (buildd@rothera) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #39-Ubuntu SMP Wed Jul 28 06:07:29 UTC 2010

studioego@studioego-laptop:~$ 


이 노트북에 Linux Kernel 2.6.32에서 2.6.34로 올려볼 생각을 하였습니다. (최신 버전인 2.6.35.2 에 kernel BUG at arch/x86/mm/highmem_32.c:45 메모리 참조 잘못하는 버그가 있어서 차마 최신 버전을 올리진 못하고 안정버전인 2.6.34로 컴파일 하게 되었습니다.)


자고 일어나면 컴파일 완료되어서 노트북에 새로운 커널이 부팅되는 모습을 볼 수 있겠지?

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


Install: out/target/product/eee_701/system/app/Mms.apk
make: *** No rule to make target `vendor/google/frameworks/maps/
com.google.android.maps.xml', needed by `out/target/product/eee_701/
system/etc/permissions/com.google.android.maps.xml'.  Stop.

이럴 경우엔 eee_701.mk 파일 내용중에서 generic_with_google.mk를 generic.mk로 수정을 한다.

이 경우엔 구글 지도와 구글 토크를 사용하지 못하는 단점은 있다.

출처: [android-porting] Re: Compile error (no com.google.android.maps.xml)



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


 

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






아래는 옵티머스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 버전에서 사라질 가능성이 있습니다.

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용으로 포팅해서 올리면 엄청난 굇수가 되어 있겠지?

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

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

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

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

여름방학때 어떻게 지냈었지?  (1) 2007.07.27
내 얼굴의 심슨화??  (1) 2007.07.25
왜이리 재미있지?  (1) 2007.07.21
살 것 목록  (3) 2007.07.21
클랴님을 뵈었습니다.  (4) 2007.07.19
대단하신 교수님  (5) 2007.07.19
  1. Favicon of http://blue0239.egloos.com BlogIcon 0239 2007.07.21 08:45

    공도리의 특징이지. 교양이 전공보다 더 안나오는 현상 ㄲㄲㄲㄲㄲ

    왜 그런지 알어? 분명히 ~~ 논하라. 이렇게 나올텐데 배운것만 주구장창 써대니

    점수가 잘 나올리 만무.

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
Ubuntu에서 Kernel분석할때 까는 프로그램들  (2) 2007.07.13
vi 환경설정 하기  (0) 2007.03.12
SPmachine 엄청 무겁군요.  (3) 2007.03.08
Cygwin 설치 중  (4) 2007.01.29
  1. Favicon of http://mytears.org/ BlogIcon 정태영 2007.07.13 11:26

    단지 분석만이라면 global 을 설치해서 cross reference 를 구축하고, vim ctags 등으로 따라가보는 것만으로도 충분하지 않을까 싶은 ;)

  2. Favicon of http://sungdh86.egloos.com BlogIcon Ego君 2007.07.16 04:19

    정태영 // VMware로 깔아서 :D

+ Recent posts