내 질문은 다음과 같습니다압축된 rootfs를 사용할 수 없지만(부팅 중 커널 충돌) 압축되지 않은 rootfs는 제대로 작동합니다.
내가 뭘 한거지:Buildroot 2013.11을 사용하여 SD 카드에서 부팅하는 임베디드 Linux(2.6.39) ARM 9 시스템을 이미지화하고 있습니다.
SD 카드의 두 번째 파티션에 이미지(예: ext4)를 "dd"합니다.
sudo dd if=/path-to/rootfs.ext4 of=/dev/sdb2 bs=2048
linux-menuconfig에서 드라이버를 활성화합니다. 즉,
File systems
- <*> The Extended 4 (ext4) filesystem
- [*] Use ext4 for ext2/ext3 file systems
- [*] Ext4 extended attributes
이제 압축된 ext4(예: lzo 사용)를 사용하고 싶을 때 빌드 루트는 rootfs.ext4.lzo
여기서 "dd"를 생성합니다.
sudo dd if=/path-to/rootfs.ext4.lzo of=/dev/sdb2 bs=2048
명령은 오류 없이 실행되지만 이 시점부터 다시 포맷할 때까지 "sdb2"에 더 이상 액세스할 수 없습니다. 이 SD로 시스템을 부팅할 때 커널 패닉이 발생하고 ext4로 파티션을 해석하려고 하지만 읽을 수 없다는 메시지가 나타납니다.
내가 어디서 잘못됐나요?
답변1
많은 정보를 생략하고 있지만 여기에 표시된 내용은 의미가 없습니다. 압축된 파일 시스템 이미지를 생성하는 경우 나중에 메모리에서 압축되지 않은 상태로 사용하려면 이를 메모리에 로드하고 압축을 풀어야 합니다. 파일 시스템처럼 압축된 이미지에 액세스하려는 것처럼 보이지만 사실은 아닙니다. 압축된 ext4 파일 시스템은 ext4 파일 시스템이 아니므로 마운트할 수 없습니다.
플래시에서 파일 시스템을 사용하려면(예: 필요에 따라 파일 로드 및 언로드) 압축을 풀어야 합니다. 메모리에서 파일 시스템을 사용하려면 다음으로 설정하는 것이 좋습니다.파일 시스템 초기화: 파일 시스템의 빈 부분에 메모리를 낭비하지 않고, 메모리를 확보하려는 경우 즉시 파일을 지울 수 있으며, 구축하고 부팅하는 데 필요한 인프라가 더 적습니다.