'ramdisk'에 해당되는 글 '1'건

사용자 삽입 이미지

Android boot.img는 kernel + ramdisk입니다.
이 boot.img를 변경 적용하는 방법입니다.


$split_bootimg.pl boot.img 하면
kernel image와 ramdisk 이미지가 분리되면서, 아래와 같이 size와 cmdline 정보를 볼 수 있습니다.
Page size: 2048 (0x00000800)
Kernel size: 7115952 (0x006c94b0)
Ramdisk size: 4083551 (0x003e4f5f)
Board name:
Command line: console=ttyHSL0,115200,n8 user_debug=31 msm_rtb.filter=0x3F ehci-hcd.park=3 androidboot.hardware=xxx .....
Writing boot.img-kernel ... complete.
Writing boot.img-ramdisk.gz ... complete


kernel base address를 확인해 놓습니다. 다시 압축할 때 필요하겠죠.
$unpackbootimg -i boot.img

ramdisk를 압축해제 합니다.
ramdisk는 루트파일 시스템으로 init script, mount를 위한 directory 구조를 가지고 있는 ram 파일 시스템입니다.
$gzip -d boot.img-ramdisk.gz
cpio를 이용해 ramdisk를 풀어줍니다.
디렉토리를 만들어 압축을 풀어야 나중에 편합니다.
$mkdir ramdisk && mv boot.img-ramdisk ramdisk/ && cd ramdisk
$cpio -i -F boot.img-ramdisk

이제 boot.img에 포함된 ramdisk를 확인&수정할 수 있습니다.
수정하고자 하는 내용 변경 후,
$find . | cpio -o -H newc -O ../ramdisk
$cd .. && gzip ramdisk


만들어진 ramdisk와 kernel 이미지를 합칩니다.
$mkbootimg --cmdline "기존 cmdline" --base "unpackbootimg에서 확인한 base address" --pagesize (split에서 나온 page size) --kernel boot.img-kernel --ramdisk ramdisk.gz -o new-boot.img

완성되었으니 디바이스에 밀어넣으면 됩니다.
$fastboot flash boot new-boot.img





2015/02/17 08:47 2015/02/17 08:47
Posted by scott