Hi Team,
I'm using dm-verity in yocto Linux 5.15 on the imx6dl board. On boot
when device mapper creates I'm getting a data block corrupted error,
Can you please help to fix this issue.?
Error log:
# cryptsetup 2.4.3 processing "veritysetup create rootfs
/dev/mmcblk3p3 /dev/mmcblk3p2
11757d96406b3407f8ab9109908c451a061c2fd1e66a38f830bb31ebc4cb5b51
--debug"
device-mapper: verity: 179:3: data block 13040 is corrupted
Buffer I/O error on dev dm-0, logical block 13040, async page read
device-mapper: verity: 179:3: data block 13040 is corrupted
Buffer I/O error on dev dm-0, logical block 13040, async page read
[ 6.115793] Buffer I/O error on dev dm-0, logical block 13040,
async page read
[ 6.130642] Buffer I/O error on dev dm-0, logical block 13040,
async page read
[ 6.348502] device-mapper: verity: 179:3: reached maximum errors
[ 7.966201] EXT4-fs (dm-0): unable to read superblock
mount: /new_root: can't read superblock on /dev/mapper/rootfs.
#Yocto #dm-verity #linux5.15 #initramfs #dm-verity-initramfs #veritysetup
Regards,
Aravinthkumar.
Hi
It seems hash mismatch between data and hash partition block when create mapper device, "/dev/mmcblk3p3 /dev/mmcblk3p2 11757d96406b3407f8ab9109908c451a061c2fd1e66a38f830bb31ebc4cb5b51".
Can you share your full log and whole running steps, we can help analyze dm-verity procedure.
Best regards
Harvey
Make sure that the disk has not been changed after the HASH tree is made. For example, such as mount, umount. Then pay attention, after making the hash tree, do not change the content in it.
Would you like to share your processing steps? If there is still a problem.
Best regards
Harvey
Thanks for your response. We have not done any changes on disk.
Below are partitions command executed for partitioning in MFG tool
sfdisk --force ${node} << EOF
${BOOT_ROM_SIZE}M,500M,0c
700M,800M,83
1600M,,83
EOF
Below command executed for Hash flash and Rootfs flash in MFG tool ucl file
<!-- create rootfsHashTree -->
<CMD state="Updater" type="push" body="$ while [ ! -e /dev/mmcblk%mmc%p2 ]; do sleep 1; echo waiting...; done ">Waiting for the partition ready</CMD>
<CMD state="Updater" type="push" body="send" file="firmware/core-image-base.rootfs.tar.bz2.metadata" ifdev="MX6D">HASH flash</CMD>
<CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk%mmc%p2 bs=4096 seek=2">HASH flash to board</CMD>
<!-- burn rootfs -->
<CMD state="Updater" type="push" body="$ mkfs.ext4 -F -E nodiscard /dev/mmcblk%mmc%p3">Formatting rootfs partition</CMD>
<CMD state="Updater" type="push" body="$ mkdir -p /mnt/mmcblk%mmc%p3"/>
<CMD state="Updater" type="push" body="$ mount -t ext4 /dev/mmcblk%mmc%p3 /mnt/mmcblk%mmc%p3"/>
<CMD state="Updater" type="push" body="pipe tar -jxv -C /mnt/mmcblk%mmc%p3" file="firmware/core-image-base.rootfs.tar.bz2" ifdev="MX6SL MX6SLL MX6D MX6Q MX6SX">Sending and writting rootfs</CMD>
Regards,
Aravinth
<CMD state="Updater" type="push" body="frf">Finishing rootfs write</CMD>
<CMD state="Updater" type="push" body="$ umount /mnt/mmcblk%mmc%p3">Unmounting rootfs partition</CMD>
<CMD state="Updater" type="push" body="$ echo Update Complete!">Done</CMD>