임베디드 장치에서 드라이버 마운트 및 바이트 교환

임베디드 장치에서 드라이버 마운트 및 바이트 교환

나는 저장을 위해 IDE 하드 드라이브를 사용하는 약 20년 전의 장치를 가지고 있습니다. 계속 사용하고 싶지만 USB 1 포트가 너무 느립니다.

하드 드라이브를 제거하고 더 빠른 USB 2.0 케이블에 연결할 수 있지만 FAT32 데이터에 액세스하는 것은 그리 간단하지 않습니다.

연결된 각 드라이브의 처음 몇 메가바이트에 대한 dd 이미지를 촬영한 결과 유일한 차이점은 간단한 바이트 스왑뿐이라는 것을 알았습니다. dd와 함께 conv=swab 옵션을 사용했는데 동일한 이미지를 얻었습니다. 16진수 표현:

ABCD = BADC

그런 다음 루프 및 오프셋 옵션을 사용하여 이미지를 탑재할 수 있습니다. 하지만 이것은 수정된 이미지이며 장치에 직접 적용되지 않습니다.

변경할 때마다 전체 20GB 이미지를 추출/쓰기할 필요가 없도록 내장된 바이트 스와핑을 사용하여 장치를 직접 마운트하거나 처리할 수 있는 방법이 있습니까?

답변1

몇 가지 시행착오를 거쳐 @MarcusMüller가 올바른 방향을 지적한 후 다음 명령은 드라이브를 읽기-쓰기 구성으로 성공적으로 마운트했습니다. 성능은 다소 부족한 것 같지만 그래도 원래 USB 1 구성보다는 훨씬 좋습니다.

nbdkit eval get_size='blockdev --getsize64 /dev/sdb' \
        pread='dd conv=swab skip=$4 count=$3 iflag=count_bytes,skip_bytes if=/dev/sdb' \
        pwrite='dd conv=swab seek=$4 oflag=seek_bytes of=/dev/sdb'

그 후 일반 FAT32 드라이브인 것처럼 nbd-client localhost /dev/nbd0파티션을 실행하고 마운트했습니다 ./dev/nbd0p1

관련 정보