Перейти к содержимому

Зачем нужен загрузчик grub lilo

  • автор:

Загрузчики LILO и GRUB

Добрый день, в данной статье пойдет речь о загрузчиках ОС. Очень часто возникает необходимость к ним обратиться: установлено две операциионные системы, не загружается операционная система.

Перед тем, как ядро запустит init, загрузчик операционной системы запускает ядро. Иногда вам нужно дать указания загрузчику, чтобы он загрузил различные ядра или операционные системы, и начал их работу в различных режимах. Это особенно важно при попытке починить систему, в которой есть не исправность, мешающая полной загрузке. Чтобы устранить такую проблему, вам понадобиться однопользовательский режим или альтернативное ядро.

Загрузчик операционной системы загружает образ ядра в память и передает контроль за CPU новому образу, по возможности снабжая его различными параметрами. Эти параметры — это простые текстовые строки вроде -s для загрузки в однопользовательском режиме и root=partition для использования partition как корневой файловой системы вместо заданной по умолчанию. Вы можете установить номер рабочего уровня как параметр, чтобы система загружалась на рабочий уровень отличный от заданного по умолчанию.

Перед тем как указать имя ядра и параметры, вам необходимо получить приглашение к загрузке. К сожалению, существует несколько различных загрузчиков операционных систем, и из-за того, что вы можете управлять поведением загрузчика, версии Linux могут изменять свое содержимое.

Следующие разделы расскажут вам, как получить приглашение к загрузке для того, чтобы ввести имя ядра и параметры. Если вы хотите узнать, как установить загрузчик операционной системы или сменить его конфигурацию, обратитесь к справочным страницам «man».

Загрузчик LILO.

LILO (загрузчик Linux) существует так же долго как и ядро Linux. Приглашение к загрузке LILO обычно заканчивается на boot:. Если вашу систему загружает LILO, то, скорее всего, во время загрузки вы видите причудливые картинки на экране, потому что так определено по умолчанию для многих версий, включая Red Hat Linux. Если вы увидите подобный экран, найдите часть, на которой написано «нажмите Ctrl+X для текстового режима». Если увидите это сообщение, нажмите Ctrl+X, чтобы получить приглашение к загрузке.

Если система по умолчанию в текстовом режиме, просмотрите приглашение, как только оно появится. Если приглашение гласит LILO и больше ничего, нажмите клавишу Shift, чтобы получить оставшуюся часть приглашения. С другой стороны, если вы сразу получите приглашение к загрузке, вам следует быть внимательным, так как, скорее всего, система загрузится, если вы ни чего не напечатаете за определенный промежуток времени.

Загрузчик LILO

Когда вы находитесь в приглашении к загрузке LILO, нажмите клавишу Tab, чтобы вывести список опций ядра и операционной системы. Имя ядра по умолчанию, скорее всего, что-то вроде ‘linux’. Чтобы загрузить это ядро без всяких опций, введите ‘linux’. Чтобы использовать опции, определите их после имени ядра:

linux option1 option2 .

Например, для запуска вашей системы в однопользовательском режиме, наберите это:

Или, чтобы загрузить linux в однопользовательском режиме с корневой системой как /dev/hda3, вместо обычных настроек по умолчанию, наберите это:

linux root=/dev/hda3 -s

Загрузчик GRUB.

GRUB расшифровывается как Grand Unified Bootloader, система, которая постепенно заменяет LILO. У GRUB есть много сногсшибательных особенностей, но что наиболее важно, так это его способность управлять файловыми системами, так что вы можете читать файлы, не загружая ядра.

Администраторы Wisegiiy Solaris и BSD говорили, что первое время они просто наслаждались этой способностью.

У GRUB есть меню интерфейса, в котором легко ориентироваться, но если вы хотите загрузить систему с другим ядром, изменить разбиение корня, или ввести дополнительные параметры ядра, вам следует попасть в мини-оболочку. Нажмите с в меню, чтобы получить это приглашение:

Загрузчик GRUB

grub>

Скажем, что вы хотите загрузить ядро в /boot/vmlinuz с корнем в /dev/hda3. Кроме того, в вашей системе все перемешано, так что вам нужен однопользовательский режим с опцией ядра -s. Наберите следующее в приглашении GRUB:

kernel /boot/vmlinuz root=/dev/hda3 -s

Строка root (hd0, 2) устанавливает понятие GRUB текущего раздела корня — то есть, файловую систему, где GRUB ожидает найти ядро, hdo — это первый накопитель на жестком диске (то есть первый диск, который найдет GRUB; например, устройство Linux /dev/hda если это ваш первый жесткий диск). Однако, 2 описывает третий раздел (/dev/hda3) из-за того, что нумерация разделов GRUB начинается с 0.

Слово kernel устанавливает образ ядра и его параметры, /boot/vmlinuz относится к файлу образа ядра на (hd0, 2) . К сожалению, GRUB не передает просто так информацию из предыдущей строки root () ядру, так что вам нужно всегда определять root=partition как параметр ядра.

Вы можете совместить строки root и kernel путем предопределения образа ядра с помощью разбиения корневого раздела GRUB. Следовательно, предыдущие две строки могли быть написаны как одна:

kernel (hd0, 2) /boot/vmlinuz root=/dev/hda3 -s

Последняя строка, boot, дает указания GRUB загрузить и выполнить образ ядра.

На определенных системах (особенно тех, что с дисками SCSI и готовыми ядрами), вам может понадобиться исходный диск RAM:

В случае, если вы пытаетесь загрузить сегмент с другим загрузчиком (таким как сегмент Windows) собственноручно с GRUB, попробуйте следующий набор команд, где partition использует синтаксис устройства GRUB, о котором было рассказано ранее (например, hd(0, 1)):

rootnoverify partition makeactive chainloader +1 boot

Другие загрузчики операционных систем.

Существует много других способов загрузить ядро, даже из DOS посредством LOADLIN или SYSLINUX, с помощью сети, или даже прямо из PC BIOS с помощью LinuxBIOS! Большинство других загрузчиков операционной системы работают как LILO, хотя некоторые не используют клавишу Tab, чтобы регистрировать опции. Скорее всего, вам нужно уделить внимание диагностике загрузки для получения этой информации. Однако, способ, которым вы задаете параметры обычно тот же самый, что и в LILO и GRUB.

9.1.1. Начальная загрузка: LILO и GRUB

Как известно, первая программа, которая выполняется после включения компьютера, — это BIOS. Она находит загрузочное устройство, считывает в память его первый (нулевой) сектор и передает на него управление. В этом секторе находится MBR (Master Boot Record) — главная загрузочная запись размером в 512 байт, в которой помещаются:

? таблица разделов диска (Partition Table) размером в 64 байта, описывающая четыре первичных раздела: номера их первого и последнего цилиндров, тип файловой системы и признак активности раздела;

? «волшебное число» (0xAA55), предназначенное для проверки, служит ли данный сектор загрузочным.

Формат MBR стандартен для всех операционных систем, а содержание области, отведенной под первичный загрузчик, может различаться. Этот загрузчик очень мал, поэтому перед ним стоит всего одна задача: найти на диске и считать в память код загрузчика следующего этапа, разворачивающего уже саму операционную систему, и передать ему управление.

В ОС Windows 9x первичный загрузчик передает управление на Boot Record — первый сектор того первичного раздела, который отмечен как активный (bootable — такой может быть только один). В более сложных системах из MBR запускается диспетчер загрузки (NTLoader для Windows NT, LILO и GRUB — для Linux), позволяющий выбрать вариант загрузки и даже загружаемую ОС. Такую гибкость диспетчеру обеспечивает возможность не ограничиваться тем объемом данных, который помещается в MBR, а читать необходимые данные из файлов на диске. Достигается эта гибкость ценой зависимости от файловой системы: существуют файловые системы (например, XFS и ReiserFS с включенным режимом оптимизации дискового пространства), с которыми ОС Linux может работать, но загружаться с них не может. Отдельный раздел /boot, о котором говорилось в п.1.2.2 в связи с «барьером 1024 цилиндра», необходим еще и поэтому: на нем должна быть создана файловая система ext2fs или ext3fs, а для всех остальных разделов файловые системы можно выбирать произвольно.

Стандартный загрузчик Linux — LILO (LInux LOader) — состоит из двух частей: первичного загрузчика LI и вторичного LO. LI располагается в MBR и только и умеет, что загружать LO, а тот уже передает управление ядру или вызывает другой первичный загрузчик (например, Windows 9x). LO находится в файле на диске (по умолчанию /boot/boot.b). О файловых системах LI не знает, поэтому карта размещения этого файла хранится в нем в виде «цилиндр/головка/сектор». Помещает ее туда утилита /sbin/lilo, которую нужно запускать после любого изменения LO или его конфигурационного файла /etc/lilo.conf.

У вторичного загрузчика LO есть собственная карта размещения файлов (по умолчанию /boot/map). По ней он ищет загружаемое ядро и образ виртуального диска, поэтому после любого изменения ядра или загружаемых модулей тоже обязательно запускать утилиту lilo.

Что такое виртуальный диск? Представьте себе загрузку Linux со SCSI-диска или другого устройства, драйвер которого не вкомпилирован в ядро, а подгружается в виде модуля. LILO сможет найти и прочитать с него файл образа ядра. Теперь ядру предстоит смонтировать корневую файловую систему. Чтобы сделать это, нужно подключить драйвер SCSI, а чтобы найти драйвер в /lib/modules, нужно смонтировать корневую файловую систему.

Похожая проблема возникает при первоначальной установке ОС Linux: для работы инсталлятора нужна файловая система со стандартными утилитами, а на диске ее еще нет. Обе проблемы решаются в Linux с помощью технологии initrd (INITial Ram Disk): вместе с ядром LILO загружает в память образ стартового диска, и ядро монтирует его как обычную файловую систему. В этой файловой системе находятся модули, необходимые для работы с нестандартными внешними устройствами и сетью, и утилиты для их подгрузки. Подключив модули, ядро отсоединяет виртуальный диск и монтирует настоящую корневую файловую систему.

Файл образа виртуального диска обычно называется /boot/initrd-. Если нестандартных устройств у вас нет или их драйверы встроены в ядро, то этот файл для загрузки не нужен.

Поведение LILO зависит от настроек в его конфигурационном файле /etc/lilo.conf. Ниже приведен пример такого файла. Символ #, как обычно, служит для комментариев.

Листинг 9.1. Примерный файл /etc/lilo.conf

# LILO version: 21.5

# использовать MBR первого жесткого диска первого

Grub

Wikipedia сообщает «GNU GRUB (англ. GRand Unified Bootloader) — загрузчик операционной системы от проекта GNU. GRUB позволяет пользователю иметь несколько установленных операционных систем и при включении компьютера выбирать одну из них для загрузки.» GRUB 2

Зачем нужен GRUB, если есть LILO/ELILO?

  • Поддержка модулей Raid, LVM файловых систем вкупе с интерактивным интерфейсом позволяют выбрать, что загружать откуда угодно в процессе загрузки (а не установки загрузчика).
  • Возможность multiboot (для загрузки, к примеру, XEN)

Как установить GRUB?

Установить дистрибутив с GRUB либо мигрировать загрузчик вручную.

apt-get install grub grub-install /dev/sda # заменить /dev/sda на то устройство, куда хочется установить GRUB grub-mkconfig -o /boot/grub/grub.cfg

Последний пункт выполняет генерацию конфига GRUB на основе шаблонов/скриптов в /etc/grub.d/. Редактировать полученный конфиг руками не рекомендуется т.к. он будет уничтожен следующей автогенерацией (выполняемой, к примеру, installkernel-ом).

Проверьте содержимое /etc/sysconfig/grub2: если там нет раскомментированной переменной GRUB_AUTOUPDATE_DEVICE (при смене загрузчика вручную не будет, т.к. она добавляется только alterator-grub), добавьте устройство или их список; если root/boot на md raid1, следует задать список дисков, на которых он размещён — например, не ‘/dev/md0 ‘, а ‘/dev/sdb /dev/sda ‘. После этого стоит выполнить grub-autoupdate.

Как передать свои параметры загрузки ядра?

Для однократного изменения таковых при загрузке GRUB следует:

  1. нажать «e» при курсоре на цели загрузки, соответствующей используемому экземпляру ALT;
  2. в открывшемся редакторе отыскать строку, начинающуюся с linux /boot/vmlinuz;
  3. в её конец дописать требуемые параметры, отделив пробелом;
  4. нажать F10.

Если нужно, чтобы эти параметры ядра передавались ядру при каждой загрузке, надо прописать их в /etc/sysconfig/grub2 и дать команду update-grub ; подробнее см. следующий пункт.

Где отредактировать параметры ядра?

Для постоянного применения иных параметров загрузки следует изменить конфигурацию загрузчика.

  • Параметры ядра содержатся в /etc/sysconfig/grub2
  • После редактирования этого файла нужно вызвать grub-mkconfig -o /boot/grub/grub.cfg

В /etc/sysconfig/grub2 поддерживаются следующие опции:

GRUB_AUTOUPDATE_CFG=true/false

обновлять ли конфиг файл из файлтриггера установки/удаления ядер (по умолчанию true)

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ваш_пункт1 ваш_пункт2"

опции загрузки ядра

GRUB_AUTOUPDATE_CFGNAME=/boot/grub/grub.cfg

имя автообновляемого конфигфайла. (по умолчанию /boot/grub/grub.cfg)

GRUB_VMLINUZ_SYMLINKS=true/false/default

добавлять ли симлинки в меню (добавлять, не добавлять, добавлять только /boot/vmlinuz [по умолчанию])

GRUB_VMLINUZ_FAILSAFE=true/false/default

добавлять ли failsafe-пункты (добавлять, не добавлять, добавлять только для /boot/vmlinuz [по умолчанию])

Как дописать свои собственные пункты меню?

  • Теоретически вам не должно хотеться этого делать. Расскажите (в рассылке sisyphus@, к примеру) зачем вам этого захотелось — возможно, придумается какой-то новый общий случай.
  • Если вам всё же хочется — допишите то, что считаете нужным в /etc/grub.d/40_custom

Например, если автоматически не обнаружилась Windows 10, может помочь такое описание пункта меню:

menuentry 'Windows 10'  search --fs-uuid --no-floppy --set=root chainloader ($root>)/EFI/Microsoft/Boot/bootmgfw.efi > 

Где UUID — UUID раздела с загрузчиком Windows. Узнать UUID раздела можно командой blkid

  • После редактирования этого файла нужно вызвать # grub-mkconfig -o /boot/grub/grub.cfg

Как выбрать ядро для загрузки по умолчанию (первый пункт grub)?

Командой installkernel , можно с переменной — к примеру, для текущего:

# installkernel $(uname -r)

Внесено предложение (altbug #38888) по добавлению к утилите update-kernel опции -d, —default — установка ядра по умолчанию. Будет ли оно реализовано — неизвестно.

Как выбрать то, что будет загружаться автоматом?

данный пункт очень похож на следующий, но на этот пункт есть ссылки

  • Выберите нужный вам пункт один раз при загрузке. savedefault должен сохранять ваш выбор на будущее.
  • Не нравится такое поведение? Отключите GRUB_SAVEDEFAULT в /etc/sysconfig/grub2
  • NB: в 2.00+ поведение изменилось, теперь дополнительные ядра для того же корня спрятаны в субменю «Advanced options».

Как отучить GRUB2 запоминать последний выбранный пункт?

Поведение Grub в плане запоминания пунктов зависит от переменных GRUB_DEFAULT и GRUB_SAVEDEFAULT в файле /etc/sysconfig/grub2 . GRUB_DEFAULT может содержать пункт меню для загрузки, либо служебное слово ‘saved’. В случае, если GRUB_DEFAULT=’saved’ (в ALT по-умолчанию), загрузка определяется содержимым файла /boot/grub/grubenv : утилита grub-set-default задаёт значение переменной saved_entry, утилита grub-reboot — значение переменной next_entry (используется однократно при следующей загрузке, потом очищается). Утилита grub-entries (altbug #36048) выводит список существующих вариантов (правда неполный с точки зрения допустимых вариантов написания: не выводятся смешанные варианты выбора и выбор на основе ID пунктов меню). В случае, если GRUB_SAVEDEFAULT=true (в ALT по-умолчанию), в пункты меню Grub добавляется команда savedefault, вызывающая изменение переменной saved_entry в файле /boot/grub/grubenv .

Способ 1

В файле /etc/sysconfig/grub2 изменить значение GRUB_SAVEDEFAULT на false, перегенерировать конфиг grub:

grub-mkconfig -o /boot/grub/grub.cfg

посмотреть имеющийся список вариантов загрузки утилитой grub-entries:

grub-entries
0 ALT p8 starter kit 1>0 Advanced options for ALT p8 starter kit>ALT p8 starter kit, vmlinuz 1>1 Advanced options for ALT p8 starter kit>ALT p8 starter kit, vmlinuz (recovery mode) 1>2 Advanced options for ALT p8 starter kit>ALT p8 starter kit, 4.14.97-un-def-alt0.M80P.1 1>3 Advanced options for ALT p8 starter kit>ALT p8 starter kit, 4.9.154-std-def-alt0.M80P.1 2 Memtest86+-5.01

задать нужный вариант загрузки:

grub-set-default "Advanced options for ALT p8 starter kit>ALT p8 starter kit, 4.14.97-un-def-alt0.M80P.1"
grub-set-default "1>2"

цифровой вариант лучше не использовать, так как номера строк изменяются при удалении и добавлении ядер, но его вполне можно использовать для указания варианта на следующую перезагрузку утилитой grub-reboot.

Внимание! Обнаружилась возможность внезапного изменения и буквенного названия altbug #37379

Способ 2

В файле /etc/sysconfig/grub2 изменить строку

GRUB_DEFAULT='saved'
GRUB_DEFAULT=n

где n номер пункта меню, либо на

GRUB_DEFAULT='точное название пункта меню'

Вариант с названием предпочтительнее, поскольку после обновления ядра количество пунктов в меню увеличится и нумерация некоторых пунктов изменится. Внимание! Нумерация пунктов начинается с 0. Список пунктов можно получить по команде

grep menuentry /boot/grub/grub.cfg | nl -v0

Например, пусть мы имеем следующие пункты меню (этот пример не учитывает текущее состояние с подменю; оставлено в качестве примера, удобнее использовать grub-entries, как в первом варианте):

# grep menuentry /boot/grub/grub.cfg | nl -v0 0 menuentry "ALT Linux 6.0.1 KDesktop" --class gnu-linux --class gnu --class os < 1 menuentry "ALT Linux 6.0.1 KDesktop (failsafe mode)" --class gnu-linux --class gnu --class os < 2 menuentry "ALT Linux 6.0.1 KDesktop, 3.0.8-std-def-alt0.M60P.1" --class gnu-linux --class gnu --class os < 3 menuentry "Windows Vista (loader) (on /dev/sda1)" --class windows --class os < 4 menuentry "Memtest86+-4.20" < #

и хотим, чтобы по умолчанию грузился Windows. Тогда в /etc/sysconfig/grub2 пишем

GRUB_DEFAULT='Windows Vista (loader) (on /dev/sda1)'

Потом в терминале от пользователя root:

grub-mkconfig -o /boot/grub/grub.cfg

Перезагрузка. Так как в GRUB_DEFAULT задано конкретное значение, а не 'saved', переменная GRUB_SAVEDEFAULT значения не имеет.

Как однократно выполнить загрузку произвольного пункта меню?

Иногда бывает удобно загрузиться с произвольным пунктом меню, но не менять текущий вариант. Это удобно, например, для тестирования нового ядра, когда надо иметь возможность вернуть старое ядро простой перезагрузкой. Для этого надо настроить Grub в соответствии со способом 1 предыдущего пункта, после чего можно задать пункт меню для следующей загрузки командой grub-reboot и запустить команду reboot. В момент начала загрузки конфигурация Grub автоматически вернётся в исходное состояние, и следующая загрузка компьютера произойдёт по-старому. Это аналогично использованию опции -R загрузчика Lilo.

Как загрузить Xen?

Xen грузится с помощью multiboot:

  • проверить, что вы используете grub2 >= 1.98-alt11
  • apt-get install xen xen-libs xen-runtime xen-hypervisor
  • запустить grub-mkconfig -o /boot/grub/grub.cfg
  • выбрать соответствующий пункт при загрузке (savedefault запомнит выбор на будущее)

Как включить работу с последовательным портом?

Примерно такими строчками в /etc/sysconfig/grub2:

GRUB_TERMINAL='console serial' GRUB_SERIAL_COMMAND='serial --unit=0 --speed=115200'

(см. также). Не забываем про grub-mkconfig.

Загрузка Linux и Windows c разных жестких дисков

Grub грузится с основного диска на котором Linux, Windows установлен на дополнительный жесткий диск. В 40_custom добавляем:

menuentry "Windows XP" < drivemap -s (hd1) $set root='(hd1)' chainloader +1 >

Если жестких дисков больше двух, играемся с hdX.

Как установить пароль на редактирование параметров ядра?

По умолчанию при загрузке любой пользователь может добавить/изменить параметры. Этого можно избежать, если установить пароль. Проще всего сделать это в центре управления системой. Для этого потребуется пакет alterator-grub и выполнить следующие действия:

  • Зайдите в ЦУС ( acc ), перейдите в режим эксперта, и в разделе "Система" откройте "Загрузчик GRUB".
  • Установите флажок "Установить или сбросить пароль" и введите необходимый пароль.

После нажатия на кнопку "Установить" (переконфигурация GRUB происходит автоматически) при запуске системы и попытке либо изменить параметры загрузки (клавиша Е), либо выбрать другой пункт загрузочного меню, будет требоваться логин/пароль. Логин по умолчанию сейчас boot (altbug #33098)

Примечание: Логин/пароль (последний в хэшированном виде) записываются в файл /etc/grub.d/50_password :

#!/bin/sh cat  set superusers="boot" password_pbkdf2 boot grub.pbkdf2.sha512.10000. EOF 

Также для ограничения загрузки (как с изменением параметров, так и без) можно добавить в файл /etc/grub.d/40_custom строки:

set superusers="user" password user password

Внимание! В этом случае не забудьте запретить чтение данного файла обычным пользователям (см. altbug #33099). А лучше всего используйте хэшированные пароли. Для этого следует воспользоваться password_pbkdf2 и командой grub-mkpasswd-pbkdf2 .

В случае дистрибутивов серии 6.0 отключить графику в /etc/sysconfig/grub2 (см. altbug #26198):

GRUB_TERMINAL_OUTPUT='console'

Для защиты паролем возможности загрузки именно с изменёнными параметрами придётся добавить в переменную CLASS в скрипте /etc/grub.d/10_linux опцию --unrestricted (внимание: этот скрипт по состоянию на версию 2.00-alt20 входит в пакет grub-common и не помечен как %config, поэтому будет перезаписан при обновлении!).

После подобных операций следует перегенерировать конфигурацию командой grub-mkconfig -o /boot/grub/grub.cfg (либо grub-mkconfig , в зависимости от дистрибутива). В случае использования alterator-grub - это не требуется.

Как переустановить GRUB?

После обновления до grub2-pc-2.00-alt1 операционная система может не загрузиться. В таком случае, необходимо иметь под рукой любой live disk. Далее:

  • Загружаемся с rescue-cd, например ALT Linux Rescue
  • Если использован ALT Linux Rescue:
mount-system chroot /mnt/system1
  • Если в используемом LiveCD нет mount-system, делаем самостоятельно (предполагая/зная, что корень на /dev/sda2):
mount /dev/sda2 /mnt mount -o bind /dev /mnt/dev mount -o bind /proc /mnt/proc mount -o bind /run /mnt/run mount -o bind /sys /mnt/sys chroot /mnt/ /bin/bash
  • Скачиваем предыдущую версию пакета:
  • Устанавливаем rpm
rpm -Uvh --oldpackage /home/andy/grub2-pc-1.99-alt9.i586.rpm
  • Переконфигурируем меню grub
grub-mkconfig -o /boot/grub/grub.cfg

После описанного выше, у меня загрузилась операционная система.

Как установить/восстановить загрузочную запись grub?

  • Если использован ALT Linux Rescue:
mount-system chroot /mnt/system1
  • Если в используемом LiveCD нет mount-system, делаем самостоятельно (предполагая/зная, что корень на /dev/sda2):
mount /dev/sda2 /mnt mount -o bind /dev /mnt/dev mount -o bind /proc /mnt/proc mount -o bind /run /mnt/run mount -o bind /sys /mnt/sys chroot /mnt/ /bin/bash

После того как проведены подготовительные действия и сделан сhroot, необходимо выполнить

grub-mkconfig -o /boot/grub/grub.cfg grub-install /dev/sda # заменить /dev/sda на то устройство, куда хочется установить GRUB 

Примечание: Если при выполнении команды grub-install , в режиме legaсy, вы получаете ошибку:

# grub-install /dev/sda grub-install: error: cannot find EFI directory

то выполните команду:

# grub-install --target=i386-pc /dev/sda 

если же используется EFI-режим, может потребоваться восстановить загрузчик в ESP-разделе (EFI System Partition), который монтируется в /boot/efi:

mount -a # достаточно смонтировать точку монтирования /boot/efi grub-efi-autoupdate

Что за жалобы про BIOS Boot Partition?

При загрузке под PC BIOS используется MBR и небольшая свободная область диска после него (31 килобайт до 63-го сектора) — соответственно первая стадия и core.img; при использовании UEFI ожидается GPT-разбивка загрузочного диска, при которой нет ни MBR, ни этой области. Отсюда возникает необходимость встроить вторую стадию загрузчика куда-то ещё. Таким местом и решили взять определённый в GPT тип раздела BIOS Boot Partition.

Инструмент разбивки дисков в составе инсталятора ALT Linux сделает такой раздел автоматически под UEFI, если разбиваете вручную или большой диск для BIOS — может потребоваться создать раздел минимального объёма (RED Hat рекомендует 1 мегабайт) с типом «bios boot partition» в терминологии alterator-vm либо меткой «bios_grub» в терминологии parted .

Во время загрузки Windows искажена картинка, что делать?

Если при загрузке, например, Windows 7 часть экрана содержит "шум", возможно, отдалённо напоминающий картинку заставки GRUB -- попробуйте выровнять используемые видеорежимы VESA:

  • в файле /etc/sysconfig/grub2 поменяйте GRUB_GFXMODE='800x600' на GRUB_GFXMODE='640x480'[1] ;
  • выполните команду update-grub или grub-mkconfig -o /boot/grub/grub.cfg

Вы можете сделать заставку текстовой, указав GRUB_GFXMODE='console'.

Где почитать ещё?

  • Викиучебник (debian-related документация) http://ru.wikibooks.org/wiki/Grub_2, с небольшими изменениями применимо и у нас.
  • http://people.apache.org/~skitching/MineOfInformation/linux/Booting_Linux_on_x86_with_Grub2.html (англ.)
  • GNU GRUB Manual 2.00 http://www.gnu.org/software/grub/manual/grub.html (англ.)
  • дистрибутивные вики: Arch, Frugalware, Gentoo

А также в операционной системе:

info grub info -f grub -n 'Simple configuration'
  • . ну и надо хотя бы назвать по имени os-prober

Примечания

  1. ↑ возможно, понадобится подобрать разрешение, например, 1024x768 -- см. тж. здесь и здесь

unixforum.org

Мясо должно быть холодным, женщина горячей, а пива МНОГО.

Спасибо сказали:
edoc_modnar Бывший модератор Сообщения: 1638 Статус: Форум больше не посещаю

Re: Lilo или Grub

Сообщение edoc_modnar » 13.12.2004 13:34

Одним словом - груб. Обоснование - на unix.ginras.ru

2Wind: если ты начинающий, то ни в жисть, лило и точка. Ибо меньше шансов получить неработоспособный загрузчик. В дцатый раз привожу фрагмент своей нетленки :

"LILO – наиболее распространенный и популярный загрузчик Linux. В процессе работы он не нуждается в каких-либо конфигурационных файлах. LiLo развивается уже очень долгое время, стоит хотя бы взглянуть на версию – ее номер уже давно перевалил за 20! Конфигурационный файл lilo.conf, располагающийся обычно в каталоге /etc/ требуется лишь для установки загрузчика. Таким образом, все меню загрузчика прописывается в сам загрузчик. Для установки LILO достаточно выполнить команду lilo или lilo /etc/lilo.conf (для явного указания конфигурационного файла). И если при редактировании lilo.conf пользователь допустит ошибку, то LILO просто не установится, указав при этом номер строки, содержащей ошибку. То есть риск того, что пользователь получит неработоспособный загрузчик, минимален. Именно в этом состоит громадное преимущество LILO перед другими загрузчиками. LILO может работать в двух режимах: текстовом и графическом. В графическом режиме в качестве фона загрузчика можно использовать картинку в формате png. Главный же минус LILO, который носит скорее эстетический характер – в названиях пунктов меню нельзя использовать пробелы, т.е. вместо пункта “Windows XP” следует указать “Windows_XP”. Стоит упомянуть о том, что для настройки Lilo создано множество графических программ, т.н. «frontends». Даже среди опций KDE Control Panel присутствует раздел «настройка Lilo»!
Grub завоевал себе популярность, как загрузчик для продвинутых пользователей, прежде всего из-за несколько нетривиального процесса установки и конфигурирования. Grub, как и LILO, может работать как в текстовом, так и в графическом режиме. Конфигурационный файл загрузчика /boot/grub/grub.conf, необходим во время работы, однако во время установки его наличие не проверяется. Grub автоматически не проверяет конфигурационный файл на ошибки, что легко может привести к неработоспособности загрузчика. О том, как установить GRUB, вы можете прочесть в статье «Gentoo Linux: почти совершенство» (см. МирПК CD за апрель 2004 г.). Несмотря на недостатки, Grub – наиболее динамично развивающийся open source загрузчик. Он уже давно используется, как основной загрузчик во многих дистрибутивах Linux: ASP Linux, Red Hat, Fedora."

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *