Как узнать, используется ли UEFI или GRUB?
Процесс загрузки состоит из следующих 4 шагов:
- Инициализация системы: UEFI или BIOS (POST)
- Запуск загрузчика (GRUB2 или systemd-boot)
- Инициализация ядра
- Запуск systemd, родителя всех процессов
Если вам что-то непонятнои из данных терминов, то теорию смотрите в статьях:
- Что такое UEFI и чем он отличается от BIOS?
- Как происходит загрузка Linux
- Обновление загрузчика systemd-boot в /boot
- Работа с дисками при установке BlackArch (Arch): общая информация, конвертация и разметка MBR и GPT; общая информация и установка GRUB и EFI
Если на первом шаге используется BIOS, то на втором шаге, скорее всего, задействован загрузчик GRUB.
Если на первом шаге используется UEFI, то на втором шаге может использоваться как загрузчик GRUB, так и загрузчик systemd-boot.
Если у вас возник вопрос, используется ли на вашем компьютере UEFI или GRUB, то данный вопрос является неправильным, поскольку UEFI и GRUB не являются взаимоисключающими.
Современный GRUB2 может работать как с BIOS, так и с UEFI (с помощью efibootmgr). В Arch Linux поддержка BIOS и UEFI собрана в один пакет grub. В Debian и производных дистрибутивах GRUB представлен двумя версиями:
- grub-pc (BIOS версия)
- grub-efi (UEFI версия)
Как узнать, используется ли на компьютере БИОС или UEFI
Проще всего проверить, используется ли на компьютере UEFI. Если ответ будет отрицательным, то это означает, что на компьютере используется БИОС.
Для проверки поддержки компьютером UEFI выполните команду:
ls -l /sys/firmware/efi
Если будет выведен список директорий, например такой:
То это означает, что данный компьютер поддерживает UEFI.
Если будет показано сообщение об ошибке:
ls: cannot access '/sys/firmware/efi': No such file or directory
То это означает, что данный компьютер работает с БИОСом.
Также вы можете проверить наличие переменных UEFI:
efivar -l
Если будет показан большой список переменных, значит компьютер был загружен при помощи UEFI.
Если будет выведено сообщение об ошибке
-bash: efivar: command not found
То значит компьютер работает на БИОС.
Также для проверки можно использовать утилиту efibootmgr:
efibootmgr
Если она выведет информацию об UEFI Boot Manager, то значит используется UEFI.
Обратите внимание, что последний способ не является надёжным, поскольку утилита efibootmgr не является обязательной даже для компьютеров на UEFI. То есть если при использовании UEFI вы получили сообщение, что команда не найдена, то возможно компьютер поддерживает UEFI, но на нём не установлен пакет efibootmgr.
Ещё один способ — это утилита bootctl:
sudo bootctl
Couldn't find EFI system partition. It is recommended to mount it to /boot or /efi. Alternatively, use --esp-path= to specify path to mount point. System: Not booted with EFI
Обратите внимание на сообщение «Not booted with EFI», то есть компьютер использует БИОС.
Наконец, наличие EFI раздела можно проверить с помощью fdisk:
sudo fdisk -l
Если на загрузочном диске имеется раздел «EFI System», значит данный компьютер поддерживает UEFI.
Поскольку для UEFI необходим отдельный раздел «EFI System», то можно утверждать, что если на загрузочном диске отсутствует данный раздел, значит данный компьютер не поддерживает EFI, а работает с БИОСом.
Как узнать, используется ли на компьютере загрузчик GRUB или systemd-boot
Чтобы узнать, используется ли загрузчик systemd-boot, выполните команду:
sudo bootctl is-installed
Ответ довольно лаконичный: yes или no.
Ответ вы получите только в том случае, если ваш компьютер использует UEFI. В противном случае будет выведено:
Couldn't find EFI system partition. It is recommended to mount it to /boot or /efi. Alternatively, use --esp-path= to specify path to mount point.
Методом исключения можно определить, что если не используется загрузчик systemd-boot, то, скорее всего, используется загрузчик GRUB. Но как достоверно подтвердить, что используется именно загрузчик GRUB?
В системе с установленным GRUB должна присутствовать папка /boot/grub и файл /boot/grub/grub.cfg. Чтобы подтвердить, что используется загрузчик GRUB, можно проверить их наличие:
ls -l /boot/grub/grub.cfg
Вы можете найти другие способы определения GRUB, в частности поиск строки «GRUB» в загрузочной области диска, но данный способ применим только к GRUB-PC! С GRUB-EFI данный способ не работает.
Поскольку в Debian сейчас существует две разных версии GRUB-EFI и GRUB-PC, которые различаются весьма сильно, то рассмотрим, как определить каждую из них.
Как узнать, используется ли GRUB-EFI или GRUB-PC
Как уже было сказано, в Debian и производных существует две версии GRUB:
- grub-pc (BIOS версия)
- grub-efi (UEFI версия)
Они довольно сильно различаются, также различаются и методы их определения.
В Arch Linux и производных этого дистрибутива версии GRUB-EFI и GRUB-PC объеденины в один пакет.
Используя предыдущую информацию можно логически определить, используется ли GRUB-EFI или GRUB-PC:
- Если на компьютере используется EFI, но не используется загрузчик systemd-boot, значит используется загрузчик GRUB-EFI
- Если на компьютере не используется EFI, то, вероятно, используется загрузчик GRUB-PC
Также имеются более надёжные способы проверить, какая версия загрузчика GRUB используется на компьютере.
В первую очередь проверьте содержимое папки /boot/grub:
ls -l /boot/grub
Наличие в этой директории подпапки «x86_64-efi» говорит, что в данной операционной системе используется GRUB-EFI:
Наличие директории «i386-pc» говорит, что используется GRUB-PC:
Если вы получили сообщение об ошибке:
ls: cannot access '/boot/grub': No such file or directory
Оно означает, что в данной ОС не используется GRUB.
В репозиториях Debian и производных установочные пакеты GRUB-EFI и GRUB-PC отмечены как конфликтующие, то есть можно установить только один из них. Поэтому проверим установленные пакеты можно определить, какая именно версия GRUB исползуется:
dpkg -l | grep grub | grep ii
Установленные пакеты «grub-efi-amd64» и «grub-efi-amd64-bin» говорят о том, что используется GRUB-EFI:
Установленные пакеты «grub-pc» и «grub-pc-bin» говорят, что используется GRUB-PC:
Ещё один способ подтвердить, что в операционной системе используется загрузчик GRUB-PC это следующая команда:
dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings | grep GRUB
Если будет показан какой-либо вывод, значит используется GRUB-PC.
В предыдущей команде вам нужно правильно указать имя диска, имена дисков вы можете посмотреть с помощью команды:
fdisk -l
Пример команды, если операционная система установлена на диск /dev/vda:
dd bs=512 count=1 if=/dev/vda 2>/dev/null | strings | grep GRUB
На этом скриншоте видно, что в ОС используется GRUB-PC:
Для GRUB-EFI аналогичная команда отсутствует.
Как узнать, используется ли на компьютере таблица разделов MBR или GPT
Обычно компьютеры с EFI используют таблицу разделов GPT, а компьютеры с БИОС используют MBR, хотя возможны и исключения.
Следующая команда покажет тип таблицы разделов для конкретного диска:
lsblk -dno PTTYPE /dev/DISK
Например:
lsblk -dno NAME,PTTYPE /dev/nvme0n1
А следующая команда выведет типы таблиц разделов для всех дисков в операционной системе:
lsblk -dno NAME,PTTYPE
Чтобы проверить, какая таблица разделов на компьютере с помощью fdisk, выполните команду:
sudo fdisk -l
Обратите внимание на значение «Disklabel type»:
- gpt — означает GPT
- dos — означает MBR
Эту же информацию можно получить с помощью утилиты cfdisk:
cfdisk /dev/nvme0n1
Обратите внимание на значение «Label»:
- gpt — означает GPT
- dos — означает MBR
Связанные статьи:
- Как в Linux подключить новый диск, разметить и отформатировать разделы (60.3%)
- Как использовать Udev для обнаружения устройств и управления ими в Linux (53.1%)
- Постоянные имена для блочных устройств (53.1%)
- Диск Windows монтируется только для чтения (РЕШЕНО) (50.9%)
- Как исправить «Windows is hibernated, refused to mount» (РЕШЕНО) (50.9%)
- Как монтировать образы дисков для просмотра и редактирования файлов (РЕШЕНО) (RANDOM - 35.3%)
или все диски что есть
Спасибо, redking, как всегда, полезно! Добавил в статью.