Изменить LUKS UUID (без cryptsetup > 1.2)
Согласно журналу изменений cryptsetup (1.2.0):
Разрешить явную настройку UUID в luksFormat и разрешить изменить ее позже в luksUUID (параметр --uuid).
Моя проблема в том, что текущая стабильная версия Debian (squeeze) использует 1.1.3 - Есть ли способ изменить UUID LUKS, если я не могу обновить эту версию? (Может с другой программой)?
2 ответа
Формат luks выглядит довольно простым и основан на тексте, поэтому им легко манипулировать. Я написал это примерно через 10 минут, что должно сделать это.
Сделайте резервную копию ваших заголовков в первую очередь!
#!/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
Я не знаю, работает ли он, но вы можете загрузиться на liveCD с cryptsetup >= 1.2.0 и изменить UUID вашего тома.