Можно настроить GRUB2 в режиме BIOS для загрузки с раздела без встраивания в область после MBR, но есть некоторые сложности:
Вы должны иметь /boot
на простом разделе (это может быть основной или логический раздел, но нельзя использовать программный RAID (md) или LVM). Отдельный раздел для /boot
не является абсолютно обязательным, но если /boot
хранится в корневой файловой системе, те же ограничения раздела будут применяться к корневому разделу файловой системы.
Файловая система, используемая для /boot
должна поддерживать режим установки черного списка. Наиболее часто используемые файловые системы Linux поддерживают это; важными исключениями являются btrfs
и xfs
(однако btrfs
имеет достаточно большую область загрузчика для встраивания туда core.img
, так что установка GRUB2 там все еще может работать). Опять же, если у вас нет отдельного раздела для /boot
, эти ограничения будут применяться к вашей корневой файловой системе.
Разработчики GRUB2 не рекомендуют режим установки списка блоков, потому что в этом режиме core.img
хранится в файловой системе /boot
в виде простого файла, но на самом деле доступ к нему осуществляется с использованием номеров секторов, хранящихся в загрузочном секторе раздела, сгенерированном GRUB (и в core.img
), поэтому выполнение любой файловой операции с этим файлом может прервать загрузку. Это еще одна причина иметь отдельный раздел /boot
при использовании этого режима - меньше шансов, что вы выполните какую-либо операцию с файловой системой, которая повлияет на core.img
.
Если /boot
находится на логическом разделе, у вас должны быть какие-то средства для запуска кода загрузчика из загрузочного сектора раздела - многие версии кода MBR поддерживают загрузку только с основных разделов. Одним из решений является использование кода MBR от Syslinux , который поддерживает загрузку даже из логических разделов.
Предположим, что ваш /boot
раздел - /dev/sda2
; тогда вы должны установить GRUB2 с помощью следующей команды:
grub-install --force /dev/sda2
Вы должны использовать опцию --force
потому что последние версии GRUB2 отказываются использовать режим Blocklist установки без него.
Затем вы должны использовать fdisk /dev/sda
чтобы отметить активный раздел 2.
Наконец, если в MBR был какой-то нестандартный загрузочный код (например, более старая установка GRUB), вам нужно установить код, который загружает загрузочный сектор из активного раздела - например, вы можете взять mbr.bin
из Syslinux:
dd bs=440 count=1 conv=notrunc if=mbr.bin of=/dev/sda
При использовании логического раздела для /boot
вы также можете рассмотреть возможность использования altmbr.bin
из Syslinux, который берет номер загрузочного раздела из байта в MBR вместо поиска активного раздела, чтобы любая операционная система, отличная от Linux, была установлена на вас. компьютер не будет сбит с толку логическим разделом, помеченным как активный.