更改 LUKS UUID(无需 cryptsetup > 1.2)

更改 LUKS UUID(无需 cryptsetup > 1.2)

根据密码设置变更日志(1.2.0):

允许在 luksFormat 中明确设置 UUID,并允许稍后在 luksUUID(--uuid 参数)中更改它。

我的问题是,当前的 Debian 稳定版 (squeeze) 使用 1.1.3 - 如果我无法升级此版本,是否有办法更改 LUKS UUID?(也许使用其他程序)?

答案1

luks 格式看起来相当简单,而且是基于文本的,所以应该很容易操作。我花了大约 10 分钟写完,应该可以了。

首先备份你的 luks 标头!

#!/usr/bin/python
import sys
import uuid
import re

if __name__ == "__main__":
    haveuuid = False
    val = ""

    f = open(sys.argv[1], "r+")
    if len(sys.argv) > 2:
       if not re.match('[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}', \
                                                        sys.argv[2]):
          print "Not a valid UUID"
          sys.exit(1)
       else:
          val = sys.argv[2]
    else:
       # Create a new UUID
       val = uuid.uuid1()
    # Be happy this is LUKS
    if f.read(4) == "LUKS":
        # This is the start position of the UUID field.
        f.seek((32*5)+8, 0)

        f.write(val.__str__())
        f.close()
    else:
        print "Not a luks image"

运行它并python /path/to/script.py /path/to/luks/device 选择指定 UUID:python /path/to/script.py /path/to/luks/device abcdef01-abcd-abcd-abcd-abcdef012345

答案2

我不知道它是否有效,但您可以使用 cryptsetup >= 1.2.0 在 liveCD 上启动并更改卷的 UUID。

相关内容