Назад | Перейти на главную страницу

linux - как вывести список разделов определенного типа?

Я ищу способ перечислить все разделы определенного типа в Linux. (В частности: все системные разделы EFI).

Я знаю blkid может фильтровать по типу файловой системы: команда blkid -t TYPE=vfat возвращает правильные результаты, но не очень надежен: могут быть другие файловые системы vfat, которые не являются ESP, или могут быть ESP, отформатированные с другой файловой системой.

Итак, существует ли эквивалентная команда, которая может выводить список устройств, но фильтровать по типу раздела?

РЕДАКТИРОВАТЬ

Мне нужен список всех системных разделов EFI (или ESP). Эти разделы имеют тип раздела EF00 в gdisk или типе раздела ef в fdisk. Чаще всего они форматируются как vfat. Теперь я могу использовать blkid чтобы перечислить все разделы, отформатированные с помощью vfat, но это оставляет две проблемы:
a) Могут быть разделы EFI, не отформатированные с помощью vfat (или не отформатированные вообще), которые отсутствовали бы в списке, и
б) могут быть обычные файловые системы, отформатированные как vfat, которые будут включены в список неправильно. Так что соответствие на тип файловой системы это не выход. Вот почему я ищу что-то, что может соответствовать тип раздела, так EF00 или ef.

Если такой команды не существует, мне, вероятно, потребуется сделать следующее, чтобы получить нужную мне информацию:
- перечислить все диски
- для каждого диска узнать, есть ли на нем таблица разделов MBR или GPT
- перечислить таблицу разделов
- фильтровать результаты, чтобы печатать только разделы ESP

Это громоздко и подвержено ошибкам, поэтому, если эквивалент blkid существует, который может соответствовать типам разделов, я бы хотел его использовать.

lsblk -o +PARTTYPE включает в список UUID типа раздела. Тип UUID системного раздела EFI: C12A7328-F81F-11D2-BA4B-00A0C93EC93B, поэтому grepping для этого (в нижнем регистре или используйте -i flag с помощью 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