eMMC에서 ext4 파티션을 마운트하려고 하면 "잘못된 매개변수" 오류가 발생합니다.

eMMC에서 ext4 파티션을 마운트하려고 하면 "잘못된 매개변수" 오류가 발생합니다.

장치 생성을 위해 Qt 5.5를 사용하여 Intel Atom(Baytrail) 기반 Android 태블릿에 사용자 정의 Linux 설치를 설정하려고 합니다. 빌드 시스템은 Yocto 프로젝트를 기반으로 하며 임베디드 Linux 이미지를 빌드합니다. 태블릿(원래 Android 태블릿)에서 이 이미지를 실행하기 위해 부팅 파티션을 커널, initramfs 및 초기 부팅 스크립트가 포함된 이미지로 교체하고 시스템 파티션을 전체 이미지로 교체한 다음 Intel 제작 도구를 사용하여 이를 플래시했습니다. 장치에.

지금까지 나는 initramfs를 사용하여 장치를 새 커널로 부팅하고 init 스크립트를 실행했습니다. 내장형 플래시 메모리에 기본 파티션을 마운트하려고 할 때 문제가 발생합니다. "잘못된 매개변수"로 인해 시스템 파티션을 마운트하는 명령이 실패합니다.

cat proc/filesystems는 ext4가 지원됨을 보여주고, parted -l은 EFI 부팅 파티션을 제외하고 내부 MMC의 파티션이 모두 ext4임을 보여줍니다. ext4 파티션은 마운트할 수 없지만 EFI 파티션은 마운트할 수 있으므로 전체 MMC에 액세스할 수 있어야 한다고 가정합니다.

fdisk -l을 실행하면 첫 번째 파티션(EFI 부팅 파티션)만 표시되는데 이는 fsdisk가 GPT를 지원하지 않기 때문인 것 같습니다.

ext4 파티션을 마운트할 수 없는 이유를 아는 사람이 있습니까? 모두 /dev에 나열되어 있습니다.

mmcblk0 mmcblk0p1 mmcblk0p2 mmcblk0p3 mmcblk0p4 mmcblk0p5 mmcblk0p6 mmcblk0p7

mmcblk0p1은 마운트 가능하며 EFI 부팅 파티션입니다.

죄송합니다. 실제 출력을 게시할 수 없으므로 모두 메모리에서 가져온 것입니다. 하지만 이 글을 쓰기 시작했을 때 장치의 배터리가 방금 방전되었습니다. 다시 충전한 후 필요한 경우 명령에서 실제 출력을 얻을 수 있어야 합니다.

고쳐 쓰다

그래서 Busybox를 다시 컴파일하고 fdisk에서 GPT 지원을 활성화했으며 fdisk에 파티션이 나열되었습니다. 또한 장치에 TestDisk가 설치되어 있으며 TestDisk를 사용하여 파일 시스템을 탐색할 수 있습니다. /dev/mmcblk0p(2 - 7) 아래에 나열된 파티션을 마운트하려는 시도가 여전히 작동하지 않지만 fdisk -l에서 시작 섹터를 가져온 다음 루프 장치(시작 섹터 * 섹터 크기)를 설정하여 파티션을 성공적으로 마운트할 수 있습니다. ) /dev/loop0 /dev/mmcblk0, 그리고 마지막으로 /dev/loop0을 마운트합니다. /dev/mmcblk0p2 등을 마운트하는 대신 왜 이 방법을 거쳐야 합니까?

답변1

문제는 모든 파티션이 /dev 아래에 나열되지 않는다는 것입니다. eMMC에는 15개의 파티션이 있지만 1~7개만 나열됩니다. 내 생각에 1 - 7은 단지 ext4 파티션일 뿐이고 다른 파티션(ext4로 포맷되지 않은)은 거기에 표시되지 않습니다. 따라서 ext4 파티션을 마운트한다고 생각하면 다른 파티션을 마운트하려고 시도하지만 그렇게 할 수 없어 오류가 발생합니다. 문제는 커널 구성, 특히 CONFIG_MMC_BLOCK_MINORS에서 비롯됩니다. 기본값은 8이므로 처음 몇 개의 파티션만 표시됩니다. 값 20으로 커널을 다시 컴파일했는데 나머지 파티션이 /dev/mmcblk0p8, 9, 10 등 아래에 표시되어 제대로 마운트할 수 있습니다.

관련 정보