Simulating bad drive blocks with Device Mapper
Say you have a 0.5 MiB (= 1,024 sectors of 512 bytes each) drive at
/dev/loop1 and would like to boot it with QEMU while simulating a broken sector at position 256.
You can use
dm-error for this.
Write the following into a file and call it
0 256 linear /dev/loop0 0 256 1 error 257 767 linear /dev/loop0 257
Alternatively, you can make use of
dm-flakey to simulate a sector that is only sometimes broken, or that does something even worse such as drop any writes made to it. For example:
0 256 linear /dev/loop0 0 256 1 flakey /dev/loop0 256 5 5 257 767 linear /dev/loop0 257
Refer to the documentation of
dm-flakey on how exactly it works and what the parameters are that it expects.
Create a virtual device at
dmsetup create broken-drive <broken-drive.dm
You can now use it with QEMU just like any other drive or drive image.