Начальный загрузчик GRUB - полное руководство. Загрузчик операционной системы GRUB: настройка, описание. Установка и восстановление GRUB

Оригинал: GRUB 2: Heal your bootloader
Автор: Mayank Sharma
Дата публикации: 10 сентября 2015 г.
Перевод: А. Панин
Дата перевода: 16 декабря 2015 г.

Существует не так много вещей, которые могут раздражать настолько сильно, насколько раздражает неработоспособность системного загрузчика. Именно поэтому мы будем учиться использовать по максимуму все возможности системного загрузчика GRUB 2, поддерживая его в рабочем состоянии.

Для чего это нужно?

    GRUB 2 является самым популярным системным загрузчиком, используемым практически в каждом дистрибутиве Linux.

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

    GRUB 2 является расширяемым и гибким системным загрузчиком, поддерживающим множество параметров конфигурации.


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

Очевидно, что при использовании операционной системы на основе ядра Linux вы просто не сможете обойтись без системного загрузчика. При этом системный загрузчик является чуть ли не самым загадочным компонентом дистрибутива Linux. В рамках данного руководства мы познакомим вас с некоторыми из возможностей данного системного загрузчика и научим решать проблемы, связанные с его некорректным функционированием.

Наиболее важным компонентом системного загрузчика GRUB 2 является набор из текстовых файлов а также нескольких сценариев командной оболочки. Первый компонент данного набора, с которым стоит познакомиться, расположен в директории /etc/default/grub . Это текстовый файл, с помощью которого вы можете устанавливать значения переменных конфигурации и других параметров меню GRUB 2 (обратитесь к разделу "Пользовательские параметры меню загрузки").

Другой важной директорией, связанной с GRUB 2, является директория /etc/grub.d . В данной директории расположены все сценарии, формирующие описание каждого из элементов меню. Имена этих сценариев должны иметь префиксы, состоящие из двух цифр. Эти префиксы предназначены для установления порядка, в котором сценарии будут исполняться, а также порядка расположения соответствующих элементов в меню GRUB 2. В первую очередь осуществляется чтение файла 00_header , после чего происходит разбор файла конфигурации /etc/default/grub . После этого осуществляется формирование элементов меню для ядер Linux текущей системы с помощью сценария 10_linux . Данный сценарий создает один обычный элемент меню для загрузки для ядра Linux и один элемент меню для восстановления системы для этого же ядра Linux из раздела /boot .

Далее исполняются сценарии для поиска других операционных систем, такие, как 30_os-prober и 40_custom . Сценарий os-prober создает элементы меню для других ядер и других операционных систем, которые обнаруживаются на других разделах жестких дисков. Он способен распознать установленные системы Linux, Windows, BSD и Mac OS X. Если вы используете слишком экзотическую для сценария os-prober конфигурацию разделов вашего жесткого диска, препятствующую распознаванию установленного дистрибутива, вы можете добавить описание данного дистрибутива в сценарий 40_custom (обратитесь к разделу "Пользовательские элементы меню загрузки").

GRUB 2 не требует ручного редактирования файлов конфигурации для изменения параметров загрузки системы: вместо этого он позволяет генерировать файл конфигурации /boot/grub/grub.cfg с помощью утилиты grub2-mkconfig . Данная утилита позволяет осуществлять разбор сценариев из директории /etc/grub.d , а также файла конфигурации /etc/default/grub для автоматического формирования описания параметров загрузки системы.

Восстановление работоспособности системного загрузчика в графическом режиме

Подавляющее большинство проблем, связанных с системным загрузчиком GRUB 2, может быть просто решено путем нажатия единственной кнопки приложения Boot Repair. Это изящное, простое приложение имеет интуитивный пользовательский интерфейс и позволяет сканировать и распознавать различные типы дисков и схем дисковых разделов, а также может выяснять расположение и корректно идентифицировать установленные в рамках этих разделов операционные системы. Утилита может работать как на обычных компьютерах с основными загрузочными записями (Master Boot Record, MBR), так и на новых компьютерах с UEFI и таблицами разделов GUID (GUID Partition Table, GPT).

Простейший способ использования утилиты Boot Repair заключается в ее установке в рамках Live-сессии дистрибутива Ubuntu. Запустите live-версию дистрибутива Ubuntu на машине с неработоспособным системным загрузчиком и установите приложение Boot Repair, в первую очередь добавив соответствующий репозиторий PPA с помощью команды:

Sudo add-apt-repository ppa:yannubuntu/Boot Repair

После этого обновите список репозиториев с помощью команды:

Sudo apt-get update

Наконец, вы можете установить приложение с помощью команды:

Sudo apt-get install -y Boot Repair

После окончания процесса установки вы сможете запустить приложение. Оно просканирует ваш жесткий диск перед отображением пользовательского интерфейса, который состоит из нескольких кнопок. Для выполнения предложенных приложением действий вы можете просто нажать на кнопку "Recommended Repair", которая позволит исправить большинство проблем, связанных с системным загрузчиком. После восстановления вашего системного загрузчика утилита выведет ссылку, которую следует запомнить. При переходе по этой ссылке вы сможете ознакомиться с детальной информацией о ваших дисках, включая их разделы, а также с содержимым важных файлов конфигурации GRUB 2, таких, как файлы из директории /etc/default/grub и файл /boot/grub/grub.cfg . Если приложению не удастся восстановить ваш системный загрузчик, вы сможете разместить данную ссылку на форуме вашего дистрибутива для того, чтобы посетители смогли ознакомится со схемой разделов вашего жесткого диска и дать полезные советы.

Восстановление системного загрузчика

Проблемы, связанные с системным загрузчиком GRUB 2, могут привести систему в различные состояния. Текст, выводимый на экран вместо меню системного загрузчика, указывает на текущее состояние системы. В том случае, если система перестала загружаться с выводом приглашения grub> , можно сделать вывод о том, что были загружены модули GRUB 2, но не удалось загрузить файл конфигурации grub.cfg . Данное приглашение выводится в полнофункциональной командной оболочке системного загрузчика, с помощью которой вы можете выполнить достаточно много действий, направленных на загрузку системы. Если вы видите приглашение grub rescue> , то несложно сделать вывод о том, что системный загрузчик не может обнаружить свои модули, а также файлы с описанием параметров загрузки системы. Однако, в том случае, если на экране вашего компьютера выводится лишь слово "GRUB", можно сделать неутешительный вывод о том, что системному загрузчику не удалось обнаружить даже базовую информацию, которая обычно хранится в основной загрузочной записи.

Вы можете исправить данные неполадки GRUB 2, воспользовавшись либо Live CD любого дистрибутива, либо командной оболочкой GRUB 2. Если вам повезет, и ваш системный загрузчик выведет приветствие grub> , вы сможете использовать всю мощь встроенной командной оболочки GRUB 2 для исправления любых ошибок.

Следующие команды будут работать как в случае вывода приглашения grub> , так и в случае вывода приглашения grub rescue> . Команда set pager=1 позволяет задействовать механизм прокрутки текста для предотвращения его автоматической прокрутки. Также вы можете использовать команду ls , которая позволяет вывести список всех видимых GRUB 2 разделов жесткого диска аналогичным образом:

Grub> ls (hd0) (hd0,msdos5) (hd0,msdos6) (hd1,msdos1)

Как вы видите, данная команда позволяет вывести информацию о схеме таблицы разделов жесткого диска наряду с информацией о самих разделах.

Кроме того, вы можете использовать команду ls по отношению к каждому разделу жесткого диска для поиска раздела с вашей корневой файловой системой:

Grub> ls (hd0,5)/ lost+found/ var/ etc/ media/ bin/ initrd.gz boot/ dev/ home/ selinux/ srv/ tmp/ vmlinuz

Вы можете отбросить идентификатор типа раздела msdos при записи имени раздела. Также в том случае, если вы пропустите слэш в конце имени раздела и выполните, к примеру, такую команду, как ls (hd0,5) вы получите информацию о разделе, включающую данные о типе файловой системы, ее общем размере и времени последней модификации. Если на вашем жестком диске создано несколько корневых разделов, вы можете прочитать содержимое файла /etc/issue с помощью команды cat с целью идентификации дистрибутива аналогичным образом: cat (hd0,5)/etc/issue .

Если предположить, что вы нашли нужную корневую файловую систему в разделе (hd0,5) , вы должны убедиться в том, что данная файловая система содержит директорию /boot/grub и образ ядра Linux с именем, аналогичным vmlinuz-3.13.0-24-generic , который вы желаете загрузить. Теперь для загрузки системы вам остается ввести следующие команды:

Grub> set root=(hd0,5) grub> linux /boot/vmlinuz-3.13.0-24-generic root=/dev/sda5 grub> initrd /boot/initrd.img-3.13.0-24-generic

Первая команда передает системному загрузчику GRUB 2 информацию о разделе жесткого диска, на котором располагаются файлы дистрибутива для загрузки. Вторая команда передает ему же информацию о расположении файла образа ядра в рамках указанного раздела жесткого диска, а также информацию о расположении корневой файловой системы. Последняя строка позволяет указать расположение файла начального образа диска, содержимое которого хранится в памяти и используется в процессе загрузки ядра. Вы можете использовать функцию автозавершения, которая позволит сохранить достаточно вашего времени и сил при вводе имен файлов ядра и начального образа диска.

Ввод данных строк должен завершаться вводом после следующего приветствия grub> команды boot , инициирующей загрузку указанной операционной системы силами GRUB 2.

Вши действия должны немного отличаться в том случае, если вы столкнетесь с приветствием grub rescue> . Так как системный загрузчик не смог обнаружить и загрузить любой из необходимых модулей, вам придется загрузить их вручную:

Grub rescue> set root=(hd0,5) grub rescue> insmod (hd0,5)/boot/grub/normal.mod grub rescue> normal grub> insmod linux

Очевидно, что как и раньше после результативного использования команды ls для поиска корневого раздела Linux, вам придется отметить этот раздел с помощью команды set . Далее нужно загрузить модуль normal , после чего будет осуществлен возврат в стандартный режим с приветствием grub> . Следующая команда позволяет загрузить модуль linux в том случае, если он не был загружен автоматически. После загрузки данного модуля вы можете преступить к передаче системному загрузчику информации о расположении файлов образа ядра и начального образа диска и инициировать загрузку дистрибутива с помощью команды boot .

После успешной загрузки дистрибутива не стоит забывать о необходимости повторной генерации файла конфигурации GRUB 2 с помощью команды:

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

Вам также придется установить копию системного загрузчика в основную загрузочную запись с помощью команды:

GRUB 2 и UEFI

Машины с прошивками UEFI (т.е., практически все машины, продающиеся в течение нескольких последних лет) добавили новый уровень сложности в процесс диагностики проблем системного загрузчика GRUB 2. Несмотря на то, что процедура восстановления работоспособности системного загрузчика GRUB 2, установленного на машине с прошивкой UEFI, не значительно отличается от процедуры восстановления работоспособности этого же загрузчика на машине без прошивки UEFI, в новые версии прошивок вносятся различные изменения, которые являются причиной различных результатов процесса восстановления работоспособности системного загрузчика.

В системах на основе UEFI вам не придется устанавливать что-либо в основную загрузочную запись. Вместо этого вы должны будете установить загрузчик Linux с поддержкой EFI в системный раздел EFI (EFI System Partition, ESP) и выбрать данный загрузчик в качестве используемого по умолчанию с помощью такого инструмента, как efibootmgr в Linux или bcdedit в Windows.

На данный момент системный загрузчик GRUB 2 должен корректно устанавливаться в процессе установки любого из популярных дистрибутивов Linux, что позволяет последнему успешно сосуществовать с ОС Windows 8. Однако, в том случае, если вы получите в результате неработоспособный системный загрузчик, вы сможете восстановить работоспособность системы с помощью live-образа дистрибутива Linux. В процессе загрузки live-образа дистрибутива вам следует убедиться в том, что вы осуществляете загрузку в режиме UEFI. Меню загрузки компьютера должно содержать по два элемента для каждого из съемных носителей - для загрузки в обычном режиме и в режиме UEFI. Используйте последний режим для организации доступа к переменным EFI посредством файлов из директории /sys/firmware/efi/ .

Из live-окружения следует смонтировать корневую файловую систему неудачно установленного дистрибутива таким образом, как описано в данном руководстве. Вам также придется смонтировать системный раздел EFI (ESP). Если предположить, что данному разделу соответствует файл устройства /dev/sda1 , то вы можете смонтировать данный раздел с помощью следующей команды:

Sudo mount /dev/sda1 /mnt/boot/efi

После этого необходимо загрузить модуль ядра efivars с помощью команды modprobe efivars перед созданием окружения chroot с корневой файловой системой неудачно установленного дистрибутива таким образом, как описано в данном руководстве.

Теперь в том случае, если вы используете дистрибутив Fedora, вы можете переустановить системный загрузчик с помощью следующей команды:

Yum reinstall grub2-efi shim

После нее следует выполнить команду для генерации нового файла конфигурации системного загрузчика:

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

Пользователи дистрибутива Ubuntu могут выполнить эту же операцию с помощью команды:

Apt-get install --reinstall grub-efi-amd64

После восстановления системного загрузчика следует выйти из окружения chroot, отмонтировать все смонтированные разделы жесткого диска и перезагрузить компьютер, перейдя в меню GRUB 2.

Для деактивации сценария из директории /etc/grub.d вам нужно всего лишь убрать бит исполнения, с помощью команды, аналогичной команде chmod -x /etc/grub.d/20_memtest86+, которая позволяет убрать строку "Memory Test" из меню загрузки

Дружище, где мой GRUB?

Положительной чертой системного загрузчика GRUB 2 является возможность его переустановки при каждой необходимости. Таким образом, в том случае, если вы потеряете системный загрузчик GRUB 2, к примеру, после того, как ОС Windows заменит его на свой собственный загрузчик, вы сможете восстановить GRUB 2, выполнив несколько операций в live-окружении. Если предположить, что вы установили дистрибутив в раздел жесткого диска, представленный файлом устройства /dev/sda5 , вы можете переустановить системный загрузчик GRUB 2, в первую очередь создав директорию для монтирования корневой файловой системы дистрибутива с помощью команды:

Sudo mkdir -p /mnt/distro

После этого следует смонтировать файловую систему из этого раздела с помощью команды:

Mount /dev/sda5 /mnt/distro

После этого вы сможете переустановить системный загрузчик GRUB 2 с помощью команды:

Grub2-install --root-directory=/mnt/distro /dev/sda

Данная команда позволит перезаписать информацию в области основной загрузочной записи устройства /dev/sda , содержащего файловую систему установленного дистрибутива Linux, а также такие файлы системного загрузчика GRUB 2, как grubenv и device.map .

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

Grub2-mkconfig

Перед выполнением данной команды следует убедиться в том, что разделы с корневыми файловыми системами установленных дистрибутивов, которые не представлены в меню загрузки, смонтированы. Если дистрибутив, который вы желаете добавить в меню загрузки, работает с файловыми системы /root и /home , расположенными на отдельных разделах жесткого диска, перед исполнением команды grub2-mkconfig следует смонтировать лишь файловую систему /root .

Хотя системный загрузчик GRUB 2 и может определять большинство дистрибутивов, попытка добавления в меню системного загрузчика записи для дистрибутива Fedora при работе с дистрибутивом Ubuntu требует одного дополнительного шага. Если вы использовали стандартные настройки в процессе установки дистрибутива Fedora, силами его установщика будут созданы разделы LVM. В этом случае перед вызовом сценария os-prober из комплекта поставки системного загрузчика GRUB 2 для добавления дистрибутива Fedora в меню загрузки вам в первую очередь придется установить драйвер lvm2 с помощью системы управления пакетами программного обеспечения дистрибутива, воспользовавшись аналогичной командой:

Sudo apt-get install lvm2

Быстрое исправление

Если исполнение команды grub2-install не приводит к каким-либо положительным изменениям и вы не можете загрузить дистрибутив Linux, вам придется полностью переустановить и перенастроить системный загрузчик. Для выполнения этой задачи можно воспользоваться полезной утилитой chroot , которая позволяет временно заменить корневую директорию live-окружения на корневую директорию установленной системы Linux, работоспособность которой необходимо восстановить. Вы можете использовать для этой цели Live CD любого дистрибутива Linux, на котором присутствует утилита chroot . Однако, вам следует убедиться в том, что вы используете Live CD для той же архитектуры центрального процессора, что и установленный на жестком диске дистрибутив. Таким образом, если вы желаете использовать утилиту chroot для восстановления работоспособности 64-битной установленной системы, вам понадобится Live CD для 64-битных систем.

После загрузки Live-окружения в первую очередь следует проверить разделы жесткого диска машины. Используйте команду fdisk -l для вывода списка всех разделов жесткого диска и выясните номер раздела, на котором установлен системный загрузчик GRUB 2, работоспособность которого вы желаете восстановить.

Давайте предположим, что вам нужно восстановить работоспособность системного загрузчика дистрибутива, установленного на разделе жесткого диска, который представлен файлом устройства /dev/sda5 . Откройте эмулятор терминала и смонтируйте этот раздел:

Sudo mount /dev/sda5 /mnt

Теперь вам придется смонтировать директории, которые должны быть доступны системному загрузчику GRUB 2 для корректного выявления других установленных на компьютере операционных систем:

$ sudo mount --bind /dev /mnt/dev $ sudo mount --bind /dev/pts /mnt/dev/pts $ sudo mount --bind /proc /mnt/proc $ sudo mount --bind /sys /mnt/sys

Теперь вы можете покинуть live-окружение и перейти в окружение установленного на разделе, представленном файлом устройства /dev/sda5 , дистрибутива с помощью утилиты chroot:

$ sudo chroot /mnt /bin/bash

Все готово для установки, проверки и обновления системного загрузчика GRUB 2. Как и ранее, для переустановки системного загрузчика следует использовать команду:

Sudo grub2-install /dev/sda

Ввиду того, что команда grub2-install не затрагивает файл конфигурации grub.cfg , вам придется создать его вручную с помощью следующей команды:

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

Эта последовательность команд должна помочь исправить проблемы системного загрузчика. Теперь на вашей машине будет установлена новая копия системного загрузчика GRUB 2 со списком всех установленных на ней операционных систем и дистрибутивов. Перед тем, как перезагрузить компьютер, следует покинуть окружение chroot и отмонтировать все использованные файловые системы в следующем порядке:

$ exit $ sudo umount /mnt/sys $ sudo umount /mnt/proc $ sudo umount /mnt/dev/pts $ sudo umount /mnt/dev $ sudo umount /mnt

После этого вы можете безопасно перезагрузить машину, которая должна вновь вернуться под контроль системного загрузчика GRUB 2, находящегося под вашим полным контролем!

Пользовательские параметры меню загрузки

Системный загрузчик GRUB 2 использует большое количество конфигурационных переменных. В данном разделе описаны некоторые из этих переменных, которые вы скорее всего захотите модифицировать в процессе рассмотрения содержимого файла конфигурации /etc/default/grub . Переменная GRUB_DEFAULT позволяет указать элемент меню загрузки, который будет выбран по умолчанию. в качестве ее значений могут использоваться числа, такие, как число 0, соответствующее первому элементу меню, а также строка "saved" позволяющая автоматически выбирать элемент меню, использованный в процессе прошлой загрузки компьютера. Переменная GRUB_TIMEOUT позволяет задать длительность периода ожидания перед загрузкой с использованием выбранного по умолчанию элемента меню, а переменная GRUB_CMDLINE_LINUX позволяет задать список параметров, который будет передаваться каждому из ядер Linux при использовании соответствующих элементов меню загрузки.

В том случае, если переменная GRUB_DISABLE_RECOVERY имеет значение true , элементы меню загрузки для восстановления системы не будут генерироваться. Эти элементы позволяют загружать дистрибутивы в однопользовательском режиме, в котором вы можете использовать любые доступные инструменты с интерфейсом командной строки для восстановления системы. Еще одной полезной переменной является переменная GRUB_GFXMODE , позволяющая задать разрешение экрана, которое будет установлено при показе меню загрузки. В качестве значения данной переменной может использоваться любое описание разрешения, поддерживаемого вашей графической картой.

Пользовательские элементы меню загрузки

Если вы желаете добавить элемент в меню вашего системного загрузчика, вы должны добавить соответствующий станс в сценарий с именем 40_custom . Вы можете использовать данный элемент меню загрузки, к примеру, для загрузки дистрибутива Linux, установленного на съемном диске с интерфейсом USB. Если предположить, что раздел с дистрибутивом на вашем съемном диске с интерфейсом USB представлен файлом устройства /dev/sdb1 , а файл образа ядра vmlinuz и файл initrd находятся в поддиректории корневой директории (/), вам придется добавить следующий станс в файл сценария 40_custom:

Menuentry "Linux on USB" { set root=(hd1,1) linux /vmlinuz root=/dev/sdb1 ro quiet splash initrd /initrd.img }

Для лучшей совместимости вы можете использовать идентификатор UUID раздела жесткого диска вместо идентификаторов устройства и раздела следующим образом:

Set root=UUID=54f22dd7-eabe

Воспользуйтесь командой sudo blkid для получения всех идентификаторов UUID присоединенных к системе жестких дисков и их разделов. Аналогичным образом вы можете добавить в меню загрузки записи, соответствующие любым идентифицированым сценарием os-prober, но установленным на жестком диске дистрибутивам, конечно же, если вы знаете о том, на каком диске установлен каждый из дистрибутивов и по какому пути находятся его файлы образа ядра и образа начальной файловой системы.

Ubuntu, как и многие другие дистрибутивы Linux в качестве загрузчика системы используют GRUB2. Если GRUB2 «ломается», например, если вы установите Windows после установки Ubuntu, либо при перезаписи MBR - загрузить Ubuntu вы не сможете.

GRUB2 можно запросто починить с помощью Live CD Ubuntu или USB-флешки. Этот процесс отличается от восстановления загрузчика GRUB Legacy на старых дистрибутивах Linux.

Описанный ниже процесс должен работать со всеми версиями Ubuntu. Он был протестирован на версиях Ubuntu 16.04 и Ubuntu 14.04.

Способ с использованием графического интерфейса: Boot Repair###

Boot Repair - приложение с графическим интерфейсом, с помощью которого можно починить GRUB2 всего одним щелчком мыши. Идеальное решение для большинства пользователей.

Если у вас есть носитель, с которого вы устанавливали Ubuntu, вставьте его в компьютер, выполните перезагрузку и загрузитесь со сменного носителя. Если носителя у вас нет, загрузите Live CD Ubuntu и запишите его на диск или создайте загрузочную USB-флешку .

При загрузке, нажмите «Попробовать Ubuntu» (Try Ubuntu), чтобы загрузить работоспособное окружение рабочего стола.

Перед тем как продолжить, убедитесь, что у вас работает подключение к интернету. Возможно, потребуется выбрать сеть Wi-Fi и ввести пароль.

Откройте терминал из Dash и выполните следующие команды для того, чтобы загрузить и установить Boot Repair :

Sudo apt-add-repository ppa:yannubuntu/boot-repair sudo apt-get update sudo apt-get install -y boot-repair boot-repair

Boot Repair автоматически просканирует систему после запуска команды boot-repair . После этого, щелкните кнопку Recommended repair для восстановления GRUB2 .

Здесь вы также можете выполнить расширенные настройки, однако вики-страница Ubuntu не рекомендует делать этого если вы точно не знаете, за что они отвечают. Рекомендуемый вариант позволяет исправить большинство проблем автоматически, а при выборе неправильных настроек можно только ухудшить ситуацию.

Boot Repair начнёт работать. Возможно, появится запрос открыть терминал и скопировать/вставить несколько команд.

Просто следуйте инструкциям на экране. Выполните все инструкции Boot Repair и щёлкните Forward чтобы перейти к следующему экрану. Утилита проведёт вас через все необходимые действия для восстановления.

После того, как Boot Repair закончит работу, перезагрузите компьютер. Ubuntu должна будет нормально запуститься.

Способ с использованием терминала

Если же вы не боитесь «запачкать руки», вы можете починить систему через терминал. Вам потребуется загрузиться с Live CD или USB-флешки, так же, как в способе, описанном выше. Убедитесь, что версия Ubuntu на диске совпадает с версией, установленной на компьютере. Например, если у вас была установлена Ubuntu 14.04, следует использовать Live CD Ubuntu 14.04.

После загрузки системы откройте терминал. Определите раздел диска, на котором установлена Ubuntu с помощью одной из следующих команд:

Sudo fdisk -l sudo blkid

Ниже приводится вывод обеих команд. В случае команды fdisk -l , раздел Ubuntu можно определить по слову Linux в колонке System . В случае использования команды blkid , раздел определяется по использованию файловой системы ext4 .

Если на компьютере имеется несколько разделов Linux в формате ext4 , обратите внимание на их размер и порядок, в котором они представлены в списке.

Выполните следующие команды для монтирования раздела Ubuntu в /mnt/ubuntu , заменив /dev/sdX# на имя устройства, на котором установлен ваш раздел Ubuntu, определенный выше:

Sudo mkdir /mnt/ubuntu sudo mount /dev/sdX# /mnt/ubuntu

На примере выше раздел Ubuntu находится на /dev/sda1 . Это первый раздел на первом жёстком диске.

Для инициализации ядра и запуска операционной системы Linux используется загрузчик. Это программа, которая запускается после завершения проверки оборудования BIOS, подготавливает оборудование к работе, задает нужные параметры ядра и позволяет выбрать операционную систему. Основная задача загрузчика дать пользователю выбрать операционную систему для загрузки.

Раньше для загрузки Linux использовалось несколько загрузчиков, это isolinux, lilo, grub. Но сейчас чаще всего применяется Grub или полное его название GRand Unified Bootloader. В этой статье будет рассмотрена установка загрузчика Grub через терминал. Также мы поговорим как установить grub на компьютер с UEFI, тоже вручную.

Как я уже сказал, основная задача загрузчика - предоставить возможность выбора операционной системы перед загрузкой. Не думайте, что в Windows загрузчик не используется, там он тоже есть и работает, подобно тому, как работает Grub.

Загрузчик может быть установлен в различные таблицы разделов диска. Сейчас самые используемые это GPT и MBR. Установка загрузчика Grub немного отличается для каждой из этих таблиц, учитывая их особенности. Подробнее об отличиях можно почитать в отдельной статье. Тут же я скажу, что GPT - более новая и функциональная таблица разделов, MBR - уже устаревшая, но до сих пор часто используемая.

В MBR вариантов немного, Grub записывается в область MBR на диске. Размер сектора MBR занимает первых 512 байт и этого вполне достаточно для того, чтобы установить туда загрузчик.

GPT предоставляет более широкие возможности. Во-первых, для совместимости в GPT эмулируется сектор MBR, и мы можем установить GRUB туда, но такой вариант очень ненадежный и не рекомендуемый. Во-вторых, теперь появилась возможность устанавливать Grub на раздел диска. Мы просто создаем раздел на диске размером 1 Мб и записываем туда то, что раньше записывалось в MBR, это делает установку загрузчика более надежной и защищенной от сбоев.

UEFI предоставляет совсем иной способ установки загрузчика. Тут его не нужно никуда записывать, загрузчик - это обычное приложение EFI, которое помещается на раздел EFI и уже там полностью успешно работает наряду с другими приложениями.

Для установки Grub будет использоваться команда grub-install, во всех случаях. Давайте кратко рассмотрим ее синтаксис и параметры. Синтаксис:

$ grub-install опции диск

Параметров здесь достаточно много, но нам будут нужны только некоторые:

  • --compress - сжать файлы загрузчика;
  • --install-modules=модули - установить только эти модули;
  • --modules - записать эти модули в MBR;
  • --boot-directory - использовать другой каталог для файлов Grub;
  • --bootloader-id - имя загрузчика в меню EFI;
  • --core-compress - сжимать образ, загружаемый в MBR;
  • --efi-directory - использовать системный раздел EFI;
  • --force - установить несмотря на ошибки;
  • --recheck - удалить существующую карту устройств, помогает если возникают ошибки;
  • --removable - установка grub на флешку (только EFI);

Основу разобрали. Теперь перейдем к установке. Дальше я буду предполагать, что все действия выполняются из системы, для которой нужно установить загрузчик или из chroot окружения этой системы.

Установка загрузчика Grub в MBR для BIOS

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

sudo grub-install /dev/sda

sudo grub2-install /dev/sda

Утилиты grub в разных дистрибутивах могут включать двойку, а могут и не включать. Здесь /dev/sda - ваш жесткий диск. Теперь генерируем конфигурационный файл, чтобы автоматически определились установленные операционные системы:

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

Готово. По поводу двойки здесь такое же замечание. Если вы хотите установить Grub на флешку в MBR, то тут тоже нет проблем просто примонтируйте флешку и выполните такую команду:

sudo grub-install --root-directory=/mnt/USB/ /dev/sdb

Здесь /mnt/USB - папка, куда была смотирована ваша флешка, а /seb/sdb - сама флешка. Только здесь есть одна проблема, конфигурационный файл придется делать вручную.

Установка загрузчика Grub в GPT для BIOS

Во-первых, мы можем ничего не менять и установить Grub так, как описано в предыдущем способе. Но тогда он будет установлен в область совместимости с MBR, а это не надежно. Поэтому рекомендуется установить grub так, как описано ниже, на отдельный раздел.

Нужный нам раздел можно создать в установщике любого дистрибутива, если вы выполняете установку в графическом интерфейсе или с помощью gparted. Нам нужен раздел размером 1 Мегабайт без файловой системы и с меткой grub_bios:

Готово. Если у вас нет под рукой доступа к графическому интерфейсу, вы можете создать такой раздел через терминал. Утилита fdisk не поддерживает работу с gpt, поэтому будем использовать gfdisk. Сначала запустите утилиту:

sudo gdisk /dev/sda

Чтобы создать новый раздел нажмите n и выберите номер раздела:

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

Выбираем конечный сектор раздела. По умолчанию будет использоваться максимальный. Нам нужен раздел размером 1 Мб. Размер одного сектора GPT - 512 байт, поэтому нам нужен раздел размеров 2048 секторов. Таким образом, конечный сектор будет 24000 с чем-то.

HEX Code - это тот код, который скажет системе, что этот раздел нужно использовать для Grub, нужно установить ef02 :

Готово, осталось нажать w для записи изменений на диск:

sudo grub-install /dev/sda3

Осталось создать конфигурационный файл grub:

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

Теперь переходим к самому сложному, как установить grub efi.

Установка GRUB UEFI GPT

Установка Grub UEFI чем-то похожа на установку в GPT, тут у нас тоже будет отдельный раздел, только на этот раз не для загрузчика, а раздел EFI. Если у вас уже установлена Windows, то, скорее всего, он уже существует. Этот раздел обычно занимает 100 Мб, имеет файловую систему fat32 и флаг ESP. Вот так он будет выглядеть:

Если же такого раздела нет, мы можем его создать с помощью gparted. Для этого создаем раздел с такими параметрами:

Размер 100 Мегабайт, имя раздела ESP , файловая система fat32 . Дальше примените изменения и установите для раздела флаг ESP :

То же самое вы можете сделать в Gdisk, только на этот раз нужно устанавливать HEX Code раздела ef00 . После того как раздел был создан, подключаем его к нашей файловой системе:

sudo mkdir /boot/efi
$ sudo mount /dev/sda2 /boot/efi

sudo apt install grub-efi efibootmgr

grub-install /dev/sda

Установка Grub efi на MBR все выглядит точно так же, только тут есть несколько ограничений. Раздел ESP нужно создавать только в начале диска. В режиме EFI тоже можно установить GRUB на флешку, и это не очень сложно. Для этого используется команда.

В этой статье я отвечу на вопросы по загрузчику для linux os - Grub. Вы узнаете, как установить загрузчик по умолчанию, чем редактировать Груб, как вернуть загрузочный раздел, исправить загрузочную запись и мн. др.

Вот полный перечень вопросов, которые я попытаюсь раскрыть в данном материале:

Обычно при загрузке компьютера загружается только одна операционная система. Пока она одна, проблем нет. Если же систем несколько, при загрузке выводится загрузочное меню, не всегда оптимально удобное для загрузки. Мелочь, правда? Но на деле все не так, когда перезагрузка компьютера осуществляется по доброму десятку раз на день.

Загрузчик - это программное обеспечение, которое устанавливается на первый сектор загрузочного диска (MBR - master boot record). Для каждой операционной системы он свой, и не иначе. И у каждого из них имеются свои особенности и «отношение» к другим загрузчикам и операционным системам. Например, при установке Windows XP (или Windows Vista) поверх Ubuntu загрузчик последней ОС безо всякого предупреждения затирается, и Ubuntu становится невозможной. Проблема? Проблема. Ведь, по сути, операционная система продолжает существовать, а загрузить ее - невозможно.

Никто не собирается вас пугать. Мы поставили несколько проблем и попробуем найти возможные пути их решения. Два варианта: бесплатный и платный. В первом случае всю настройку мы будем производить вручную, во втором - установим загрузочную программу Acronis OS Selector или бесплатные редакторы загрузчика.

Одна, две, три… Сколько?

Функциональности одной операционной системы вполне хватает для решения несложных повседневных задач. Нужно больше возможностей - устанавливаем дополнительное программное обеспечение.

При установке двух ОС достигается определенный компромисс между платным и бесплатным программным обеспечением. То, что для платформы Windows предлагается за деньги, Linux отдает в ваше распоряжение, как правило, бесплатно (open source ПО). Правда, многие профессиональные пакеты разработаны только для одной среды, преимущественно для Windows. Примеры с Adobe, OpenOffice, к сожалению, пока единичны, чтобы говорить об обратном. Есть программное обеспечение, аналогов которого нет и пока еще не может быть в той или иной ОС.

У каждой системы есть как свои замечательные достоинства, так и недостатки. Например, по нашему мнению, Windows - более «развлекательная» среда, Linux - рабочая система, задуманная для решения ресурсоемких задач, работы с данными и т. д. Оптимизировать Windows для работы так, как Linux, невозможно. Впрочем, судя по дистрибутивам Ubuntu, Fedora и другим «дружелюбным» ОС семейства, с большей «мультимедийностью» Windows можно согласиться только отчасти.

Три операционных системы - это, в большинстве случаев, излишество. Правда, и тут есть свои нюансы. Иногда возникают сложные ситуации, когда без наличия трех ОС на одном компьютере никак нельзя обойтись. Для этого не обязательно обладать прозвищем «компьютерный гений». И вряд ли это то, чем можно кого-либо удивить… Например, что делать, если по роду службы вы постоянно меняете среду (Ubuntu/Vista/XP) для проведения каких-либо обзоров или тестов? Каждый раз «сносить» одну и на ее место устанавливать другую ОС? Да, есть и такой «проходной» вариант. Для этого нужно на один диск (к примеру - C:\) поставить Windows XP, а на другой (D:\) - Vista или Ubuntu. Каждый раз, когда необходимо сменить ОС, вы ставите на D:\ нужную ОС. Вопрос только во времени.

Проще всего остановиться на двух, а, еще лучше, на одной операционной системе. Но мы пойдем другим путем.

Примечание. Существуют портированные версии операционной системы Mac OS X, которые достаточно успешно устанавливаются на PC платформу. В этом материале мы не рассматриваем OS X по следующим причинам:

  1. это не оригинальная, а незаконно модифицированная версия ОС
  2. аудитория читателей, использующих эти дистрибутивы, крайне мала. Достаточно представить себе количество пользователей продукции Apple.

Очередность действий

Если нужен суперфункциональный компьютер с работоспособным загрузчиком, вам заранее нужно побеспокоиться о правильной последовательности установки каждой из ОС. Ведь если поставить ту же Vist’у последней, то загрузчик Ubuntu, GRUB, будет стерт с MBR. XP просто не устанавливается поверх Vista, посему она не может быть оставлена напоследок. Исходя из сказанного, все действия производятся на компьютере в следующем порядке:

1) Windows XP. Устанавливается на диск с загрузочным сектором. Все загрузчики в последующем будут автоматически устанавливаться на раздел с этой меткой. Как узнать, на каком диске она находится? В этом помогут специализированные программы для работы с дисковой подсистемой - Norton Partition Manager, Acronis Disc Director, Acronis Partition Expert и многие другие.

Диск, отмеченный как «Active», обязательно имеет загрузочный сектор.

2) Windows Vista. Устанавливаем ее на диск, отличный от того, где расположена XP. После инсталляции Vista в загрузочном меню должны присутствовать два пункта: собственно, Vista и «Earlier operating systems» («Предыдущая операционная система»), под которой подразумевается XP. То есть, если XP была установлена до Vista, она успешно будет определена и добавлена в список.

3) Ubuntu (это правило применимо к любой ОС семейства Linux). Поскольку данная операционная система ставится последней, то загрузчик, устанавливаемый ею, станет основным. На последнем этапе установки Ubuntu не меняйте настройки (кнопка «Advanced»), чтобы GRUB, как и положено, установился на диск с загрузочной меткой .

Нужно сказать, GRUB весьма «толерантен» по отношению к своим «конкурентам»: он корректно определяет имеющиеся на компьютере системы и вносит их в собственный список. При наличии XP и Vista GRUB не удаляет загрузчик Windows. И при выборе пункта меню, который идет после надписи «Other operating systems» («Windows Vista/Longhorn loader»), появится второй экран, где можно выбрать одну из ОС Windows.

Впоследствии созданный GRUB’ом список можно подкорректировать, поменяв названия, удалив лишние пункты загрузки или сменив их очередность. Благо, документация к GRUB присутствует в достаточном объеме. Общими словами, это отлично конфигурируемый, документированный, user-friendly (дружелюбный по отношению к пользователю) загрузчик.

Где скачать и как установить Груб

Исходники GRUB можно скачать с сервера ftp://alpha.gnu.org/pub/gnu/grub .
Далее распакуйте скачанный дистрибутив, используя команду “ tar -xvzf filename.tar.gz ”. Если взять в расчет название файла grub-
0.5.96.1.tar.gz, перечень операций будет выглядеть следующим образом:

# tar -xvzf grub-0.5.96.1.tar.gz

Итак, мы распаковали содержимое в директорию под названием “ grub-0.5.96.1 ”. Выполняем следующие шаги:

# ./configure

Можно изменить определенные опции в процессе компиляции:

# ./configure --help

При этом отобразятся все доступные опции. Можно использовать префикс –enable или -
disable , что обеспечивает поддержку определенных устройств загрузчиком.

Чтобы начать компилирование, введите

# make

Установка происходит после ввода следующей команды:

# make install

Немного о редактировании GRUB’а

В Linux традиционно используется загрузчик LILO (LInux Loader) или GRUB. Если несколько лет назад о LILO еще что-то говорили (и присутствовал он в немалом количестве), то теперь лидерство принадлежит GRUB.

На самом деле, эта «монополия» идет только в плюс, потому что изначально GRUB более функционален. Все его возможности доступны из командной строки или посредством редактирования конфигурационного файла. Кроме того, очень важно, что данный загрузчик можно напрямую редактировать прямо в командном режиме. Чем же это хорошо? Скажем, произошла плачевная ситуация, когда из-за ваших действий загрузчик сломался. Предварительно прочитав соответствующую документацию, вы вручную можете отладить GRUB прямо из меню. Метод «научного тыка» здесь, увы, не пройдет, как и во всем Linux’е.

Сразу же после установки GRUB прописывает в меню несколько дополнительных пунктов, как то: резервная загрузка, тест памяти. Всего около трех- четырех пунктов малой степени важности. Если по умолчанию загружается именно та ОС, которая нужна, и вас не смущает разнообразие в меню, можно все оставить «как есть». По умолчанию первой в загрузке выставлена Ubuntu.

В Mandriva или OpenSUSE данное меню можно отредактировать еще при установке. В нашем случае придется пойти более «хитрым» путем - изменить несколько строк в конфигурационном файле menu.list. Расположен он по адресу /boot/grub.

Открываем терминал (Программы -> Служебные -> Терминал и вводим команду ($ - обозначение начала команды, которое в терминал не вводится):

$ sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.old

Этим самым мы сохраним резервную копию файла. В Ubuntu это делать просто необходимо, дабы в случае серьезной ошибки была возможность возвратиться к предыдущим настройкам. Здесь, однако, вам следует взять на заметку следующее: восстановить загрузчик без доступа в сеанс ОС - задача непростая. Во избежание подобных ситуаций, с конфигурационным файлом загрузчика обращайтесь особенно внимательно. Если вы не уверены в своих способностях, рисковать не стоит. Пусть Ubuntu поработает как можно дольше…

$ sudo gedit /boot/grub/menu.lst

Когда вы введете данную команду, в текстовом редакторе Gedit отобразится содержание menu.lst. Мы рассмотрим несколько важнейших настроек этого конфигурационного файла. Он подробно откомментирован, поэтому в том, о чем не будет сказано, вы разберетесь самостоятельно. Все комментарии следуют за решеткой #, они никак не влияют на ход загрузки и их можно удалить.

Параметры:

  • timeout 10 - время отображения меню. По истечению 10 секунд загружается операционная система по умолчанию. Вместо «10» назначьте любую цифру
  • hiddenmenu - если раскомментировать эту строку, меню GRUB отображаться не будет, загрузится ОС по умолчанию

А вот далее идут настройки, непосредственно связанные с выводом строк меню в GRUB. Их можно свободно редактировать, удалять. Разумеется, зная предназначение того или иного пункта. Изменять что-либо, кроме первой строки, противопоказано! Это же относится и к Windows. Блок, начинающийся с «title Windows XP», должен остаться в целости и сохранности.

Как поменять очередность загрузки Windows и Linux

Если нужно поменять очередность загрузки с Ubuntu на Windows, просто поменяйте блоки, начинающиеся с «title», местами. После редактирования menu.lst сохраните документ (напоминаем, сделать это можно только в режиме администратора) и перезагрузите систему.

О настройке загрузчиков XP и Vista

Самый «слабый» загрузчик, который может только затереть имеющийся загрузчик Ubuntu . Поскольку установить XP поверх Vista официально мы не можем, то, фактически, не можем поменять загрузчик Vista на XP. Минус этих двух bootloader’ов - отсутствие всякой документации, плюс же - легкий доступ к настройкам.

Если до Ubuntu вы установили Windows Vista, то при выборе в GRUB пункта «Windows…» появляется второе меню. Вы можете временно или на постоянной основе отключить один из пунктов подменю - тогда оно исчезнет. Для этого нужно зайти в свойства «Моего компьютера», открыть вкладку «Дополнительно», раздел «Загрузка и восстановление» кнопка «Параметры» и изменить меню. Здесь удалите ту (и только ту!) строку, в которой расположен лишний пункт меню.

Описанный порядок настройки относится к Windows XP, но для Vista он практически одинаков.

Программы для работы с загрузчиками

К счастью, ко всем рутинным методам, описанным нами сегодня, можно не прибегать. Имеется несколько программ, которые заметно упрощают обращение с загрузчиком, делая его интуитивно понятным. В случае с Acronis OS Selector разработчику программы придется заплатить, поскольку демонстрационная версия не позволяет воспользоваться возможностями полной. EasyBCD и VistaBootPRO - бесплатные программы.

Программа: Acronis OS Selector
Условия распространения: shareware

Программа для низкоуровневого управления загрузкой. Приводим выдержку с официального сайта:

С помощью Acronis OS Selector вы можете:

  • установить несколько различных операционных систем на одном компьютере;
  • загружать их с любого раздела любого жесткого диска;
  • производить загрузку любых установленных операционных систем прямо из Windows;
  • устанавливать несколько операционных систем на одном разделе;
  • скрыть любую из операционных систем на вашем компьютере от посторонних или установить пароль на их загрузку;
  • дублировать существующие операционные системы путем копирования и создавать для каждой из них необходимую загрузочную конфигурацию.

Программа поддерживает большой список операционных систем. В него попали всевозможные дистрибутивы Windows и Linux. К сожалению, программа уже не распространяется по-отдельности, как это было ранее, но входит в состав Acronis Disk Director Suite, достаточно объемного (40 Мб) пакета. Программа платная, и в ограниченной версии нельзя применить изменения. Можно скачать отдельно старую версию по прямой ссылке, но это демо-версия, опять же, не предназначена для прямого использования.

После инсталляции OS Selector попросит перезагрузиться. Во время загрузки программа, с вашего разрешения, установится на загрузочный сектор, как обычный загрузчик . Если откажетесь - продолжится загрузка системы и программа просто перестанет о себе напоминать - ни после, ни до загрузки ОС.

В чем еще плюс данной программы, кроме простоты? Удобнее всего, что в загрузочном меню сразу появляется список всех установленных ОС. Загрузчик один - и он устанавливается программой Acronis OS Selector. Названия корректно определены, и при желании их легко можно поменять. Кроме того, не нужно в меню два раза нажимать клавишу Enter. Также в состав входит несколько дополнительных сервисных утилит, что будет чрезвычайно полезным для восстановления какой-либо из ОС.

EasyBCD

Интересно, что вместо GRUB загрузчиком по умолчанию можно сделать таковой из Windows Vista. Установив EasyBCD, прежде всего нужно зайти в раздел «Manage Bootloader» и затем выбрать опцию «Reinstall the Vista Bootloader». GRUB будет затерт. Сейчас можно настроить загрузчик Vista для добавления Ubuntu в меню загрузки.

Помимо работы с Linux, EasyBCD, распознает загрузчики BSD и Mac OS X. Работает в среде Windows.

VistaBootPRO

Условия распространения: freeware

О VistaBootPRO мы не так давно писали в обзоре программ. Работает она в среде Windows и предназначена сугубо для редактирования загрузчиков Windows. Причем можно заменить один загрузчик другим, деинсталлировав лишний. В программе легко убрать лишние пункты меню. Нельзя забывать о резервной копии, которую можно и нужно сделать в одном из разделов настроек!

Как восстановить загрузочное меню?

Если после произведенных вами действий произошла ошибка, после которой загрузка меню становится невозможной, не отчаивайтесь. Как и любое программное обеспечение, его можно переустановить. Правда, это не так просто, как описывается на словах. Ведь, по логике, если нельзя загрузить ОС, нельзя восстановить загрузчик? В таких случаях, как всегда, выручает загрузочный диск. Из трех ОС нам нужно восстановить либо Vista, либо Ubuntu, XP отпадает по описанным выше причинам.

Для Ubuntu. Проще всего восстановить загрузчик GRUB для Ubuntu. Благо, Ubuntu и представляет собой live-дистрибутив, который можно использовать для всякого рода восстановления. Загрузив ОС (версия не имеет значения), требуется открыть терминал и ввести там следующие команды:

// запуск менеджера загрузки $ sudo grub

// выдача информации о разделе с загрузчиком $ find /grub/stage1

В результате появится информация о расположении загрузчика

Подставьте полученные значения, поменяв X и Y на выданные цифры:

$ root (hdX,Y) $ setup (hdX)

Для Windows Vista. Подробно о восстановлении загрузчика Vista вы узнаете в онлайн-справке Windows.

Итак, для восстановления понадобится загрузочный диск с Windows Vista (с которого вы устанавливали ОС). Ход действий следующий.

  1. Загрузитесь с установочного диска Windows Vista.
  2. Выберите язык установки и ввода. Рекомендуется выбрать язык ввода США.
  3. Выберите пункт «Восстановление системы».
  4. Выберите операционную систему для восстановления и нажмите «Далее».
  5. Выберите пункт «Командная строка». В строке введите команду

E:\boot\Bootsect.exe /NT60 All

Основная загрузочная запись Windows Vista восстановлена.

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

Самое пугающее в Linux - это страшная фраза "начальный загрузчик". Главная причина этого состоит в том, что большинство новых пользователей Linux работали только с операционной системой Windows, в которой отсутствует полноценный начальный загрузчик или взаимодействие с ним пользователя сведено к минимуму. В мире Windows они никогда не задумывались о начальном загрузчике. Для них процесс загрузки операционной системы был полностью прозрачен. Самое большее, что они делали - это использовали Windows Recovery Console для решения возникающих проблем. Поэтому им необходимо познакомиться с одной из важнейших частей программного обеспечения компьютера - маленькой программой, выполняющей загрузку операционной системы.

Цель данной статьи предоставить вам основные сведения о начальном загрузчике GRUB. Если вы читали мои другие статьи о Linux, то вы хорошо знакомы с разбиением на разделы и условными обозначениями Linux, а также с командной строкой. Логично сделать следующий шаг для дальнейшего углубления этих знаний. Понимание того как работает GRUB и, что означают записи в загрузочном меню, поможет вам понять как работает операционная система, как исправить возникающие ошибки, как восстановить или модифицировать меню загрузчика GRUB в соответствии с вашими нуждами и как установить несколько операционных систем с разными рабочими средами.

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

Но, сначала, важное предисловие. Эта статья состоит из поясняющей информации и примеров, которые помогут вам изучить GRUB. Конечно, все это есть на просторах интернета. Однако, новые пользователи Linux возможно потратят часы на поиск необходимой информации (особенно, если их ПК - персональный компьютер не загружается) немного разочаровавшись. Цель данного руководства предоставить простые и быстрые решения часто встречающихся проблем при мультизагрузочной установки и установки Linux операционных систем.

  1. Введение
  2. Конфигурация GRUB
    1. Установка GRUB
  3. Типичные проблемы
  4. Ссылки

Все есть файл

Для того чтобы успешно овладеть секретами GRUB вы должны понять один из фундаментальных принципов *NIX-ориентированных операционных систем. Все есть файл. Даже жесткие диски и разделы рассматриваются как файлы. Это не магия. Если вы помните это, то рискованная задача изменения разделов жесткого диска покажется вам ничем не отличающейся от манипуляции с файлами в файловом менеджере (или командной строке).

Теперь, когда мы знаем это, мы можем перейти к подробному изучению технических деталей.

Введение

GNU GRUB это загрузчик (то есть начальный или первичный загрузчик) способный загружать различные свободно распространяемые и проприетарные операционные системы. GRUB будет хорошо работать с Linux, DOS, Windows или BSD. Аббревиатура GRUB расшифровывается, как GR and U nified B ootloader (Главный унифицированный загрузчик).

GRUB является динамически конфигурируемым. Это означает, что пользователь может внести изменения в настройки GRUB во время загрузки. Например, изменить существующие загрузочные записи, добавить новые пользовательские записи, выбирать различные ядра операционной системы или модифицировать initrd . GRUB также поддерживает режим логической адресации блоков (Logical Block Address). Это означает, что если ваш компьютер оснащен достаточно современной BIOS, то может быть доступно более 8ГБ (первые 1024 цилиндра) места на жестком диске. Соответственно и GRUB будет автоматически доступно все это пространство.

GRUB может быть запущен или установлен с любого устройства (гибкого диска - дискеты, жесткого диска, CD- ROM привода, USB диска, сетевого диска) и может загружать операционные системы из различных источников, включая сетевые диски. Также он может может распаковать образ операционной системы перед ее загрузкой.

Вы можете получить дополнительную информацию, гораздо больше, чем в данной статье, из официального руководства GNU GRUB Manual 0.97 .

Что такое LILO?

Вы, наверное, слышали о другом начальном загрузчике Linux, который называется LILO (образовано из начальных букв LI nux LO ader, что означает загрузчик Linux). Не смотря на то, что LILO для многих пользователей Linux подходящий вариант, я считаю, что GRUB - лучший выбор по нескольким причинам:

  • LILO поддерживает только 16 различных загрузочных конфигураций, а GRUB поддерживает неограниченное количество конфигураций.
  • LILO не может загружаться по локальной сети, а GRUB может.
  • LILO должно быть перезаписано всякий раз, после изменения его конфигурационного файла, а для GRUB в этом нет необходимости.
  • LILO не имеет командного интерактивного интерфейса.

Подводя итог изложенному выше, отметим, что GRUB выглядит победителем. Итак, позвольте показать, что эта малютка может делать.

Как работает GRUB?

Когда компьютер загружается, BIOS передает управление первому загрузочному устройству, которое может быть жестким диском, дискетой, CD-ROM или другим устройством, распознаваемым BIOS. Для простоты будем считать, что это жесткий диск.

Первый сектор жесткого диска называется Master Boot Record (MBR) (Главная Загрузочная Запись). Длина этого сектора всего 512 байт. Он содержит небольшой фрагмент кода (446 байт), который называется основной загрузчик, и таблицу разделов (64 байта). Таблица разделов содержит описание первичных и дополнительных разделов жесткого диска.

По умолчанию, код MBR просматривается на активном разделе и если он найден, то загружается в память его загрузочный сектор и ему передается управление.

GRUB заменяет код MBR по умолчанию собственным кодом.

При этом работа GRUB состоит из нескольких стадий.

Стадия 1: размещение в MBR. Из-за малого объема MBR размещается только ссылка для перехода к Стадии 2 , которая содержит все требуемые данные.

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

Еще существует Стадия 1.5 , которая используется, если загрузочная информация не может быть размещена непосредственно после MBR.

Структура Стадии позволяет GRUB иметь довольно большой объем (~20-30К). Поэтому GRUB достаточно сложный и хорошо конфигурируемый, по сравнению с большинством загрузчиков, которые более компактные и проще укладываются в ограничения для Таблицы Разделов.

Терминология GRUB

Этот раздел предназначен для того чтобы помочь вам освоиться с GRUB без соприкосновения с ним. В следующем разделе рассматриваются актуальные файлы и ручная конфигурация GRUB.

GRUB имеет собственные условные обозначения, которые немного отличаются от общепринятых условных обозначений применяемых в Linux.

Вот, пример типичного начала GRUB:

(hd0,1)

  • Обязательные скобки, в которые должны быть заключены все устройства представленные в списке меню GRUB.
  • hd означает жесткий диск. Гибкий диск обозначается как fd , CD-ROM как cd и т.д.
  • Первый номер (целое число, для квалифицированных пользователей) - это ссылка на номер физического жесткого диска. Нумерация первого привода начинается с нуля. В качестве примера, hd2 ссылка на третий физический жесткий диск.
  • Второй номер, ссылка на номер раздела выбранного жесткого диска. Нумерация разделов тоже начинается с нуля. В этом случае, 1 соответствует второму разделу.

Отсюда следует, что в GRUB (меню) не различаются IDE и SCSI приводы или первичный и логический разделы. Задача определения какой жесткий диск или раздел должен быть загружен, определяется BIOS и на Стадии 1.

Как видите, условные обозначения очень простые.

Первичные разделы имеют обозначения от 0 до 3 (hd?,0) , (hd?,1) , (hd?,2) , (hd?,3) . Логические разделы в дополнительном разделе нумеруются начиная с 4 . Их нумерация не зависит от текущего количества первичных разделов на жестком диске. Например, (hd1,7) .

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

Также GRUB необходимо знать какой из образов операционной системы загружать. Эти параметры и специальные флаги (ключи) присваиваются каждому загрузочному устройству. Например, специальный флаг для Windows Safe Mode.

Здесь показан пример меню GRUB загружающего только Ubuntu.

Здесь показан пример меню GRUB для компьютера с тройной загрузочной конфигурацией (SUSE 10.2, Ubuntu 6.10 и Windows XP). Это реальный menu.lst на одной из моих действующих машин.

Попытайтесь понять, что означают эти данные. Считаются только незакомментированные строки. Комментарии обозначаются специальным символом # . Строки начинающиеся с нескольких последовательных серых x (индикатор предыдущей строки) являются продолжением предыдущей строки. Другими словами, текст просто перенесен на другую строку, чтобы улучшить зрительное восприятие на экране длинных строк, с учетом размеров окна текстового редактора и разрешения экрана.

Default 0 timeout 8

Первая строка (default 0) означает, что будет загружена первая операционная система из списка. В нашем случае, это SUSE 10.2. Вторая строка (timeout 8) сообщает сколько времени (в секундах) имеется у пользователя чтобы выбрать систему для загрузки до того как загрузится система по умолчанию. Просто, не правда ли?

Gfxmenu (hd0,2)/boot/message

GRUB меню может быть графическим. Все необходимое для отображения изящного пользовательского представления с цветным фоном и некоторыми дополнительными элементами, размещено на первом физическом диске, третьем разделе (hd0,2). Это первичный раздел, как вы успели заметить.

Title openSUSE 10.2 root (hd0,2) kernel /boot/vmlinuz-... initrd /boot/initrd.img-...

Это первая операционная система в меню.

  • title (заголовок) - элементарно, означает тоже, что и его смысл. Эта строка предназначена помочь пользователю прочитать меню в более доступной терминологии.
  • root (hd0,2) указывает GRUB, где размещены его конфигурационные файлы. В этом примере они могут быть найдены на (hd0,2)/boot/grub .
  • kernel /boot/vmlinuz-... загрузка модуля ядра текущей операционной системы. Может быть доступно несколько подобных образов. Тот факт, что отсутствует ссылка на загрузочное устройство перед /boot/vmlinuz означает, что образ размещен на том же разделе жесткого диска, что и сам GRUB. Это обстоятельство часто определяет ваш выбор операционной системы, загружаемой по умолчанию.
  • initrd /boot/initrd.img-... является временным системным файлом, который создается системой при подготовке к загрузке. Подготовка включает в себя адаптацию универсального модуля ядра для конкретного оборудования, до его загрузки.

Дополнительные ключи используются после указания ядра. Они определяют текущее размещение корневой директории (root), используемый графический режим и размещение раздела подкачки (swap). В этой статье не будут рассматриваться подробно расширенные конфигурации GRUB.

Title Ubuntu, kernel ... (/dev/sda9) kernel (hd0,8)/boot/vmlinuz-... initrd (hd0,8)/boot/initrd.img-...

  • В данном случае, title отображаемое имя, с некоторыми дополнительными техническими подробностями.
  • kernel (hd0,8)/boot/vmlinuz-... размещение 9-й раздел на первом жестком диске (hd0,8) . Флаг root (/dev/sda9) обозначает, что root раздел так же содержит в себе модуль ядра, то есть размещаются они на одном разделе жесткого диска. Обычно, это делается из соображений практичности и простоты. Вы можете изменить это размещение во время установки операционной системы.
  • initrd (hd0,8)/boot/initrd.img-... здесь ничего нового.

Замечания по разделам модулей ядра и корневому разделу: на старых компьютерах, BIOS которых не поддерживает доступ к более чем 1024 цилиндрам, вы должны были установить загрузочный раздел, содержащий модуль ядра и корневой раздел, в разных местах. Однако пользователи с компьютерами младше чем проблема Y2K (проблема 2000 года) могут не беспокоиться.

Другая вещь, на которую вы должны обратить внимание, это подробная загрузка Ubuntu. Ubuntu загружается с помощью загрузчика OpenSUSE. Это свойство называется совместимая мультизагрузка (Multi-boot Compliance). OpenSUSE распознает Ubuntu и может правильно вызвать ее модули (включая специальные ключи) и cмонтировать разделы. Однако большинство операционных систем лишь частично совместимы с данным свойством (Multi-boot Compliance).

Позже я покажу вам как по разному может быть выполнен вход в Ubuntu с одинаковыми результатами.

Title Windows rootnoverify (hd0,0) chainloader (hd0,0)+1

  • rootnoverify (hd0,0) означает, что openSUSE не может определить Windows операционную систему, так как она не обладает свойством мультизагрузочной совместимости (Multi-boot Compliance). По этой причине операционная система вызывается без какой-либо дополнительной информации о ее ядре. GRUB предполагает, что требуемый образ ядра будет находиться на указанном разделе и монтирует загрузчик операционной системы. Как вы видите, Windows была установлена на первом разделе первого жесткого диска. Это самое удачное расположение системы.
  • Команда chainloader (hd0,0)+1 специально предназначается для применения с операционными системами, которые не могут быть непосредственно загружены. Не удивительно, что Windows операционные системы не могут быть загружены напрямую. Они загружаются с использованием метода chainloading . Как следует из названия, GRUB передает управление загрузочной последовательностью другому загрузчику, размещенному на устройстве, которое указано в меню GRUB. Это может быть Windows операционная система или любая другая, например, Linux.

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

Title Ubuntu root (hd0,8) chainloader (hd0,8)+1

Это будет работать также хорошо.

Следующий пункт в меню позволяет вам загрузить SUSE в защищенном (failsafe) режиме (разновидность безопасного режима). Этот пункт не содержит очень ценной и полезной информации, поэтому пропустим его, без ущерба для наших знаний.

Позвольте привести несколько примеров.

Приведенный ниже действующий пример, который записан в Ubuntu menu.lst (конечно, закомментирован).

Title Windows 95/98/NT/2000 root (hd0,0) makeactive chainloader +1 title Linux root (hd0,1) kernel /vmlinuz root=/dev/hda3 ro

Теперь вы можете легко понимать язык GRUB. Мы начали с title . root определенный раздел на котором мы рассчитываем найти ядро Windows и смонтировать его (rootnoverify эта работа будет предоставлена загрузчику Windows). makeactive команда, которая делает активным раздел с корневой директорией на диске, указанном в предыдущей строке GRUB root device . Это означает, что команда chainloader выполняется без указания целевого раздела системы (так как этот раздел совпадает с активным).

Второй пункт меню еще проще. Мы назвали его Linux, определили его раздел и загружаем его ядро. Этот случай очень интересный. Так как образ ядра и корневой раздел (root или /) находятся на разных разделах. Этот случай очень похож на случай со старыми компьютерами или компьютером с одним загрузочным разделом.

И наконец, совершенно безумные вещи:

Вы понимаете, что все просто! Когда вы набьете руку, все сомнения исчезнут.

Для получения дополнительной информации, вам необходимо обратиться к GNU GRUB Manual 0.97 .

Конфигурация GRUB

Большую часть времени, у вас не будет желания или необходимости конфигурировать GRUB. Когда вы устанавливаете операционные системы, GRUB будет устанавливаться автоматически и соответствующие строки будут добавлены в конфигурационный файл, особенно, если выбрана правильная последовательность установки операционных систем (авторитарные, то есть Windows подобные операционные системы, - первыми, гибкие операционные системы, то есть Linux и его семейство, - после).

Тем не менее, вам необходимо знать где и что нужно делать, если что-то пойдет не так.

Установка GRUB

GRUB может быть установлен на различные устройства. Большинство людей будет интересовать процесс установки GRUB на жесткий диск. Однако, изучение других его настроек совсем не повредит. Конечно, вы можете перейти дальше.

Ранее мы не устанавливали GRUB, поэтому нам необходимо знать местонахождение требуемых файлов.

Если GRUB установлен, то его меню находится внутри корневого раздела:

/boot/grub/menu.lst

Всегда, всегда делайте резервную копию этого файла перед любыми изменениями!

Так же GRUB файлы могут находиться внутри образа вашей операционной системы (как правило, CD):

/usr/lib/grub/i386-pc

Тем не менее здесь приводится ее краткая версия, для тех кого не радует чтение еще одной статьи.

Вы можете вывести на экран любую информацию о среде вашего ПК (персональный компьютер), используя терминал или текстовый редактор. Чтобы открыть файлы в текстовом редакторе необходимо указать в командной строке текстовый редактор, имя файла и путь к нему. Для открытия системных файлов необходимо иметь права суперпользователя (su или sudo для системных файлов).

$ sudo vi /etc/fstab ИЛИ $ sudo gedit /etc/fstab

Или вы можете просто вывести на экран содержимое файлов прямо в терминале с помощью команды cat .

$ (sudo) cat /etc/fstab

Несколько полезных команд, которые могут быть полезны, если вы имеете дело с загрузкой, жесткими дисками и разделами.

Выводит на экран таблицу разделов:

$ fdisk -l

Выводит на экран список монтированных разделов:

$ cat /etc/fstab

Сейчас мы знаем что нужно, и где это найти, для того чтобы установить GRUB.

GRUB на флоппи диске

Для того чтобы установить GRUB на флоппи диск, мы должны скопировать файлы (Стадия 1 и Стадия 2) из директории образа операционной системы, в первый и второй сектор флоппи диска. Для этого будем использовать команду , которая копирует информацию посекторно.

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

$ cd /usr/lib/grub/i386-pc $ dd if=stage1 of=/dev/fd0 bs=512 count=1 $ dd if=stage2 of=/dev/fd0 bs=512 seek=1

Небольшое пояснение: if обозначает файл ввода, of обозначает файл вывода, /dev/fd0 ссылка на первый смонтированный дисковод флоппи дисков, bs заданный размер блока (в байтах), count инструкция, указывающая на количество блоков, которое должно быть скопировано, и seek указывает сколько блоков будет пропущено перед записью. Неудивительно что выбрана такая последовательность команд записи. В начале мы записали stage1 в первый сектор и скопировали stage2 во второй (пропустили первый сектор и затем записали).

Теперь, когда вы поняли всю мощь командной строки, в качестве домашней работы, предлагаю вам самим разобраться с особенностями других команд. Более подробно о команде dd на Wikipedia .

Это все насчет установки GRUB на флоппи диск. Так как мы скопировали стадии из образа операционной системы, то у нас имеется вся необходимая информация для настройки. Конечно, вы всегда можете внести изменения вручную. Однако об этом в следующем разделе.

Установка GRUB по умолчанию

Установка по умолчанию означает размещение GRUB Стадия 1 в первом секторе на жестком диске (Главная Загрузочная Запись - MBR или Таблица Разделов). Это значит, что вы сможете загрузиться без второго устройства, подобного флоппи диску, который стал редким в наши дни. Так же это означает, что если вы установите авторитарную операционную систему позже (подобную Windows) или восстановите главную загрузочную запись по какой-то причине (запустите fdisk /MBR из командной строки DOS) , вы удалите GRUB и сделаете не загружаемыми все системы, представленные в menu.lst.

Для установки GRUB в MBR вам необходимо загрузиться с внешнего носителя (флоппи диск, live CD Linux). После загрузки, как только будет доступно приглашение на ввод команды GRUB (grub>), выполните следующие команды:

Найдите корневое устройство GRUB:

Grub> find /boot/grub/stage1

GRUB будет искать все доступные Стадии 1 и отобразит их на экране. Если у вас имеется более одного образа операционной системы (например, SUSE, Kubuntu, Mandriva), вам будут доступны несколько Стадий 1 .

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

  • SUSE на (hd0,1)
  • Kubuntu на (hd0,2)
  • Mandriva на (hd0,4)

Эти системы имеют свой собственный GRUB, поэтому любая из них может быть использована в качестве GRUB устройства (так как каждая из них имеет свои собственные файлы GRUB).

Если вы хотите использовать SUSE GRUB, вам необходимо сделать корневым устройством GRUB (GRUB root device) первый раздел жесткого диска (hd0,1) :

Grub> root (hd0,1)

Если вы хотите использовать Mandriva"s GRUB , необходимо сделать следующее:

Grub> root (hd0,4)

Если вам известно размещение корневого раздела GRUB и необходимых файлов, то можете обойтись без команды find.

Если вы определили корневой раздел, вам необходимо записать информацию в MBR (Главную Загрузочную Запись):

Grub> setup (hd0)

И наконец, выйдите из GRUB консоли:

Grub> quit

Вот вся последовательность команд, которую вам необходимо выполнить:

Grub> find /boot/grub/stage1 (optional) grub> root (hdX,Y) grub> setup (hd0) grub> quit

Вы можете установить GRUB на другой физический диск или раздел. В этом случае вам нужно будет осуществить последовательную загрузку (chainload), то есть необходимо передать управление от GRUB другому загрузчику, который выполнит загрузку системы вместо него.

Это все. Просто и быстро!

Установка GRUB с помощью grub-install

Этот метод считается менее безопасным (согласно руководству), так как осуществляет автоматическое преобразование дисков. Можете успокоиться, для полных новичков, которым нужна подробная помощь при установке, это, наверное, самый предпочтительный метод.

Вам нужно вызвать только одну команду с одним аргументом - указать размещение, куда должен быть установлен загрузчик. Эта команда может быть записана несколькими способами, которые эквивалентны:

$ grub-install /dev/hda $ grub-install /dev/hd0 $ grub-install "(hd0)" $ grub-install hd0

После того как вы установили GRUB, ваша операционная система будет загружаться. После загрузки операционной системы, вы можете опять экспериментировать с GRUB. Изменять вручную установки, например, добавлять и удалять конфигурационные данные, менять загрузчики в последовательной загрузке (chainloader), скрывать и отображать разделы.

Настройка GRUB вручную (после установки)

Вы можете переконфигурировать или переустановить GRUB в любой момент.

Резервное копирование!

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

$ cp /boot/grub/menu.lst /boot/grub/menu.lst_backup

Для получения доступа к GRUB выполните следующую команду в Linux терминале:

$ sudo grub

Через какое-то время, приглашение GRUB будет показано на экране. Наличие приглашение вы можете определить по его виду: grub> .

Также вы можете получить доступ к командной строке GRUB во время загрузки. Когда меню GRUB загружается, нажмите кнопку C на клавиатуре.

Добавление новой операционной системы в меню GRUB

Предположим, вы имеете ранее установленную операционную систему Sabayon (Sabayon Linux ранее известный как RR4 и RR64 - дистрибутив на ядре Linux, представляющий собою форк дистрибутива Gentoo). В процессе установки вы пропускаете установку GRUB. Это означает, что конфигурационные файлы ранее установленного GRUB не изменились и не содержат данных о Sabayon. И Sabayon не сможет быть загружен.

Примечание: Разделы GRUB меню названы комнатами (возможно это особенность данного экземпляра?).

Таким образом, нам необходимо добавить Sabayon в конфигурационный файл GRUB.

Если вы знаете, где Sabayon был установлен, то вам надо добавить его данные в menu.lst.

Title Sabayon root (hdX,Y) chainloader +1

Однако это можно сделать во время загрузки компьютера без редактирования меню. Когда установленный GRUB начнет загружаться, нажмите кнопку C , чтобы вызвать командную строку. И затем:

Grub> root (hdX,Y) grub> chainloader +1

При желании вы можете использовать команду find , чтобы узнать требуемые данные.

Это и есть вся магия GRUB. Как вы видите, она очень-очень простая. Но для людей, которые никогда не слышали о GRUB и видели только длинный список странных команд, может показаться устрашающей.

Теперь, когда мы знаем основы начальной загрузки и GRUB, самое время получить дополнительную информацию и разобрать наиболее типичные проблемы, которые могут возникнуть.

Типичные проблемы

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

Это часто происходит, если вы устанавливаете Windows после Linux. Windows считает, что она единственная операционная система в мире и не пытается интерпретировать существующую информацию, находящуюся в MBR. Она ее просто перезаписывает. Для людей, у которых имеется система двойной загрузки и небольшие познания в Linux, - это просто катастрофа. К счастью это очень легко поправимо.

Простой способ

Сложный способ

  • Загрузитесь с флоппи диска или CD (любой Linux live CD должен подойти)
  • Войдите в режим командной строки GRUB.
grub> find /boot/grub/stage1 (optional) grub> root (hdX,Y) grub> setup (hd0) grub> quit

Все тоже самое, что и раньше!

Windows установлена не на первом жестком диске (Своппинг)

GRUB не может загрузить напрямую операционную систему Microsoft. Иногда даже последовательная загрузка может не работать, особенно, если Windows установлена не на первом жестком диске. И снова вы должны помнить, что нужно устанавливать Windows первой, на первый жесткий диск и на первый раздел (правило 3П - трех первых). При этом, даже если вы установили Windows на отдельном диске, вы можете решить проблему с помощью своппинга.

Вам необходимо сделать виртуальный своп между жесткими дисками. Таким образом:

Grub> map (hd0) (hd1) grub> map (hd1) (hd0)

После добавления этих двух строк, вы должны загрузить Windows (или DOS).

Несколько Windows операционных систем установлены на одном первом жестком диске (Скрыть/Показать)

С Windows опять могут возникнуть проблемы, если имеется несколько экземпляров размещенных на одном жестком диске, в особенности, если они установлены на первичных разделах. Раньше, когда вы использовали команду chainloader (последовательная загрузка), вы передавали управление начальному загрузчику Windows. Какому загрузчику операционной системы передать управление сейчас?

Проблема легко решается с помощью скрытия и отображения разделов. Если GRUB скроет раздел, то он будет невидим для Windows, что позволить избежать неопределенности. И наоборот, если вы сделаете видимым раздел, Windows обнаружит его и сможет с него загрузиться.

Приводимый здесь пример, взят из руководства, он демонстрирует этот момент.

Предположим, что мы имеем установленную Windows на первом и втором разделе жесткого диска. Вы хотите загрузить первый экземпляр Windows. Тогда вам необходимо выполнить следующую последовательность команд, которая сделает всю требуемую работу.

Grub> unhide (hd0,0) grub> hide (hd0,1) grub> rootnoverify (hd0,0) grub> chainloader +1 grub> makeactive

Вы изменили размер раздела; GRUB не работает

Это интересный случай. Он может случиться после использования программного обеспечения для работы с жесткими дисками (управление разделами жесткого диска, восстановление разделов из образов разделов, и т.д.), которое изменяет Таблицу Разделов. Обычно это случается, когда вы делаете такие изменения из Windows. Linux не будет информирована об этих изменениях, потому что Windows не обращает внимания ни на что, кроме имеющихся на этой машине продуктов Microsoft. Следовательно, GRUB не будет работать.

Скорее всего повреждена файловая система и ее необходимо восстановить для решения данной проблемы.

Загрузитесь с live CD и выполните следующие команды (предполагается что вы знаете, где размещены Linux-разделы).

Выполните проверку файловой системы:

$ fsck.ext2 /dev/hdXY

Замените X и Y буквой жесткого диска и номером раздела, который вы хотите проверить (hda2, hdb3, и т.д.).

Измените тип файловой системы на файловую систему ext2/3 .

$ tune2fs -j /dev/hdXY

Теперь монтируйте корневую файловую систему на /mnt/sysimage и запустите grub:

$ mount -t ext2 /dev/hdXY /mnt/sysimage ИЛИ $ mount -t ext2 /dev/hdXY /mnt/sysimage $ cd /mnt/sysimage/sbin $ grub

Вы снова вернулись в знакомую среду.

Для получения дополнительной информации о командах Linux, например, fsck.ext2 , tune2fs и других, обратитесь к Manual pages на Linux Reviews .

В заключение, несколько каверзных вопросов, отвеченных в Ubuntu