web-dev-qa-db-ja.com

systemd bootを使用してラベルでcryptdeviceを指定するにはどうすればよいですか?

私はsystemdブートでArch Linuxを実行しています。 /boot/loader/entries/Arch.confでは、現在、次のような行でluks暗号デバイスを指定しています。

options        rw cryptdevice=/dev/sda1:ABC root=/dev/mapper/ABC

/dev/sda1の代わりにUUIDを使用することもできます。その場合、カーネルオプション行は次のようになります。

options        rw cryptdevice=UUID=1f5cce52-8299-9221-b2fc-19cebc959f51:ABC root=/dev/mapper/ABC

ただし、代わりにパーティションlabelまたはボリュームlabelまたは他の種類のラベルを使用できますか?もしそうなら、構文は何ですか?

2
MountainX

すでに新しいLUKS2形式を使用している場合は、ラベルを設定できます。

新しいLUKS2コンテナの場合:

# cryptsetup luksFormat --type=luks2 --label=foobar foobar.img
# blkid /dev/loop0
/dev/loop0: UUID="fda16145-822e-405c-9fe8-fe7e7f0ddb5e" LABEL="foobar" TYPE="crypto_LUKS"

既存のLUKS2コンテナの場合:

# cryptsetup config --label=barfoo /dev/loop0
# blkid /dev/loop0
/dev/loop0: UUID="fda16145-822e-405c-9fe8-fe7e7f0ddb5e" LABEL="barfoo" TYPE="crypto_LUKS"

ただし、より一般的なLUKS1ヘッダーのラベルを設定することはできません。


LUKS1では、上位レイヤーにのみラベルを設定できます。たとえば、GPTパーティションを使用している場合は、PARTLABELを設定できます。

# parted /dev/loop0
(parted) name 1 foobar                                                    
(parted) print
Model: Loopback device (loopback)
Disk /dev/loop0: 105MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name    Flags
 1      1049kB  104MB  103MB               foobar

これにより、パーティション1のパーティションラベルが「foobar」に設定されます。

PARTLABEL=foobarで識別するか、/dev/disk/by-partlabel/で見つけることができます

# ls -l /dev/disk/by-partlabel/foobar 
lrwxrwxrwx 1 root root 13 Oct 10 20:10 /dev/disk/by-partlabel/foobar -> ../../loop0p1

同様に、LVMの上でLUKSを使用する場合は、VG/LV名を使用できます。


ラベルの場合と同様に、各ラベルが複数回存在しないように特に注意してください。 UUIDが「普遍的に一意」であることを意図しているのには理由があります。間違ったデバイスを使用しようとすると、多くの問題が発生します。データの損失さえ引き起こす可能性があります(たとえば、cryptswapが起動時に間違ったデバイスをフォーマットする場合)。

1
frostschutz

cryptsetupcryptdevice にラベルを作成できます。/dev/disk/by-labelを調べて、一致することを確認します。そう

cryptdevice=LABEL={labelname}

同じ方法で として

root=LABEL=ROOT

ROOTラベルの付いたルートデバイスで機能します

1
danblack