我有一台大约二十年前的设备,它使用 IDE 硬盘驱动器作为存储。我想继续使用它,但它有一个 USB 1 接口,速度非常慢。
我可以取出硬盘并将其连接到速度更快的 USB 2.0 电缆,但是访问 FAT32 数据并不那么简单。
我拍摄了每路连接的驱动器前几兆字节的 dd 映像,发现唯一的区别是简单的字节交换。我将 conv=swab 选项与 dd 一起使用,并得到了相同的图像。十六进制表示:
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'
之后,我运行nbd-client localhost /dev/nbd0
并挂载该分区,/dev/nbd0p1
就像使用普通 FAT32 驱动器一样。