我试图在Linux下的LTO-4驱动器上设置encryption密钥。 我成功地做了一次这样的事情,驱动器重新启动,现在我不能让驱动器再次接受密钥。
我正在使用的命令是这样的:
$ stenc -f /dev/nst0 -a 1 -e on -k test.key Provided key length is 256 bits. Key checksum is 7a43. Turning on encryption on device '/dev/nst0'... Sense Code: Illegal Request (0x05) ASC: 0x26 ASCQ: 0x00 Additional data: 0x00000000000000000000000000000000 Error: Turning encryption on for '/dev/nst0' failed! Usage: stenc --version | -g <length> -k <file> [-kd <description>] | -f <device> [--detail] [-e <on/mixed/rawread/off> [-k <file>] [-kd <description>] [-a <index>] [--protect | --unprotect] [--ckod] ] Type 'man stenc' for more information.
驱动器是惠普,所以我需要使用-a 1但是不同的值不会改变结果。 使用/dev/sg1代替具有相同的问题。
磁带是LTO-4,因此支持encryption:
$ mt-st -f /dev/nst0 status SCSI 2 tape drive: File number=0, block number=0, partition=0. Tape block size 0 bytes. Density code 0x46 (LTO-4). Soft error count since last status=0 General status bits on (41010000): BOT ONLINE IM_REP_EN
我运行了惠普磁带和磁带库工具,并用同样的磁带进行了一次encryptiontesting,并通过了testing,因此驱动器似乎可以设置按键,而不是通过stenc程序出于某种原因。
我发现一个SCSI手册,说ASC 0x26是“参数列表中的无效字段”,这并没有真正解释太多。
有没有其他人看过这个错误之前,或有任何想法如何让驱动器接受密钥?
像往常一样,几个小时的故障排除没有任何意义,但是在公共论坛上张贴问题立刻就会显示出问题。
stenc 1.0.7有一个bug,如果在空白磁带上使用了--detail ,会导致崩溃。 我试图联系作者,但不能抓住他。
看起来这个崩溃让驱动器处于不一致的状态,它拒绝接受更多的密钥。 修复bug,然后运行stenc --detail没有崩溃似乎已经解决了这个问题。 现在我可以任意设置任何密钥,并且没有更多的问题。
如果其他人遇到同样的问题, stenc-1.0.7/sec/scsiencrypt.cpp在第176行的stenc-1.0.7/sec/scsiencrypt.cpp中说明delete status; 。 你需要在这个下面直接添加一个新的行,读取status=NULL; 。 这修复了导致崩溃的双重错误。