パーティションが暗号化されると、lsblk または同様のコマンドを使用してルートパーティション名を返します。

パーティションが暗号化されると、lsblk または同様のコマンドを使用してルートパーティション名を返します。

これは私のlsblk結果です。

NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
nvme0n1       259:0    0 465.8G  0 disk  
├─nvme0n1p1   259:1    0   512M  0 part  /efi
├─nvme0n1p2   259:2    0   420G  0 part  
│ └─cryptroot 254:0    0   420G  0 crypt /
└─nvme0n1p3   259:3    0  45.3G  0 part

「crypt」または「part」を事前に知らずに、「crypt」がマウントポイント「/」に関連付けられている「part」を検索する必要があります。

nvme0n1p2 /

単一のコマンドでこれを達成できますか?

答え1

lsblkパイプできるJSONを出力できます。jqjqさまざまな複雑なクエリを実行するために使用できるJSONプロセッサ。したがって、次のように動作する必要があります。

lsblk --json | \
  jq -r '.blockdevices[] | .children[] | select( .. | objects | .mountpoints[]? == "/" ) | .name'

たとえば、

$ lsblk
NAME                MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
nvme0n1             259:0    0 953.9G  0 disk  
├─nvme0n1p1         259:1    0   512M  0 part  /boot/efi
├─nvme0n1p2         259:2    0   3.9G  0 part  /boot
└─nvme0n1p3         259:3    0 949.5G  0 part  
  └─nvme0n1p3_crypt 253:0    0 949.5G  0 crypt /

$ lsblk --json | \
  jq -r '.blockdevices[] | .children[] | select( .. | objects | .mountpoints[]? == "/" ) | .name'
nvme0n1p3

関連情報