레이블이 ramdisk인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ramdisk인 게시물을 표시합니다. 모든 게시물 표시

2013년 7월 10일 수요일

ramdisk rootfs를 system.img에 포함 시키기

http://codewalkerster.blogspot.kr/2013/05/boot-from-system-partition-instead.html

위에 설명에 수동으로 ramdisk의 rootfs를 system에 복사하는 방법이 였습니다.

이번에는 ramdisk의 rootfs를 포함 하여 system.img를 만들어 보겠습니다.

system/core/init/Android.mk를 보면 TARGET_ROOT_OUT 변수가 out/target/product/xxx/root를 의미합니다. 그리고 out/target/product/xxx/root/init에 복사 됩니다.

그래서 전체 Android.mk에서 TARGET_ROOT_OUT를 찾아 TARGET_OUT으로 변경하면 out/target/product/xxx/system으로 복사됩니다. 하지만 코드를 여러 군데 수정 해야 합니다.
그래서 build후 copy하는 방식으로 처리 하였습니다.

build_android.sh를 수정합니다.

SYSTEMIMAGE_PARTITION_SIZE=$(grep "BOARD_SYSTEMIMAGE_PARTITION_SIZE " device/hardkernel/$SEC_PRODUCT/BoardConfig.mk | awk '{field=$NF};END{print field}')

function copy_root_2_system()
{
#root의 내용을 permission 그대로 system 폴더에 복사한다.
    cp -arp $OUT_DIR/root/* $OUT_DIR/system/

#init과 sbin/adbd를 755로 넣어도 644로 바뀌기 때문에 symbolic link 해결
#init과 adbd를 bin으로 복사합니다.
    mv $OUT_DIR/system/init $OUT_DIR/system/bin/
    mv $OUT_DIR/system/sbin/adbd $OUT_DIR/system/bin/
    cd $OUT_DIR/system
    ln -s bin/init init
    cd $OUT_DIR/system/sbin
    ln -s ../bin/adbd adbd

#make_ext4fs로 system 폴더를 system.img로 만든다.
#SYSTEMIMAGE_PARTITION_SIZE 는 BoardConfig.mk의 BOARD_SYSTEMIMAGE_PARTITION_SIZE의 값을 읽어서 설정한다.
    $OUT_HOSTBIN_DIR/make_ext4fs -s -l $SYSTEMIMAGE_PARTITION_SIZE -a system $OUT_DIR/system.img $OUT_DIR/system

    sync
}

    odroidx2)
        build_android
        copy_root_2_system
        make_uboot_img

kernel의 defconfing를 수정합니다. (ODROID-U2)

CONFIG_CMDLINE="root=/dev/mmcblk0p2 rw rootfstype=ext4 init=/init console=ttySAC1,115200n8 androidboot.console=ttySAC1 mem=2047M"

2013년 5월 31일 금요일

Boot from system partition instead ramdisk for ODROID

mount eMMC or SDCard on PC.


Disk /dev/sde: 15.8 GB, 15758000128 bytes
255 heads, 63 sectors/track, 1915 cylinders, total 30777344 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1         6684672    30646271    11980800    c  W95 FAT32 (LBA)
/dev/sde2          131072     2228223     1048576   83  Linux
/dev/sde3         2228224     6422527     2097152   83  Linux
/dev/sde4         6422528     6684671      131072   83  Linux

Partition table entries are not in disk order
[~/projects/ssd/JellyBean/out/target/product/odroidx2]$

#mount system partition

[~/projects/ssd/JellyBean/out/target/product/odroidx2]$ sudo mount /dev/sde2 /media/microSD/

# copy ramdisk fs.

[~/projects/ssd/JellyBean/out/target/product/odroidx2]$ sudo cp -a root/ /media/microSD/

# change permissions

[~/projects/ssd/JellyBean/out/target/product/odroidx2]$ sudo chmod 644 /media/microSD/init.*
[~/projects/ssd/JellyBean/out/target/product/odroidx2]$ sudo chmod 644 /media/microSD/build.prop

and ODROID power up...

make boot.scr

edit boot.ini



  1 setenv v_out        "hdmi"
  2 setenv fake_fb      "false"
  3 setenv fb_x_res     "1360"
  4 setenv fb_y_res     "768"
  5 setenv hdmi_phy_res "1080"
  6 setenv led_blink    "1"
  7 setenv bootcmd      "movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 40008000 41000000"
  8 setenv bootargs     "root=/dev/mmcblk0p2 ro rootfstype=ext4 init=/init rootdelay=1 console=/dev/ttySAC1,115200n8 androidboot.console=ttySAC1 v_out=${v_out} fake_fb=${fake_fb} fb_x_res=${fb_x_res} fb_y_res=${    fb_y_res} hdmi_phy_res=${hdmi_phy_res} led_blink=${led_blink}"
  9 boot


$./make_boot_scr.sh

$adb push boot.scr /sdcard/

$adb sync

$adb reboot

boot from system partition.


booting log


[    0.000000] sclk_fimd: source is xusbxti (1), rate is 1500000
[    0.000000] sclk_mfc: source is mout_mfc0 (0), rate is 55000000
[    0.000000] sclk_g3d: source is mout_g3d0 (0), rate is 55000000
[    0.000000] sclk_pwi: source is xusbxti (1), rate is 1500000
[    0.000000] PERCPU: Embedded 7 pages/cpu @c1af8000 s7008 r8192 d13472 u32768
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 519938
[    0.000000] Kernel command line: console=ttySAC1,115200n8 androidboot.console=ttySAC1 mem=2047M root=/dev/mmcblk0p2 ro rootfstype=ext4 init=/init rootdelay=1 console=/dev/ttySAC1,115200n8 androidboot.console=1
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Memory: 2047MB = 2047MB total
[    0.000000] Memory: 1695464k/1695464k available, 400664k reserved, 1342464K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)