배경 정보:
- 일부 .bin 파일을 SD 카드에 복사합니다(임베디드 장치에서 읽음, 파일 시스템 없음)
- 디버그 카드에서는 특정 세그먼트를 삭제(즉, 0으로 설정)하고 바이너리를 다른 세그먼트에 복사해야 합니다.
- 하위 프로세스 모듈을 사용하여 Python 스크립트에서 dd 호출(관련 dd 작업은 먼저 구문 분석하고 확인해야 하는 구성 스크립트에 의해 트리거되므로 실수로 삭제한 중요한 디스크를 지울 수 있으므로 사용자에게 작업 확인도 요청합니다) SD 카드라고 생각하세요)
질문:
bs=512이면 SD 카드에 쓰는 속도가 매우 느립니다. 큰 범위의 경우 bs=8M이 훨씬 빠릅니다.
어떻게든 "bs=512eek={n_small_blocks}"으로 변경한 다음 실제 쓰기를 위해 "bs=8M"으로 변경할 수 있습니까(올바른 위치를 검색한 후)?
다음 리소스를 찾았습니다. http://www.delorie.com/gnu/docs/textutils/coreutils_65.html
그러나 두 번의 호출이 필요한 이유와 가이드에서 주장하는 내용을 달성하기 위해 두 호출이 어떻게 함께 작동하는지 명확하지 않습니다.
고쳐 쓰다
여기서 답을 찾았습니다.
아래에서 내 전체 솔루션을 확인하세요.
답변1
해결책:
dd if='input_file.bin' \
of='/dev/sd{X}' \
bs={desired write block size} \
seek={start offset in bytes} \
count={write size in bytes} \
oflag=seek_bytes \
iflag=count_bytes
매뉴얼 페이지에서:
count_bytes
treat 'count=N' as a byte count (iflag only)
...
seek_bytes
treat 'seek=N' as a byte count (oflag only)
이로 인해 전송 속도가 느려지는 것처럼 보이지만 적어도 kB/s가 아닌 MB/s 단위입니다. 또한 웹에서 사용할 수 있는 매뉴얼 페이지(예: Google "man dd")에는 이러한 옵션이 포함되어 있지 않은 것 같으므로 시스템의 매뉴얼 페이지를 확인하십시오.