- Как проверить, использует ли компьютер BIOS или UEFI; загрузчик GRUB или systemd-boot; таблицу разделов MBR или GPT
- Как узнать, используется ли на компьютере БИОС или UEFI
- Как узнать, используется ли на компьютере загрузчик GRUB или systemd-boot
- Как узнать, используется ли GRUB-EFI или GRUB-PC
- Как узнать, используется ли на компьютере таблица разделов MBR или GPT
- Linux, как узнать текущий загрузочный диск
- 5 ответов 5
- How do I find out which boot loader I have?
- 5 Answers 5
- How can I see which is my boot partition?
- 3 Answers 3
- Boot partition
- Boot partition and EFI partition in UEFI mode
Как проверить, использует ли компьютер BIOS или UEFI; загрузчик GRUB или systemd-boot; таблицу разделов MBR или GPT
Если вам что-то непонятнои из данных терминов, то теорию смотрите в статьях:
Если на первом шаге используется BIOS, то на втором шаге, скорее всего, задействован загрузчик GRUB.
Если на первом шаге используется UEFI, то на втором шаге может использоваться как загрузчик GRUB, так и загрузчик systemd-boot.
Если у вас возник вопрос, используется ли на вашем компьютере UEFI или GRUB, то данный вопрос является неправильным, поскольку UEFI и GRUB не являются взаимоисключающими.
Современный GRUB2 может работать как с BIOS, так и с UEFI (с помощью efibootmgr). В Arch Linux поддержка BIOS и UEFI собрана в один пакет grub. В Debian и производных дистрибутивах GRUB представлен двумя версиями:
Как узнать, используется ли на компьютере БИОС или UEFI
Проще всего проверить, используется ли на компьютере UEFI. Если ответ будет отрицательным, то это означает, что на компьютере используется БИОС.
Для проверки поддержки компьютером UEFI выполните команду:
Если будет выведен список директорий, например такой:
То это означает, что данный компьютер поддерживает UEFI.
Если будет показано сообщение об ошибке:
ls: cannot access '/sys/firmware/efi': No such file or directory
То это означает, что данный компьютер работает с БИОСом.
Также вы можете проверить наличие переменных UEFI:
Если будет показан большой список переменных, значит компьютер был загружен при помощи UEFI.
Если будет выведено сообщение об ошибке
-bash: efivar: command not found
То значит компьютер работает на БИОС.
Также для проверки можно использовать утилиту efibootmgr:
Если она выведет информацию об UEFI Boot Manager, то значит используется UEFI.
Обратите внимание, что последний способ не является надёжным, поскольку утилита efibootmgr не является обязательной даже для компьютеров на UEFI. То есть если при использовании UEFI вы получили сообщение, что команда не найдена, то возможно компьютер поддерживает UEFI, но на нём не установлен пакет efibootmgr.
Ещё один способ — это утилита 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:
Если на загрузочном диске имеется раздел «EFI System», значит данный компьютер поддерживает UEFI.
Поскольку для UEFI необходим отдельный раздел «EFI System», то можно утверждать, что если на загрузочном диске отсутствует данный раздел, значит данный компьютер не поддерживает EFI, а работает с БИОСом.
Как узнать, используется ли на компьютере загрузчик GRUB или systemd-boot
Чтобы узнать, используется ли загрузчик systemd-boot, выполните команду:
Ответ довольно лаконичный: 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, можно проверить их наличие:
Вы можете найти другие способы определения GRUB, в частности поиск строки «GRUB» в загрузочной области диска, но данный способ применим только к GRUB-PC! С GRUB-EFI данный способ не работает.
Поскольку в Debian сейчас существует две разных версии GRUB-EFI и GRUB-PC, которые различаются весьма сильно, то рассмотрим, как определить каждую из них.
Как узнать, используется ли GRUB-EFI или GRUB-PC
Как уже было сказано, в Debian и производных существует две версии GRUB:
Они довольно сильно различаются, также различаются и методы их определения.
В Arch Linux и производных этого дистрибутива версии GRUB-EFI и GRUB-PC объеденины в один пакет.
Используя предыдущую информацию можно логически определить, используется ли GRUB-EFI или GRUB-PC:
- Если на компьютере используется EFI, но не используется загрузчик systemd-boot, значит используется загрузчик GRUB-EFI
- Если на компьютере не используется EFI, то, вероятно, используется загрузчик GRUB-PC
Также имеются более надёжные способы проверить, какая версия загрузчика GRUB используется на компьютере.
В первую очередь проверьте содержимое папки /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.
В предыдущей команде вам нужно правильно указать имя диска, имена дисков вы можете посмотреть с помощью команды:
Пример команды, если операционная система установлена на диск /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 NAME,PTTYPE /dev/nvme0n1
А следующая команда выведет типы таблиц разделов для всех дисков в операционной системе:
Чтобы проверить, какая таблица разделов на компьютере с помощью fdisk, выполните команду:
Обратите внимание на значение «Disklabel type»:
Эту же информацию можно получить с помощью утилиты cfdisk:
Обратите внимание на значение «Label»:
Linux, как узнать текущий загрузочный диск
У меня есть Linux Centos (5.0) машина с 2 дисками. Я сменил кабель SATA на один из дисков, когда понял, что в зависимости от того, какой слот SATA я использую, ОС запускается с sda или sdb. Проблема в том, что у меня есть ежедневные резервные копии от sda до sdb (просто копии), если случайно кто-то поменяет кабель SATA, я испорчу и перезапишу новые данные старыми данными. Единственное, что я знаю, это то, что текущий загрузочный диск — хороший. Как я могу точно знать, какой диск является текущим загрузочным диском (sda или sdb)? Дополнительная информация: У меня нет физического доступа к машине.
5 ответов 5
- это задача загрузчика — которая выполняется до запуска ядра — загружать ядро в память.
- все, что не входит в ядро, необходимое для загрузки, находится в initramfs (initrd), например, драйверы, ранние утилиты пользовательского пространства — загрузка это тоже работа загрузчика.
Теперь, после загрузки Linux, загрузочные скрипты или любой другой механизм, работающий под ядром, пытается смонтировать корневую файловую систему, чтобы у вас были другие функции, кроме ядра, а также подкачки и т.д. В основном все вещи в вашем /etc/fstab . Это то, что вас действительно волнует, и этот файл будет содержать необходимую информацию. Вы можете использовать UUID в /etc/fstab (и я полагаю, что большинство дистрибутивов уже используют их), поэтому с помощью пары grep и cut вы можете получить UUID отсюда, что вам нужно.
Пример (это, вероятно, можно сделать лучше): cat /etc/fstab | grep «/ » | cut -f 1 -d » «
И вы можете использовать вывод этого для blkid чтобы найти UUID вашей корневой файловой системы или любого другого раздела.
How do I find out which boot loader I have?
but this system does not have Grub bootloader and I want to find out which one its using. So any ideas?
wiki.debian.org/BootLoader lists all the boot loaders available in Debian, if you’d like to check each one. What arch is the system? Just leaving a comment as this isn’t a proper answer.
5 Answers 5
If you have the /etc/lilo.conf file then you are using LILO (LInux LOader) This means that if you type lilo for example you should see the command dialog for the lilo booter.
If you have the /boot/grub/ directory then you are using GRUB (Grand Unified Boot Loader) This means that you should be able to use all the grub file like grub-install,grub-reboot.
Here is a script to check inside the first sector of the hard drive for what boot manager it is using:
Assuming your hard drive is at SDA then:
sudo dd if=/dev/sda bs=512 count=1 2>/dev/null | strings | grep -Eoi ‘grub|lilo|acronis|reboot’
will tell you which bootloader you are using.
You can imagine the rest.
The list of boot loaders is here: http://en.wikipedia.org/wiki/Comparison_of_boot_loaders and http://wiki.debian.org/BootLoader (For Debian based distros)
Also if you want to SEE the real binary output then add -a to the grep part. For example:
sudo dd if=/dev/sda bs=512 count=1 2>&1 | grep -a GRUB which will show you the data in that first block.
Now with this new information you HAVE to find the boot manager you are using.
How can I see which is my boot partition?
I want to see which partition ( /dev/sdaX ) is my boot partition. I’m using Ubuntu Server, so I need a command line solution I tried this, but the output was ambiguous as two partitions were shown:
sudo fdisk -l | grep 'Linux' | cut -d' ' -f1 2>&1
3 Answers 3
Boot partition
In order to find the boot partition I would use the command df /boot for an installed Ubuntu system (standard Ubuntu, Ubuntu Server and the community flavours Kubuntu, Lubuntu . Xubuntu),
$ df /boot Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda8 103162996 30558020 67341528 32% /
or if you want a clean output with only the partition,
$ df /boot | grep -Eo '/dev/[^ ]+' /dev/sda8
Boot partition and EFI partition in UEFI mode
In order to find the boot partition and the EFI partition in an Ubuntu system booted in UEFI mode (both are use during boot),
$ test -d /sys/firmware/efi/ && echo efi || echo bios efi $ df /boot Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 303017780 3281532 284320780 2% /
You can use fdisk (as you have been trying) or parted to find the EFI partition,
$ sudo fdisk -lu|grep -i efi /dev/sda1 65535 1048559 983025 480M EFI System $ sudo parted -ls|grep -i efi 1 33.6MB 537MB 503MB fat32 EFI System Partition boot, esp
Parted does not provide the drive letter on the same line as the partition number, but you can use the full information and your eyes,
$ sudo parted -ls Model: WDC WD32 00BEKT-00PVMT0 (scsi) Disk /dev/sda: 320GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 33.6MB 537MB 503MB fat32 EFI System Partition boot, esp 2 537MB 316GB 315GB ext4 3 316GB 320GB 4161MB linux-swap(v1)