![sfdisk를 사용하여 eMMC를 분할할 때 발생하는 문제](https://linux55.com/image/63614/sfdisk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20eMMC%EB%A5%BC%20%EB%B6%84%ED%95%A0%ED%95%A0%20%EB%95%8C%20%EB%B0%9C%EC%83%9D%ED%95%98%EB%8A%94%20%EB%AC%B8%EC%A0%9C.png)
나는 am335x 기반의 커스텀 보드용 펌웨어(MLO, u-boot.img, uImage(ver 3.12), dtb, rootfs.tar.gz) 프로그래밍 스크립트를 작성 중입니다.
루트 파일 시스템은 eMMC에 배치됩니다. 보드가 프로그래밍 스테이션에서 처음 부팅되면 펌웨어 프로그래밍 스크립트는 nfsroot 폴더에 있는 init 스크립트 중 하나로 실행됩니다.
기본적으로 스크립트
1. eMMC 파티션
2. 첫 번째 파티션의 raw 영역에 MLO, u-boot.img, uImage, dtb 작성
3. 그런 다음 다른 파티션을 ext4로 포맷하고
4. ext4 파티션 마운트 및 추출 rootfs.tar.gz.
현재 스크립트에는 두 가지 문제가 있습니다. 하나는 커널 메모리 영역을 백업하는 문제입니다.
스크립트 문제
- sfdisk가 /dev 디렉터리에서 사용할 수 없는 파티션과 관련된 파티션 장치 파일을 생성하지만 7개 이상의 파티션(논리 파티션 포함)을 생성할 수 없습니다.
이것은 내가 사용하는 sfdisk 명령입니다
#Partition emmc
sfdisk -D -H 255 -S 63 -C 467 /dev/mmcblk0 -uM << EOF
,32,C,*
,200,L
,200,L
,,E
,100,L
,60,L
,200,L
;1269,L
;
EOF
파티션을 나열하면 fdisk/sfdisk가 8개의 파티션을 보고하지만 8번째 파티션과 관련된 파티션 파일은 표시되지 않습니다.
이것은 fdisk의 출력입니다.
# fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 3841 MB, 3841982464 bytes
255 heads, 63 sectors/track, 467 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 * 1 5 40131 c Win95 FAT32 (LBA)
/dev/mmcblk0p2 6 31 208845 83 Linux
/dev/mmcblk0p3 32 57 208845 83 Linux
/dev/mmcblk0p4 58 467 3293325 5 Extended
/dev/mmcblk0p5 58 70 104391 83 Linux
/dev/mmcblk0p6 71 78 64228+ 83 Linux
/dev/mmcblk0p7 79 104 208813+ 83 Linux
/dev/mmcblk0p8 105 266 1301233+ 83 Linux
/dev/mmcblk0p9 267 467 1614501 83 Linux
- 경우에 따라 eMMC 장치 파일(/dev/mmcblk0p2, /dev/mmcblk0p3 등)을 파티셔닝한 후 나타나지 않는 경우 mkfs 유틸리티가 파티션을 포맷하지 못하고 펌웨어 새로 고침이 실패합니다.
eMMC 메모리 문제
eMMC의 첫 번째 파티션은 "Win95 FAT32(LBA)" 유형입니다. 이 파티션을 포맷하지 않고 원시 파티션으로 사용합니다.
이 파티션에는 MLO 복사본 3개, u-boot.img, uImage 및 dtb 복사본 2개가 있습니다.
이제 dd를 사용하여 여러 번 새로 고침을 시도한 후 uImage가 처음 복사한 메모리 영역이 손상되고 마더보드에서 해당 파티션의 이미지가 손상되었다고 불평합니다.
이제 eMMC에 마모 평준화 및 오류 수정 메커니즘을 처리하는 컨트롤러가 있는 경우 코어가 저장된 메모리 영역은 어떻게 손상됩니까?
위 문제에 대한 제안/아이디어/포인터가 있습니까?