Linux

linux - 如何列出特定類型的分區?

  • February 11, 2021

我正在尋找一種方法來列出 Linux 上特定類型的所有分區。(具體來說:所有 EFI 系統分區)。

我知道blkid可以過濾文件系統類型:該命令blkid -t TYPE=vfat返回正確的結果,但不是很健壯:可能有其他不是 ESP 的 vfat 文件系統,或者可能有使用不同文件系統格式化的 ESP。

那麼,是否有一個等效的命令可以列出設備但過濾分區類型?

編輯

我需要所有 EFI 系統分區(或 ESP)的列表。這些分區EF00在 gdisk 中具有分區類型或ef在 fdisk 中具有分區類型。它們最常被格式化為 vfat。現在,我可以使用blkid列出所有使用 vfat 格式化的分區,但這會留下兩個問題:

a)可能存在未使用 vfat 格式化(或根本未格式化)的 EFI 分區,這些分區將從列表中失去,並且

b)可能存在格式為 vfat 的正常文件系統,這些文件系統會錯誤地包含在列表中。因此,匹配文件系統類型不是可行的方法。這就是為什麼我正在尋找可以匹配分區類型的東西,所以EF00ef

如果這樣的命令不存在,我可能需要執行以下操作來獲取我想要的資訊:

  • 列出所有磁碟

  • 對於每個磁碟,找出上面是否有 MBR 或 GPT 分區表

  • 列出分區表

  • 過濾結果以僅列印 ESP 分區

這既麻煩又容易出錯,所以如果blkid存在能夠匹配分區類型的等價物,我想使用它。

lsblk -o +PARTTYPE在列表中包含分區類型 UUID。EFI 系統分區類型 UUID 是C12A7328-F81F-11D2-BA4B-00A0C93EC93B,因此對此進行 grepping(小寫,或使用-i帶有 grep 的標誌)列出了您的 ESP。

**1)**對於特定類型的列表分區:

:~# lsblk -ln -o NAME,TYPE
...
sda          disk
sda1         part
sda1_crypt   crypt
vg0xa-system lvm
vg0xa-swap   lvm
vg0xa-tmp    lvm
vg0xa-var    lvm
vg0xa-usr    lvm
...

也可以看看:lsblk -ln -o NAME,PARTTYPE

**2)**或更具體地說:

:~# lsblk -ln -o NAME,TYPE | grep sda1_crypt
sda1_crypt   crypt

引用自:https://serverfault.com/questions/816519