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

Производится с «живой» системы (например, в Knoppix), так как без рабочего загрузчика невозможно запустить дистрибутив Linux, установленный на жестком диске вашего компьютера.

Базовая информация о загрузочном секторе

Прежде чем я расскажу, как на самом деле производится установка , необходимо ненадолго заглянуть внутрь BIOS и MS DOS. Интерпретация (одного или нескольких) загрузочных секторов происходит по принципу, появившемуся не один десяток лет назад. В дальнейшем предполагается, что вы знаете о существовании нескольких типов разделов.

Основная запись диска (MBR). Это первый сектор жесткого диска. Он занимает 512 байт и обычно содержит крошечную программу (не больше 446 байт). Далее следует таблица разбиения диска для четырех основных разделов (64 байт) и цифровая подпись (2 байт).

Загрузочный сектор раздела.

Такой сектор есть не только в MBR, но и в каждом разделе, и в действительности он может занимать до 16 секторов жесткого диска (8192 байт). В большинстве файловых систем загрузочный сектор раздела не используется, то есть сами данные начинаются только с последующих секторов. Но есть и исключения. Например, файловая система XFS использует все сектора. Если при этом информация загрузочного сектора раздела XFS будет стерта, то файловая система разрушится!

Запуск компьютера.

При запуске BIOS считывает запись MBR первого жесткого диска, загружает ее в оперативную память и проверяет, содержатся ли в двух последних байтах шестнадцатеричные коды 55 АА. Эти коды служат для идентификации носителей с возможностью загрузки. Если коды совпадают, то выполняется минипрограмма с загрузочного сектора. На компьютере, где установлена система MS DOS или Windows (не Linux), такая программа «узнает», какие из системных разделов помечены как активные (обычно это первый раздел). Затем эта программа загружает еще одну программу - из загрузочного сектора активного раздела - и выполняет ее. И уже эта программа отвечает за запуск Windows или MS DOS.

Если на компьютере установлено несколько жестких дисков, можно настроить в BIOS, в каком порядке будут запрашиваться жесткие диски при загрузке. Таким образом, в современных компьютерах система может загружаться с внешнего диска или USB-флешки. BIOS можно настроить и так, чтобы загрузка производилась с CD или DVD.

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

Самый обычный способ заключается в том, чтобы установить загрузчик Linux в MBR и выбирать, какую систему запускать, - Windows или Linux.

Если на компьютере уже установлена современная версия Windows (новее 9х/ ME), можно настроить загрузчик Windows так, чтобы он запускал . Достоинство в том, что MBR даже не нужно трогать. Недостаток состоит в том, что процесс установки относительно сложен. Кроме с WUBI, мне не известен ни один дистрибутив Linux, который мог бы выполнять такую операцию. Всегда требуется работать вручную.

Третий вариант заключается в том, чтобы установить в загрузочный сектор основного раздела и пометить этот раздел как активный. При использовании такого варианта есть то же существенное достоинство, что и в предыдущем случае: не нужно трогать MBR. Недостаток в том, что метод работает лишь с основными разделами (но не с логическими) и лишь с теми файловыми системами, которые не касаются загрузочного сектора вашего раздела. Поскольку эти ограничения существуют, мы этот вариант далее рассматривать не будем.

Создание резервной копии MBR

Root# cp /usr/lib/grub

Затем запустите и выполните в нем следующую команду setup. Вместо (hdl,12) нужно указать имя устройства того раздела вашего жесткого диска, в котором находится каталог /boot. Обратите внимание - часто каталог /boot находится в собственном разделе, а не в системном! Переменная (hdO) обозначает место, куда должен быть установлен
Если запускается опосредованно, через загрузчик Windows.
Если запускается опосредованно, через загрузчик Linux (например, ), который уже находится в MBR, а вы не хотите его трогать. Этот вариант возможен прежде всего в тех случаях, когда вы намереваетесь параллельно использовать несколько экземпляров Linux.
устанавливается в загрузочный сектор основного раздела, и вы помечаете этот раздел как «активный» с помощью команды fdisk (клавиша А, команда toggle a bootable flag). В таком случае программа, находящаяся в MBR, учитывает загрузочный сектор активного раздела. Данный метод не работает для логических разделов, а также в тех случаях, когда в MBR уже установлен GRUB или другой загрузчик.

Обычно для такой установки применяется системный раздел Linux. Иначе говоря, если вы установили Linux в раздел /dev/sda7 и хотите установить GRUB в загрузочный сектор этого же раздела, выполните приведенные ниже команды. Единственное отличие по сравнению с установкой в MBR состоит в том, что в setup вы указываете не (hdO), а нужный раздел.

root# grub grub> root (hd1,12) grub> setup (hd0,6) (Установка в загрузочный сектор /dev/sda7) grub> quit

ВНИМАНИЕ

В некоторых файловых системах загрузочный сектор раздела нельзя использовать с помощью загрузчика или других программ. К таким системам относится XFS. Если установить GRUB в загрузочный сектор раздела XFS, то файловая система будет разрушена! По этой причине в таких системах установка в загрузочный сектор не применяется.

Установка на USB-носитель

В BIOS современных компьютеров обычно предусмотрена возможность загружать систему с USB-носителя. В принципе вполне можно установить GRUB

В загрузочный сектор флешки и загружать с его помощью Windows, Linux и т. д. Теоретически все просто, но на практике часто возникают проблемы. Есть две основные причины проблем.

Материнская плата должна правильно распознавать USB-носитель уже при загрузке и работать с ним как со средством загрузки. Обратите внимание и на то, что флешку можно отформатировать двумя способами: как «супердискету» (superfloppy) или как жесткий диск. Какой вариант будет использоваться, зависит от BIOS.

Учитывайте также, что необходимо активизировать поддержку USB в BIOS (обычно для этого предназначается специальный параметр BIOS). В отличие от Linux, GRUB может обращаться к USB-носителям только через BIOS!Если BIOS опознает USB-носитель как загрузочный диск, то при этом (как минимум в некоторых версиях BIOS) изменится порядок, в котором GRUB будет «видеть» носители с данными. Теперь первым диском (hdO) будет считаться USB-носитель, встроенные жесткие диски будут запрашиваться через (hdl), (hd2) и т. д. При необходимости соответствующим образом измените /boot/ grub/devices.map перед установкой GRUB.

Оптимальная стратегия - сначала попробовать установить GRUB на флешке. Когда Linux запущена, GRUB опознает флешку под названием (hdn+1), где n - это последний внутренний жесткий диск. Если ваша система Linux, как в предыдущих примерах, находится в разделе /dev/sdb13 и в компьютере имеется два внутренних диска, флешка будет называться (hd2). Для того чтобы установить GRUB в MBR флешки, используйте следующие команды:

root# grub grub> root (hd1,12) grub> setup (hd2) (Установка в MBR USB-носитоля) grub> quit
В идеальном случае после перезапуска компьютер обнаружит GRUB в MBR на флешке и, как и предполагалось, загрузит операционные системы, указанные в menu.l st. Если при запуске операционных систем возникнут сложности, перейдите из меню GRUB в интерактивный режим, нажав клавишу С, а затем, воспользовавшись командой cat и клавишей табуляции, узнайте, под какими названиями GRUB «видит» жесткие диски. Нажатие Esc выводит вас обратно в меню, где с помощью клавиши Е можно изменить команды загрузки и испробовать их еще раз.

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

USB-модули для ядра - ядро уже в момент запуска должно быть «в состоянии» обратиться к USB-носителю. Чтобы это получилось, в файле Initrd должны храниться все необходимые USB-модули. Базовые сведения о том, как построены файлы Initrd и как они создаются, сообщаются в следующем разделе.

Названия устройств - в зависимости от того, как загружается компьютер - с подключенными внешними жесткими дисками (USB) или без них, - названия устройств жестких дисков могут изменяться (/dev/sda на /dev/sdb). Поэтому целесообразно использовать в файле /etc/fstab и при задании корневых параметров в строке kernel в menu.lst не названия устройств, аномера UUID. Если вы работаете с , то в menu.lst с помощью uuid также можно выбрать тот раздел, в котором будут находиться ядро и файл Initrd.

При работе с современными материнскими платами, как правило, можно без проблем использовать Linux, установленную прямо на USB-носителе. Однако, чтобы все заработало, порой приходится потрудиться и потратить время. Если вы только начинаете работать с Linux, не рекомендую использовать этот вариант.
Читайте так же:

Установка загрузчикаДля загрузки вашей системы Red Hat Enterprise Linux AS без специального загрузочного диска, вам потребуется установить загрузчик. Вы можете выбрать между GRUB (устанавливаемым по умолчанию) и LILO. GRUB - программа-загрузчик, которая может загружать на вашем компьютере Red Hat Enterprise Linux AS. Он может также загружать другие операционные системы, например Windows 9 x . На этом экране вы определяете как настроить (если вы устанавливаете) загрузчик и какой именно (GRUB или LILO). Выберите загрузчик, который вы будете устанавливать. Если вы решили использовать LILO, убедитесь что выбран он, а не GRUB.



Рисунок 3-9. Установка загрузчика

Если вы решили установить загрузчик (GRUB или LILO), вы должны определить где он будет установлен. Вы можете установить загрузчик в одно из двух размещений:

Главная загрузочная запись (The master boot record (MBR))Это рекомендуемое размещение для загрузчика, если только в MBR уже не установлен другой загрузчик операционных систем, например System Commander или OS/2"s Boot Manager. MBR - специальная область на диске, которую автоматически загружает BIOS вашего компьютера, и в первую очередь передает ей управление процессом загрузки. При установке загрузчика в MBR, сразу после включении компьютера, GRUB (или LILO) предложит выполнить загрузку. Затем вы можете загрузить Red Hat Enterprise Linux AS или любую другую операционную систему, настроенную в загрузчике. Первый сектор вашего корневого раздела (root)Рекомендуется, если вы уже используете другой загрузчик операционной системы (например, OS/2"s Boot Manager). В этом случае, сначала этот загрузчик получит управление. Затем вы можете настроить ваш загрузчик для запуска GRUB (или LILO), который в свою очередь загрузит Red Hat Enterprise Linux AS.

Выберите загрузчик: GRUB или LILO, который будет установлен в вашей системе. Если вы будете использовать только Red Hat Enterprise Linux AS, установите загрузчик в MBR. Если вы хотите добавить параметры по умолчанию в команду загрузки GRUB или LILO, введите их в поле Kernel parameters (Параметры ядра) . Все указанные параметры будут передаваться ядру Linux при каждой загрузке. - этот параметр позволяет вам преодолеть ограничение в 1024 цилиндра для раздела /boot . Если ваша система поддерживает расширение LBA32, что позволяет загружать систему за рамками 1024 цилиндров, вы можете вынести раздел /boot за эту границу. Если программа установки на данном этапе не определила поддержку этого расширения в BIOS, установить параметр Force use of LBA32 (not normally required) (Принудительное использование LBA32 (обычно не требуется)) .В таблице приведен список всех разделов, включая разделы других операционных систем. Раздел, содержащий корневую файловую систему Red Hat Enterprise Linux AS в поле Boot label (Метка загрузки) обозначен как Red Hat Linux . Другие разделы могут также иметь метки. Если вы решили добавить метки для других разделов (или изменить существующую), щелкните на разделе для выделения. Выделив раздел, вы можете изменить метку, отредактировав имя в поле Метка загрузки (Boot label) .

Режим восстановления

Если необходимо воспользоваться режимом восстановления, это можно сделать следующими способами:Загрузившись с компакт-диска, введите linux rescue в приглашении boot: . Загрузившись с созданного вами загрузочного диска с поддержкой сети, введите linux rescue в приглашении boot: . Затем вам будет предложено загрузить образ диска восстановления из сети. Загрузившись с созданного вами загрузочного диска, введите linux rescue в приглашении boot: . Затем вы можете выбрать способ установки и правильный путь для загрузки установки. За дополнительной информацией о режиме восстановления, обратитесь к Официальному руководству по настройке Red Hat Linux .

Альтернативные загрузчики систем

Если вы не желаете использовать GRUB или LILO для загрузки вашей системы Red Hat Enterprise Linux AS, вы можете выбрать следующие варианты:

Загрузочный дискВы можете использовать диск, созданный для вас программой установки (если это было сделано). LOADLINВы можете загружать Linux из MS-DOS. К сожалению, для этого требуется чтобы копия ядра Linux (и первоначальный RAM-диск, если вы используете SCSI адаптер) находилась на разделе MS-DOS. Выполнить это можно единственным способом: загрузить вашу систему Red Hat Enterprise Linux AS по-другому (например, с помощью LILO или дискеты), затем скопировать ядро в раздел MS-DOS. LOADLIN можно получить по адресу ftp://metalab.unc.edu/pub/Linux/system/boot/dualboot/ или на соответствующих зеркалах. SYSLINUXSYSLINUX - это программа для MS-DOS, очень похожая на LOADLIN. Её можно получить по адресу ftp://metalab.unc.edu/pub/Linux/system/boot/loaders/ и на соответствующих зеркалах. Некоторые коммерческие загрузчикиВы можете загрузить Linux, используя коммерческие загрузчики операционных систем. Например, System Commander и Partition Magic способны загружать Linux (при этом необходимо, чтобы GRUB или LILO были установлены в корневом (root) разделе Linux).

Многопроцессорные платформы, GRUB и LILO

Этот раздел относится только к SMP (многопроцессорным) платформам. Если программа установки обнаруживает в вашей системе многопроцессорную платформу, она создаст две записи в /boot/grub/grub.conf или /etc/lilo.conf (в зависимости от выбранного загрузчика), вместо одной. В файле grub.conf появятся записи: Red Hat Linux (версия ядра) и Red Hat Linux (версия ядра -smp) . По умолчанию будет выполняться загрузка Red Hat Linux (версия ядра -smp) . Однако, если при загрузке ядра, поддерживающего многопроцессорность, возникают проблемы, вы можете загрузить вариант Red Hat Linux (версия ядра) . Система сохранит прежнюю функциональность, но будет работать только с одним процессором. В файле lilo.conf появятся записи linux и linux-up . По умолчанию выбрана загрузка linux . Однако, если при загрузке ядра, поддерживающего многопроцессорность, возникают проблемы, вы можете загрузить вариант linux-up . Система сохранит прежнюю функциональность, но будет работать только с одним процессором.

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

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

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

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

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

            Все есть файл

            Для того чтобы успешно овладеть секретами 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, самое время получить дополнительную информацию и разобрать наиболее типичные проблемы, которые могут возникнуть.

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

            • Загрузитесь с флоппи диска или 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

            Для выбора и запуска операционной системы во время загрузки компьютера используется специализированная программа — загрузчик. Самый популярный загрузчик — Grub. При установке нескольких операционных систем, например, Linux поверх Windows, в меню загрузчика первой будет последняя установленная ОС.

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

            Grub Customizer

            Grub Customizer — это программа, позволяющая настраивать различные параметры загрузчика Grub. В том числе и положение и очередность пунктов загрузки. Установить программу можно из официальных репозиториев. Например, в Ubuntu нужно использовать ppa:

            sudo add-apt-repository ppa:danielrichter2007/grub-customizer
            $ sudo apt-get update
            $ sudo apt-get install grub-customizer

            Для запуска программы откройте терминал (Ctrl+Alt+T) и наберите grub-customizer:

            Для работы программы необходимы права root, в некоторых системах возможно придется использовать такую команду:

            gksu grub-customizer

            Также программу можно запустить из главного меню. Главное окно выглядит вот так:


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


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

            Если потом вы захотите опустить Windows обратно вниз, есть обратное действие — Переместить вниз .

            Для сохранения настроек просто нажмите кнопку Сохранить. Готово. Можете перезагружать компьютер и смотреть что получилось.


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


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


            Кроме того, можно загружать по умолчанию последнюю загруженную ОС, для этого есть галочка:


            Изменение порядка загрузки Grub через терминал

            Как я и обещал, теперь рассмотрим как сделать загрузку WIndows первой в Grub с помощью конфигурационных файлов. Конфигурация Grub находится в файле /boot/grub/grub.cfg.

            gksu gedit /boot/grub/grub.cfg

            Как правило, строки меню выглядят вот так:

            menuentry имя_пункта --опции {
            ...

            Например пункт Windows:

            menuentry "Windows 8 (loader) (on /dev/sda1)" --class windows --class os $menuentry_id_option "osprob
            er-chain-FC324E26324DE66C" {
            ....

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

            Аналогично тому как мы настраивали пункт, загружаемый по умолчанию в Grub Customizer, это можно сделать и в терминале.

            Откройте файл /etc/default/grub.

            gksu gedit /etc/default/grub

            Здесь нас интересует строчка:

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

            GRUB_DEFAULT="Windows 8 (loader) (on /dev/sda1)"

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

            sudo grep menuentry /boot/grub/grub.cfg

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

            GRUB_SAVEDEFAULT=true

            А в GRUB_DEFAULT укажите saved:

            GRUB_DEFAULT=saved

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

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

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

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