Android/Android&Kernel2009/04/15 14:55

[출처 : Korea Android]

     Config옵션(for Android Cupcake 1.5 이상 버젼)

   =======================================

 

본 글은 2009년 2월 10 기준으로 작성된 Android Kernel Config에 대한 문서입니다

 

 

 목 차 - 

 

1. 안드로이드란?

  1.1 Enable이 요구되는 옵션들

  1.2 Disable이 요구되는 옵션들

  1.3 Enable되어야 하는 권장 옵션들

2. 커널소스 다운로드 

 

 

1. 안드로이드란?

==========

 

안드로이드(www.android.com)란 모바일 디바이스를 위한 오픈소스 운영체제 시스템이다

이 문서는 "make menuconfig"명령을 이용하여 리눅스크널을 컴파일하고자 할때 필요한 

환경설정에 대한 내용을 기술하고 있다

 

 

msm_defconfig 또는 goldfish_defconfig 의 환경파일들이 defconfig 작업을 수행하는 것을

보기위해서 우리는 무엇을 해야 하는가

http://android.git.kernel.org 웹사이트의  kernel/common.git kernel/msm.git 라는

웹디렉토리에서  msm_defconfig 또는 goldfish_defconfig 파일들을 열람할수 있다

 

 

1.1 Enable이 요구되는 옵션들 

표준포맷인 defconfig 파일을 빌드한후에   여러분의 커널 디렉토리에서   .config 또는

defconfig파일이 존재하는지 먼저 체크 해야 된다

이란적으로 mss_defconfig 파일은 off 상태로 되어 이따

 

안드로이드용 커널로 빌드하기 위해 다음과 같은 매크로들이 enable되어 있어야 한다

 

ANDROID_PARANOID_NETWORK

ASHMEM

CONFIG_FB_MODE_HELPERS

CONFIG_FONT_8x16

CONFIG_FONT_8x8

CONFIG_YAFFS_SHORT_NAMES_IN_RAM

DAB

EARLYSUSPEND

FB

FB_CFB_COPYAREA

FB_CFB_FILLRECT

FB_CFB_IMAGEBLIT

FB_DEFERRED_IO

FB_TILEBLITTING

HIGH_RES_TIMERS

INOTIFY

INOTIFY_USER

INPUT_EVDEV

INPUT_GPIO

INPUT_MISC

LEDS_CLASS

LEDS_GPIO

LOCK_KERNEL

LkOGGER

LOW_MEMORY_KILLER

MISC_DEVICES

NEW_LEDS

NO_HZ

POWER_SUPPLY

PREEMPT

RAMFS

RTC_CLASS

RTC_LIB

SWITCH

SWITCH_GPIO

TMPFS

UID_STAT

UID16

USB_FUNCTION

USB_FUNCTION_ADB

USER_WAKELOCK

VIDEO_OUTPUT_CONTROL

WAKELOCK

YAFFS_AUTO_YAFFS2

YAFFS_FS

YAFFS_YAFFS1

YAFFS_YAFFS2

 

 


 

1.2 Disable이 요구되는 옵션들

아래의  피쳐들은 가급적 ./andorid-kerenl.2.6.27/.config파일에서 Disable되어 있어야 한다

CONFIG_YAFFS_DISABLE_LAZY_LOAD

DNOTIFY

 


 

 

1.3 Enable되어야 하는 권장 옵션들 

 

ANDROID_PMEM

ANDROID_RAM_CONSOLE

ANDROID_RAM_CONSOLE_ERROR_CORRECTION

SCHEDSTATS

DEBUG_PREEMPT

DEBUG_MUTEXES

DEBUG_SPINLOCK_SLEEP

DEBUG_INFO

FRAME_POINTER

CPU_FREQ

CPU_FREQ_TABLE

CPU_FREQ_DEFAULT_GOV_ONDEMAND

CPU_FREQ_GOV_ONDEMAND

CRC_CCITT

EMBEDDED

INPUT_TOUCHSCREEN

I2C

I2C_BOARDINFO

LOG_BUF_SHIFT=17

SERIAL_CORE

SERIAL_CORE_CONSOLE

 


 

 

 

2. 커널소스 다운로드 

 

website: http://android.git.kernel.org

 


 

make menuconfig 에서 각 항목의 위치가 어디로 갔는 지 잘 기억 나질 않아 비교 정리 해봅니다.

* android-2.6.25 config

General setup
 -> Enable Android's Shared Memory Subsystem (CONFIG_ASHMEM = y)
    If not set, init will emit SIGSEGV.
Device Drivers
 -> Misc devices
   -> Low Memory Killer (CONFIG_LOW_MEMORY_KILER = n)
      When you do a porting job, it's better to disable it.
 -> Android
   -> Binder IPC Driver (CONFIG_ANDROID_BINDER = y)
   -> Android power drvier (CONFIG_ANDROID_POWER = y)
      -> Android power driver lock stats (CONFIG_ANDROID_POWER_STAT =y)
      -> Android alarm driver (CONFIG_ANDROID_POWER_ALARM =y)
   -> Android log driver (CONFIG_ANDROID_LOGGER = y)
   -> RAM buffer console (CONFIG_ANDROID_RAM_CONSOLE = n)
   -> Only allow certain groups to create sockets (CONFIG_ANDROID_PARANOID_NETWORK = y)

   * android-2.6.27 config

General setup
 -> Enable the Anonymous Shared Memory Subsystem (CONFIG_ASHMEM = y)
Power management options
 -> Wake lock (CONFIG_WAKELOCK = y)
   -> Wake lock stats (CONFIG_WAKELOCK_STAT = y)
   -> Userspace wake locks (CONFIG_USER_WAKELOCK = y)
   -> Early suspend (CONFIG_EARLYSUSPEND = y)
Networking support
 -> Networking options
   -> Only allow certain groups to create sockets (CONFIG_ANDROID_PARANOID_NETWORK = y)
Device Drivers
 -> Misc devices
   -> Android pmem allocator (CONFIG_ANDROID_PMEM = y)
   -> Timed output class driver (CONFIG_TIMED_OUTPUT =y)
     -> Android timed gpio driver (CONFIG_TIMED_GPIO = y)
   -> Binder IPC Driver (CONFIG_BINDER_IPC = y)
   -> Low Memory Killer (CONFIG_LOW_MEMORY_KILER = n)
   -> High-speed in-kernel logging driver (CONFIG_LOGGER = y)
   -> RAM buffer console (CONFIG_ANDROID_RAM_CONSOLE = n)
 -> Real Time Clock
   -> Android alarm driver (CONFIG_RTC_INTF_ALARM = y)

Posted by mirwing