Я ищу способ перечислить все разделы определенного типа в 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