zaLinux.ru

Как проверить, использует ли компьютер BIOS или UEFI; загрузчик GRUB или systemd-boot; таблицу разделов MBR или GPT


Как узнать, используется ли UEFI или GRUB?

Процесс загрузки состоит из следующих 4 шагов:

  1. Инициализация системы: UEFI или BIOS (POST)
  2. Запуск загрузчика (GRUB2 или systemd-boot)
  3. Инициализация ядра
  4. Запуск systemd, родителя всех процессов

Если вам что-то непонятнои из данных терминов, то теории смотрите в статьях:

Если на первом шаге используется 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:

  1. Если на компьютере используется EFI, но не используется загрузчик systemd-boot, значит используется загрузчик GRUB-EFI
  2. Если на компьютере не используется 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


Рекомендуемые статьи:

2 Комментарии

  1. redking

    Как узнать, используется ли на компьютере таблица разделов MBR или GPT

    lsblk -dno PTTYPE /dev/DISK

    или все диски что есть

    lsblk -dno NAME,PTTYPE
    
    1. Alexey (Автор записи)

      Спасибо, redking, как всегда, полезно! Добавил в статью.

Оставить комментарий

Ваш адрес email не будет опубликован.