Я понял, почему скрипт ломался, при использовании команды чтения, которая у меня была
read -p 'prompt'
Вместо
read -p "prompt"
Когда я изменил его на двойные кавычки, скрипт работал нормально для начальной части, о которой я спрашивал в этом вопросе. Почему этот конкретный формат нарушил сценарий? ИДК, машина, на которой я ее запускаю, очень разборчива и имеет некоторые странные предпочтения форматирования в отношении вещей, которые должны работать и работают в других средах.
Ядро Linux, на самом деле единственная часть, обрабатывающая разделы, не будет пытаться обнаружить раздел внутри раздела, поэтому на этом попытка останавливается.
Просто создайте PV непосредственно на сопоставлении cryptlvm . Сопоставление устройств играет роль контейнера, а не раздела.
[...]
# cryptsetup open /dev/loop0 cryptlvm
# pvcreate /dev/mapper/cryptlvm
Physical volume "/dev/mapper/cryptlvm" successfully created.
# pvs /dev/mapper/cryptlvm
PV VG Fmt Attr PSize PFree
/dev/mapper/cryptlvm lvm2 --- 98.00m 98.00m
Затем вы можете перейти кvgcreate
:
# vgcreate testvg /dev/mapper/cryptlvm
Volume group "testvg" successfully created
# vgs testvg
VG #PV #LV #SN Attr VSize VFree
testvg 1 0 0 wz--n- 96.00m 96.00m
Обычно система (здесь, вероятно, сочетание ядра, событий и пользовательского пространства )должна обнаруживать и активировать виртуальную группу автоматически. Если вы переносите результат на другую систему, возможно, вам также придется возиться с pvscan
, vgscan
или vgchange -ay...
после открытия тома LUKS, я не проверял это дальше.
Если вы действительно хотите продолжить свою первоначальную попытку по неясным причинам, вы можете использоватьkpartx
для обнаружения разделов внутри чего-либо. Это создаст новое сопоставление устройств, после чего вы все равно будете использовать pvcreate
в сопоставлении устройств (, а не «простой» раздел ). Ни один распространенный дистрибутив Linux никогда не сделает этого, поэтому все это придется «обнаруживать» и обрабатывать вручную.