userdata.img를 ext2용으로 만들때 genext2fs 사용법 질문드립니다.
안녕하세요.
삼성 c110 보드를 이용해서 이것저것 삽질중에 모르는게 생겨서 질문드립니다.
현재 삽질하고 있는 내용은 안드로이드를 빌드하고 나온 userdata.img를
삼성 c110에 있는 OneNAND가 아닌 MoviNAND의 대용량 Ext2 파티션으로 옮겨보려고 시도중입니다.
이를 위해서 MoviNAND를 파티셔닝 하고, 1G를 Ext2 로 포멧하였구요.
안드로이드를 빌드하고나서 out\target\product\c110\data 디렉토리를
genext2fs 라는 툴을 이용해서 ext2용 userdata.img를 생성하였습니다.
num_inodes : 20 (/data directory file count) num_blocks : 1392 (/data directroy full size) extra_blocks : 139 (reserved 10% size) total_blocks : 1531 (num_blocks + extra_blocks) genext2fs generate userdata.img for Ext2 filesystem number of inodes too low, increasing to 29
# ./out/host/linux-x86/bin/genext2fs -b 1531 -N 100 -d ./out/target/product/c110/data ./out/target/product/c110/userdata.img
그런데 문제가 uboot에서 fastboot로 userdata.img를 USB 전송받아 Ext2 파티션 시작주소에 mmc write 하면
MoviNANAD의 1G 짜리 Ext2 파티션이 userdata.img를 만들때 설정한 블럭 사이즈인 1.5MB로 줄어 버리고 있습니다.
fdisk로 보면 파티션 사이즈는 정상인데 Ext2 파일 시스템에서 전체 용량을 1.5MB로 인식하고 있습니다.
아마 Ext2 파티션 시작주소에 write 해버려서 Ext2 파티션 테이블이 덮어 써져서
userdata,img의 블럭 사이즈를 자기 파티션 크기로 인식해 버리는 문제로 보이는데
이러니 안드로이드가 부팅하면서 MoviNAND의 Ext2 파티션을 /data로 마운트 하면서
물리적으로 1G지만 userdata.img를 write 하면서 실제 용량을 1.5MB로 인식해 버리고 있습니다.
때문에 안드로이드 초기화하면서 /data에 여러 파일들이 생성되야 하는데 용량이 없어서 부팅을 못하고 있습니다.
임시로 usetdata.img를 100MB로 키워서 mmc write 해보니 Ext2 파티션이 100MB로 인식하면서
부팅하고 설정에서 시스템 용량을 확인해보니 70MB가 남았다고 뜨더라구요.
해결은 genext2fs로 Ext2 이미지를 만들때 옵션을 잘 줘야할거 같은데 어떻게 해야할지를 모르겠습니다.
genext2fs로 Ext2 이미지 만들때 실제 userdata.img 사이즈는 1.5MB 이면서
이 Ext2 파티션은 1G로 inode정보도 충분하게 하드코딩 하지 않고 동적으로 처리되게 하는 방법이 있는건지
고수님들의 조언을 부탁드립니다.
좀 더 확인한 내용
어제 문제점을 파악하고 옵션을 꼼꼼히 살펴봤더니 -i 옵션을 주면 inode는 파티션 용량만큼 할당이 가능해 보입니다.
현재 제가 1G를 설정했으니 아래처럼 입력하면 1G짜리 userdata.img 가 만들어 집니다.
# ./out/host/linux-x86/bin/genext2fs -b 1048576 -i 1048576 -m 5 -d /out/target/product/c110/data ./out/target/product/c110/userdata.img
문제는 1.5M밖에 안하는 userdata를 1G Ext2 파티션에 쓰기위해서 똑같은 사이즈의 1G userdata.img를 만들어야만 하는건 아니겠죠?
정말 이렇게 무식하게 고정 사이즈로만 생성이 가능하진 않을거 같은데... 혹시 genext2fs가 원래 고정된 사이즈로만 생성가능 한건가요?
genext2fs로 이미지 만들때 생성된 userdata.img 크기는 실제 내용물인 1.5M 이면서 이 userdata.img 내부는 1G 파티션이라고 인식할 수 있게 설정하는 방법이 있는지 문의 드립니다.
댓글 달기