dm-verity를 사용하여 SD 카드 파티션을 확인하려고 합니다. 내가 해냈어
veritysetup format --hash-offset=24215552 /dev/sdb4 /dev/sdb4
동일한 장치의 지정된 오프셋에 해시 장치를 만듭니다.
이제 처음 10개의 데이터 블록을 확인하고 싶습니다.
veritysetup verify --hash-offset=24215552 --data-blocks=10 /dev/sdb4 /dev/sdb4 b49905b65942b0f54a2f70b09cd7bf2c8c15ce6924c7b8bae913ad8cc3f303fc
하지만 나는 다음을 얻습니다.
Verification failed at position 24215552.
Verification of data area failed.
해시 트리가 있어야 하는 영역의 유효성을 검사하려고 하는 이유를 전혀 모르겠습니다. 유효성을 검사하려는 데이터 블록 수를 지정하기 때문입니다(제 생각에는 10x1024Bytes의 오프셋에서 유효성 검사를 중지해야 합니다). 도움을 주셔서 미리 감사드립니다.
답변1
첫 번째 명령(해시 트리 생성 시)에서 데이터 블록 수를 지정하면 작동합니다.
해시할 블록 수를 지정하지 않으면 verity가 전체 장치를 해시할 것 같습니다. 그런 다음 지정된 오프셋에 해시 트리를 쓰면 디스크의 이 부분에 있는 블록이 분명히 변경됩니다. 따라서 유효성을 검사할 때 이전에 계산된 해시 값에는 더 이상 많은 데이터가 포함되지 않습니다.
그러면 유효성 검사 시 "data-blocks" 옵션이 지정되었음에도 불구하고 이 섹션을 확인하는 이유는 무엇입니까? 문서에 따르면 이 옵션은 검증에 사용할 수 없으며 해시 오프셋만 사용할 수 있고 슈퍼블록은 사용할 수 없습니다. 검증할 Zone에 대한 정보는 생성 시 해시 부분의 헤더에 유지되어야 합니다.