본문 바로가기
3. 개발 관련/정리 :: issue 와 resovle

initramfs in kernel

by kyuho.choi 2012. 1. 10.
728x90
반응형

initramfs는 커널이 동작시에 필요한 console 디바이스 및 root 디렉토리등을 제공하는 ramfs인데,
요녀석을 이용하면 커널 이미지 내부에 미니멀한 root filesystem 을 집어넣어 시스템을 구축할 수 가 있다.

initramfs 를 사용하기 위한 condition은 아래와 같이 커널 빌드시에 옵션 및 rootfs path를 지정해준다.

아래의 경우에는 안드로이드의 ramdisk에 해당되는 path를 지정했다.

- initramfs support
#] make menuconfig

    ==> General setup                                        

           [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support                                 
           (/data/workspace/source/android/out/target/product/crespo/root) Initramfs source file              
           (0)     User ID to map to 0 (user root)                                                            
           (0)     Group ID to map to 0 (group root)                                                          
           [*]   Support initial ramdisks compressed using gzip 

커널이  빌드되면 zImage 안에 initramfs 에 해당하는 녀석이 포함되어 있을 것이다.
#] make zImage

커널에 포함된 initramfs 는 아래의 경로에 생성되며,
이를 풀어서 파일트리를 확인하거나 변경하는 것 등이 가능하다.
 
- unzip initramfs
#] cat <KERNEL>/usr/initramfs_data.cpio | cpio -i --no-absolute-filenames

- zip initramfs
#] find . -print0 | cpio -o0 -H newc > <KERNEL>/usr/initramfs_data.cpio

그러하다. 
728x90
반응형

댓글