문제

블록 레벨에서 ERV3 파일 시스템에 액세스하는 가장 쉬운 방법은 무엇입니까? 파일이나 원시 바이트를 신경 쓰지 않으면 한 번에 한 블록 씩 FS를 읽어야합니다. 이 작업을 수행하는 간단한 방법이 있습니까 (C)? 아니면 영감을 얻을 수있는 간단한 앱일까요? 인터넷에서 사용 가능한 튜토리얼을 찾지 못했고, 커널 소스로 뛰어 들어 어떻게 해야하는지 확인하는 것이 약간 무서워합니다.

도움이 되었습니까?

해결책

예, 참조하십시오 E2FSPROG. 이를 통해 Ext2, Ext3 및 Ext4 파일 시스템으로 무엇이든 수행하는 데 사용할 수있는 도구가 제공됩니다. 또한 라이브러리 인터페이스가 포함되어 있으므로 다른 작업을 수행 할 수 있습니다.

포함 된 디버그를 참조하십시오. 시작하기에 충분할 수 있습니다. 그렇지 않으면 헤더를 확인하고 코드를 작성하십시오.

다른 팁

간단한 앱을 원한다면 볼 수 있습니다. "DD"유틸리티. 나는의 일부로 온다 GNU 핵심 유틸리티. 소스는 다운로드 할 수 있습니다. 홈페이지를 살펴보십시오. 여기.
C 코드에서 동일하게 달성하려면 다음 코드를 참조하십시오. 이것이 당신에게 도움이되기를 바랍니다. :)

#include <stdio.h>
#include <linux/fs.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define SECTOR_NO 10 /*read 10th sector*/

int main()
{
        int sector_size;
        char *buf;
        int n = SECTOR_NO;

        int fd = open("/dev/sda1", O_RDONLY|O_NONBLOCK);
        ioctl(fd, BLKSSZGET, &sector_size);
        printf("%d\n", sector_size);
        lseek(fd, n*sector_size, SEEK_SET);

        buf = malloc(sector_size);
        read(fd, buf, sector_size);

        return 0;
}

디스크 장치 및 그 안에있는 파티션은 읽을 수있는 일반 파일처럼 행동합니다.

head -c 2048 /dev/sda1 > first_2048_bytes

물론 뿌리가되어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top