기존에 존재하던 image 파일을 수정하여 새로운 image 파일을 만드는 것이 목적.
TI에서 제공하는 Filesystem 사용
2. Image 수정
FAT는 Boot file이기에 건들지 않고, Linux File system만 외부의 파일 system에서 가져와
새로 파티션을 만들어 수정한다.
2.1 각각의 Image 구성 확인
2.2 Image 수정
두번째 파티션 지우고 동시에 새로운 파티션을 만드며,각 사이즈를 정하고, Sector 크기를
2의 배수로 정한다. ( 1 Block이 2 Sector)
2.3 Image Resizing
위의 emmc_backup_2014_09_30.img 의 경우 아직 7818MB이며, 15269888 sectors 사용중 하지만 우리의 새로운 image의 end는
아래와 같이 dd 명령어를 사용해서, image를 resize를 한다.
마지막 sector가 1712089 이고 해서, 이를 짝수를 맞추고, 여분을 주기위해서, +1011줌.
현재 1 block = 2 sectors
* bs size에 속도차이가 심함
count 값은 위의 sectors 값을 반으로 나눈값 , bs를 변경 해도 됨
결과물로 test_newImage.img
3. Filesystem 복사
3.1 Filesystem 복사 방법
A. Mount 복사
skip = input block offset
seek = output block offset
위에서 에러가 나서, 그냥 dd로 전부 copy
B. dd를 이용하여 복사
위와 같이 여러번 했으나, 에러 발생으로 다른 방법시도
참조: http://forum.falinux.com/zbxe/index.php?document_srl=561988&mid=lecture_tip
C. mkfs.ext4 와 losetup 을 이용
* 에러 메시지를 보고, 안되는 이유가 파티션의 사이즈 배분을 잘못해서 문제생김.
3.2 File system 복사 ( Porting Qt 및 기타 사항)
3.3 SD 카드 이용시 할 경우
추후, TEST SD 카드 변경하여 아래와 같이 변경
- emmc_backup_2014_90_30.img의 filesystem을 지우고, TI-Filesystem 대체
- emmc_backup_2014_90_30.img resize
2. Image 수정
FAT는 Boot file이기에 건들지 않고, Linux File system만 외부의 파일 system에서 가져와
새로 파티션을 만들어 수정한다.
2.1 각각의 Image 구성 확인
- 각 구성은 1. boot 2. Linux filesystem 으로 구성
$ fdisk -l /media/sf_SHARED/emmc_backup_2014_09_30.img Disk /media/sf_SHARED/emmc_backup_2014_09_30.img: 7818 MB, 7818182656 bytes 255 heads, 63 sectors/track, 950 cylinders, total 15269888 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: 0x000c4046 Device Boot Start End Blocks Id System /media/sf_SHARED/emmc_backup_2014_09_30.img1 4096 266239 131072 b W95 FAT32 /media/sf_SHARED/emmc_backup_2014_09_30.img2 266240 11532287 5633024 83 Linux
2.2 Image 수정
두번째 파티션 지우고 동시에 새로운 파티션을 만드며,각 사이즈를 정하고, Sector 크기를
2의 배수로 정한다. ( 1 Block이 2 Sector)
$ fdisk /media/sf_SHARED/emmc_backup_2014_09_30.img Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): d Partition number (1-4): 2 Command (m for help): p Disk /media/sf_SHARED/emmc_backup_2014_09_30.img: 7818 MB, 7818182656 bytes 255 heads, 63 sectors/track, 950 cylinders, total 15269888 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: 0x000c4046 Device Boot Start End Blocks Id System /media/sf_SHARED/emmc_backup_2014_09_30.img1 4096 266239 131072 b W95 FAT32 Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): 2 First sector (2048-15269887, default 2048): 266240 Last sector, +sectors or +size{K,M,G} (266240-15269887, default 15269887): 1712089 //1606499 -160650 = 1712089 Command (m for help): p Disk /media/sf_SHARED/emmc_backup_2014_09_30.img: 7818 MB, 7818182656 bytes 255 heads, 63 sectors/track, 950 cylinders, total 15269888 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: 0x000c4046 Device Boot Start End Blocks Id System /media/sf_SHARED/emmc_backup_2014_09_30.img1 4096 266239 131072 b W95 FAT32 /media/sf_SHARED/emmc_backup_2014_09_30.img2 266240 1712089 722925 83 Linux Command (m for help): w
2.3 Image Resizing
위의 emmc_backup_2014_09_30.img 의 경우 아직 7818MB이며, 15269888 sectors 사용중 하지만 우리의 새로운 image의 end는
아래와 같이 dd 명령어를 사용해서, image를 resize를 한다.
마지막 sector가 1712089 이고 해서, 이를 짝수를 맞추고, 여분을 주기위해서, +1011줌.
현재 1 block = 2 sectors
* bs size에 속도차이가 심함
count 값은 위의 sectors 값을 반으로 나눈값 , bs를 변경 해도 됨
$ dd if=/media/sf_SHARED/emmc_backup_2014_09_30.img of=/media/sf_SHARED/test_newImage.img bs=1k count=$(((1712089+1011)/2))
결과물로 test_newImage.img
3. Filesystem 복사
$ fdisk -l /media/sf_SHARED/test_newImage.img Disk /media/sf_SHARED/test_newImage.img: 877 MB, 877107200 bytes 255 heads, 63 sectors/track, 106 cylinders, total 1713100 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: 0x000c4046 Device Boot Start End Blocks Id System /media/sf_SHARED/test_newImage.img1 4096 266239 131072 b W95 FAT32 /media/sf_SHARED/test_newImage.img2 266240 1712089 722925 83 Linux
$ fdisk -l /media/sf_SHARED/TI-IMAGE.img Disk /media/sf_SHARED/TI-IMAGE.img: 3965 MB, 3965190144 bytes 255 heads, 63 sectors/track, 482 cylinders, total 7744512 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 /media/sf_SHARED/TI-IMAGE.img1 * 63 144584 72261 c W95 FAT32 (LBA) /media/sf_SHARED/TI-IMAGE.img2 160650 1606499 722925 83 Linux /media/sf_SHARED/TI-IMAGE.img3 1606500 7743329 3068415 83 Linux
3.1 Filesystem 복사 방법
$ sudo mount -o loop,offset=$((512 * 266240)) /media/sf_SHARED/test_newImage.img ./tmp1 mount: wrong fs type, bad option, bad superblock on /dev/loop1, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so $ sudo mount -o loop,offset=$((512 * 160650)) /media/sf_SHARED/TI-IMAGE.img ./tmp2
skip = input block offset
seek = output block offset
위에서 에러가 나서, 그냥 dd로 전부 copy
B. dd를 이용하여 복사
$ dd if=/media/sf_SHARED/TI-IMAGE.img of=/media/sf_SHARED/test_newImage.img bs=512 skip=160650 seek=266240 count=$((1606499-160650))
위와 같이 여러번 했으나, 에러 발생으로 다른 방법시도
참조: http://forum.falinux.com/zbxe/index.php?document_srl=561988&mid=lecture_tip
C. mkfs.ext4 와 losetup 을 이용
$ sudo losetup -o$((512 * 266240)) /dev/loop0 /media/sf_SHARED/test_newImage.img //attach device $ sudo mkfs -t ext4 /dev/loop0 $ sudo losetup -d /dev/loop0 //detach device
$ sudo mount -o loop,offset=$((512 * 266240)) /media/sf_SHARED/test_newImage.img ./tmp1 EXT4-fs (loop0): bad geometry: block count 1408255 exceeds size of device (214137 blocks)
* 에러 메시지를 보고, 안되는 이유가 파티션의 사이즈 배분을 잘못해서 문제생김.
3.2 File system 복사 ( Porting Qt 및 기타 사항)
$ sudo mount -o loop,offset=$((512 * 266240)) /media/sf_SHARED/emmc_backup_2014_09_30.img ./tmp1 $ sudo mount -o loop,offset=$((512 * 160650)) /media/sf_SHARED/TI-IMAGE.img ./tmp2 $ cd tmp1 $ sudo rm -rf * $ sudo cp -a ../tmp2/* . $ cd usr/local $ sudo cp -a /usr/local/Qt-4.8.6 .
3.3 SD 카드 이용시 할 경우
추후, TEST SD 카드 변경하여 아래와 같이 변경
$ sudo mount -o loop,offset=$((512 * 266240)) /media/sf_SHARED/emmc_backup_2014_09_30.img ./tmp1 $ sudo mount -o loop,offset=$((512 * 160650)) /media/sf_SHARED/TI-IMAGE.img ./tmp2 $ sudo umount tmp1 tmp2 1. lib/module 복사 2. dev 복사 3. etc/rc5.d 수정 S02dbus-1 S20netperf S20syslog S90mount-sdcard S98parse-ip 4. sudo vi inittab //commnad line보고 수정, tty1 가상 console S:2345:respawn:/sbin/getty 115200 ttySAC1 5. sudo vi ../init.d/mount-sdcard // 현재 UUID로 마운트 필요없는 부분제거 6. /lib/ld-linux-armhf.so.3 loader 복사 7. QT 복사 8. EMA 복사 9. sudo ln -s libcmirisLib2_arm_2.1.3.so libcmirisLib2_arm_2.1.1.so //usr/local/lib export LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/Qt-4.8.6/lib:/usr/local/lib export QWS_DISPLAY="LinuxFb:/dev/fb6" export PATH=$PATH:/usr/local/bin TEST cd /usr/local/ ./deform -qws -display LinuxFb:/dev/fb6