장치 생성을 위해 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 등 아래에 표시되어 제대로 마운트할 수 있습니다.