Быстрое восстановление загрузчика Grub в Ubuntu. Восстановление grub и MBR.

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

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

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

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


В специальном загрузочном разделе система создаёт главную загрузочную запись. Её английская аббревиатура выглядит как MBR, и расшифровывается как Master Boot Record. При старте компьютера BIOS обращается к этой записи, а потом в действие вступает Grub и, когда всё в порядке, происходит запуск Linux. И если же загрузчик повреждён, при запуске произойдёт ошибка и система запускаться не будет.

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

Самое важное, что следует учесть - это то, что не нужно сразу же думать о переустановке всей системы. Достаточно лишь просто восстановить Grub и всё будет работать, как и прежде. Перейдём к рассмотрению наиболее действенных способов, доступных даже неопытным юзерам.

Через терминал с загрузочного носителя

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

  1. Вставьте флешку или диск в разъём компьютера, после чего в качестве приоритетного для загрузки. Необходимая настройка находится в разделе Boot Device Priority либо First Boot Device. Чтобы запустить BIOS, при включении нажмите нужную кнопку или их комбинацию на клавиатуре. Наиболее популярными вариантами являются F2, Del, Shift + F2, F10. Чтобы не разбираться с БИОСом, можно просто нажать F11 или F12 и выбрать носитель из предложенного списка.
  2. Далее нужно выяснить, на каком разделе винчестера инсталлирована система, а какой указан в качестве загрузчика. Для этого нужно запустить терминал (аналог командной строки Windows), найдя его в меню приложений либо же нажав комбинацию клавиш Ctrl + Alt + T, либо Alt + F2. В открывшемся окошке вам нужно будет впечатать команду sudo fdisk -l. Сразу же утилита просканирует все разделы диска и отобразит информацию о каждом из них. Будет показана даже информация о других установленных на компьютер операционных системах. Вы сможете узнать название раздела, его расположение, размер, а также тип его файловой системы. При условии, что при установке Ubuntu вы совершали разметку вручную, вы без проблем поймёте, какой из разделов является загрузочным, а какой - корневым. При автоматической разметке ориентируйтесь на название Linux. Именно он и будет корнем вашей системы. Имя раздела обычно состоит из аббревиатуры sdc либо sda и цифры с порядковым номером.
  3. Далее нужно выполнить монтирование корневой файловой системы в папку /mnt. В этом вам поможет команда sudo mount /dev/sda1 /mnt, где вместо sda нужно прописать название вашего раздела.


Начиная с этого этапа, восстанавливать Grub в Linux возможно двумя методами.

Способ 1

  1. Введите команду восстановления загрузчика: sudo Grub-install -root-directory=/mnt /dev/sda.
  2. Перезагрузите Компьютер при помощи команды sudo reboot. В результате должно появиться меню выбора ОС.
  3. Если в этом меню отображается устаревшая информация, обновите загрузочную запись MBR. Для этого запустите Linux в обычном режиме, откройте терминал и используйте команду sudo update-Grub. Если это не помогает, примените sudo update-Grub —output=/mnt/boot/Grub/Grub.cfg, а затем повторите предыдущую.
  4. Ещё раз перезапустите компьютер.

Способ 2.

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

sudo mount /dev/sdc2 /mnt/boot

sudo mount —bind /dev /mnt/dev

sudo mount —bind /sys /mnt/sys

sudo mount —bind /proc /mnt/proc

  1. Далее вам понадобится запустить оболочку chroot. Для этого в терминале добавьте chroot /mnt /bin/bash. Первый параметр обращает внимание на корневой каталог, а второй - на специальную оболочку для преобразования команд юзера.
  2. Далее необходимо применить команды, чтобы попасть в Ubuntu и пользоваться практически всеми её приложениями, кроме сервисов и графического интерфейса:

source /etc/profile.

  1. Теперь можно непосредственно приступать к восстановлению Grub. Для этого нужно воспользоваться несколькими командами:
    • Для повторной инсталляции загрузчика на винчестер: sudo Grub2-install /dev/sdc (последний параметр - это название вашего раздела).
    • Для создания нового файла конфигурации: sudo Grub2-mkconfig -o /boot/Grub/Grub.cfg.
    • Для обновления меню загрузки: sudo Grub-update.
  2. Для завершения процедуры выйдите из оболочки chroot через команду exit, а также отмонтируйте ранее смонтированные разделы файловой системы:

sudo umount /mnt/dev

sudo umount /mnt/proc

sudo umount /mnt/sys

sudo umount /mnt

sudo umount /mnt/boot.

  1. Выполните перезагрузку через reboot.

Через утилиту восстановления загрузчика

Поскольку предыдущий метод может быть не всем под силу, воспользуемся той особенностью Ubuntu, что она может полноценно работать, будучи запущенной с флешки. Для этого мы применим специальную утилиту boot-repair. Что нужно сделать?

  1. Запустить Ubuntu с флешки и убедиться, что имеется активное интернет-соединение.
  2. Найти терминал и запустить в нём одну за другой такие команды:

sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get update

sudo apt-get install boot-repair.

  1. В меню приложений найти «Восстановление загрузчика» и включить утилиту.
  2. Кликнуть на кнопку «Рекомендуемый способ восстановления» и дождаться окончания процедуры.
  3. В большинстве ситуаций этих действий вполне достаточно для нормальной работоспособности загрузчика Grub Linux.


Через командную строку при частичном доступе к файловой системе

Иногда загрузчик Grub повреждён не настолько сильно, что не может загрузиться вся система. Например, загрузочный раздел остаётся целым, но сама утилита не имеет к нему доступа. В таком случае открывается программная оболочка, чем-то похожая на командную строку, и выводится сообщение следующего содержания: Minimal BASH like line editing is supported. Вот с помощью этой командной строки можно попробовать выполнить загрузку Ubuntu.

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

  1. Чтобы система отсканировала диски и разделы, задайте команду ls. В качестве ответа вы получите список жёстких дисков (например, hd1, hd2), а также тип файловой системы на них (например, msdos1, msdos2). К примеру, будем считать, что загрузочный раздел расположен в /dev/sda1.
  2. Далее нужно выбрать тот раздел, с которым вы желаете работать. В нашем случае команда будет записываться следующим образом: set root=(hd1,1).
  3. Загрузите обычную оболочку Grub: insmod ext2, insmod normal, normal.
  4. Запустите ядро Linux: linux /boot/vmlinuz.
  5. Загрузите систему: boot.
  6. После запуска Ubuntu в обычном режиме откройте терминал и закончите процедуру восстановления загрузчика следующими командами:

sudo Grub2-install /dev/sda

sudo Grub2-mkconfig -o /boot/Grub/Grub.cfg.

  1. Перезагрузитесь и радуйтесь нормальной работе.


Заключение

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

Grub — это загрузчик, используемый для запуска системы в большинстве дистрибутивов Linux, в том числе и в Linux Mint. Повреждение загрузчика может быть вызвано различными причинами, например, установкой Windows, другого дистрибутива Linux или переразметкой диска, изменением размера и положения разделов на диске и так далее.

В случае с установкой другой системы, чтобы восстановить загрузчик linux mint нам понадобится LiveCD с любым Linux-дистрибутивом. Самая частая задача из этой категории — восстановление Grub после Windows. Если же ошибка возникла из-за работы с разделами или повреждения файловой системы и загрузчик загружается с сообщением Minimal BASH like line editing is supported — это значит что мы можем справиться и без LiveCD своими силами. Конечно, восстановление grub в linux mint с помощью LiveCD системы намного проще, но не всегда под руками есть нужный диск.

В этой статье мы рассмотрим, как выполняется восстановление Grub2 обоими способами. Начнем с более простого способа — с помощью LiveCD. Хотя и статья ориентирована на Linux Mint, но на самом деле подойдет абсолютно для любого дистрибутива, потому что во всех дистрибутивах загрузчик один и тот же, и команды такие же, только версии могут немного отличаться.

Восстановление Grub2 с помощью LiveCD

Начнем с того, что вам нужна LiveCD система, той же разрядности, что и ваша система Linux Mint, на которую был установлен Grub. Причем, неважно будет там графический интерфейс или нет. Обычно все необходимые инструменты поддерживаются всеми дистрибутивами. А нужны нам только утилиты fdisk, mount и chroot. Чтобы восстановить загрузчик grub2 просто следуйте описанным ниже шагам.

Сначала вставьте носитель с LiveCD системой в дисковод или порт USB, если это флешка. Для загрузки с носителя, возможно, вам сначала понадобится зайти в меню BIOS и выставить приоритет загрузки с внешнего устройства.

Для запуска BIOS нажмите Del, F2, F8 или Shift +F2. В открывшимся меню перейдите на вкладку Boot, и в пункте Boot Device Priority или 1st Boot Device выберите нужное устройство:


Шаг 2. Определение разделов

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

Disk /dev/sdc: 14,5 GiB, 15514730496 bytes, 30302208 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x38972eb0

Device Boot Start End Sectors Size Id Type
/dev/sdc1 * 23949312 29882367 5933056 2,8G 7 HPFS/NTFS/exFAT
/dev/sdc2 29882368 30302207 419840 205M b W95 FAT32
/dev/sdc3 13551616 23949311 10397696 5G 83 Linux
/dev/sdc4 2048 12621823 12619776 6G b W95 FAT32

В выводе программы вы видите — все подключенные к компьютеру разделы, их размер, а также файловую систему. По этим данным вам и предстоит понять, какой раздел используется в качестве корня в вашей системе. Если вы делали разметку вручную, вам не составит труда понять где то, что нужно. Например, у меня загрузчик установлен на раздел /dev/sdc2 размером 205Мб с файловой системой Fat32, а корень — /dev/sdc3 — размером 5 Гигабайт.

Шаг 3. Монтирование файловой системы

Теперь вам предстоит смонтировать вашу корневую файловую систему в каталог /mnt:

mount /dev/sdc3 /mnt

Смонтируем папку с файлами загрузчика:

mount /dev/sdc2 /mnt/boot

Шаг 4. Подготовка к входу в систему

Чтобы восстановить загрузчик linux mint мы будем использовать вашу основную систему Linux, запущенную на ядре от LiveCD. Такую возможность предоставляет команда chroot. Но перед тем, как ее использовать нужно вручную подключить к вашей корневой ФС, смонтированной в /mnt все необходимые файловые системы взаимодействия с ядром — /dev, /sys, /proc:

sudo mount --bind /dev /mnt/dev

$ sudo mount --bind /sys /mnt/sys

$ sudo mount --bind /proc /mnt/proc

Шаг 5. Вход в окружение системы

Для входа в окружение вашей системы используйте команду:

chroot /mnt /bin/bash

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

Затем выполните эти команды для загрузки и обновления переменных профиля:

$ source /etc/profile

Теперь вы находитесь в Linux Mint, и можете выполнять почти все его программы, разумеется, недоступны сервисы, поскольку во время загрузки не использовалась система инициализации, а также как следствие, недоступно графическое окружение.

Шаг 6. Восстановление Grub2

Теперь восстановление Grub в Linux Mint. Просто выполните следующие команды. Первая, для переустановки загрузчика на жесткий диск:

sudo grub2-install /dev/sdc

Здесь /dev/sdc — имя вашего жесткого диска.

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

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

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

Еще можно использовать команду:

sudo grub-update

Но она работает только в Ubuntu и основанных на ней дистрибутивах.

Шаг 7. Готово

Выйдите из окружения chroot командой:

И перезагрузите компьютер:

Теперь все работает.

Восстановление Grub2 без LiveCD

В некоторых случаях повреждения Grub не вызывает полную невозможность загрузки. Например, когда загрузочный код в MBR цел, но программа не может получить доступ к файлам на диске. Тогда загрузчик открывает вместо меню некое подобие терминала с сообщением: Minimal BASH like line editing is supported. С помощью этого терминала мы можем попытаться загрузить систему. Восстановление grub2 без livecd не такая уж и сложная задача, хотя, это сложнее, чем первый способ.

Все что вам потребуется — это знать на каком устройстве расположена система и само ядро Linux. Синтаксис и команды очень похожи на обычные команды bash, но немного отличаются по назначению. В начальном режиме восстановления доступны только несколько команд это ls, insmod, set и unset.

Чтобы посмотреть список подключенных к компьютеру дисков просто выполните:

(hd2,msdos1, hd2,msdos2, hd2,msdos3, hd2,msdos4)

Важно отметить, что в grub диски и разделы именуются немного по другому. Здесь каждый жесткий диск имеет название hd и номер диска, например, hd0 или hd1. Разделы именуются начиная с единицы.

Вы можете работать только с одним разделом в определенный момент. Чтобы установить раздел, с которым нужно работать, нужно указать его в переменной root. Для установки переменных окружения используется команда set. Например, у меня файлы загрузчика grub находятся на /dev/sdc2, то-есть hd2,2:

set root=(hd2,2)

Загрузим нормальную оболочку grub:

insmod ext2
$ insmod normal
$ normal

После этого можно найти и запустить ядро. Для этого используйте команду linux. Обычно ядро находится папке /boot:

linux /boot/vmlinuz

И наконец загружаемся:

Теперь, когда система загрузится, вам останется только открыть терминал, и выполнить следующие команды, чтобы завершить восстановление загрузчика linux mint:

sudo grub2-install /dev/sda

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

Вот и все.

Выводы

Теперь восстановление загрузчика linux mint не вызовет у вас проблем в любых обстоятельствах, независимо от того, есть ли у вас диск с другим дистрибутивом или нет. Если остались вопросы, напишите в комментариях!

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

GRUB2 это новая ветка и кардинально отличается от GRUB Legacy, создан на основе PUPA и имеет модульную структуру. Поддерживает множество файловых систем, работает с BIOS и EFI.

Установка GRUB2:

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

# grub-install /dev/sda

/dev/sda - это устройство, а не раздел.

# grub-install

Также существует ряд опций, для каждого случая, версий GRUB2 и дистрибутива онимогут отличиться, описывать нет смысла. Переустановка ничем не отличается от установки и выполняется командой grub-install.

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

Настройка:

по умолчанию конфигурационный файл находится тут - /boot/grub/grub.cfg . Если файл был генерированный при помощи grub-mkconfig , то он непригоден к редактированию и при следующем обновлении он будет перезаписан. А если вы, все-таки, решили сконфигурировать файл загрузчика сами, тогда удалите сгенерированную версию и создайте новую, сами или на основе примеров.

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

Начнем с самого простого, автоматическая генерация выполнятся командой:

# grub-mkconfig

Эта команда генерирует файл grub.cfg . Чтобы автоматически обнаружить посторонние ОС необходим пакет os-prober . В основном настройка конфигуратора grub-mkconfig выполняется в файле /etc/default/grub , а также в файлах каталога /etc/grub.d/ . Добавить свои пункты меню можно в файле /etc/grub.d/40_custom или /boot/grub/custom.cfg . Чтобы изменения вступили в силу необходимо выполнить команду:

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

Команда создаст файл /boot/grub/grub.cfg и проверит конфигурационные файлы на наличие ошибок. Конфигурационный файл /etc/default/grub содержит параметры по умолчанию, каждый параметр имеет комментарий (краткое описание) на английском языке. Далее описание некоторых параметров из конфигурационного файла:

  • GRUB_DEFAULT — Выбор загрузки пункта меню по умолчанию. Может быть выбран по номеру или названию.
  • GRUB_TIMEOUT — Указывает на время задержки перед загрузкой пункта по умолчанию.
  • GRUB_HIDDEN_TIMEOUT — Время ожидания перед показом списка загрузки пунктов меню.
  • GRUB_DISABLE_OS_PROBER — Убирает проверку на наличие установленных ОС.
  • GRUB_GFXMODE - Отвечает за разрешение экрана. Командой vbeinfo можно посмотреть список доступных параметров разрешения в командной строке GRUB2.
  • GRUB_BACKGROUND — Путь к фоновой картинке.
  • GRUB_THEME — Путь к темам.

Ручная конфигурация:

Язык скрипта конфигурации GRUB2 упрощённый UNIX-шелл. Скрипт может быть как простым так и очень сложным, сложность скрипта ничем не ограничена. Скрипт генерируемый grub-mkconfig пригоден для загрузки в большинстве случаев, но он громоздок.

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

Более подробно о конфигурации GRUB2 с примерами кода конфигурации и другой информацией можно прочитать на

Все чаще и чаще на форумах возникают вопросы:

Как удалить Ubuntu и восстановить загрузчик для Windows?
Как заменить grub на загрузчик Windows?
Установка Ubuntu рядом с Windows 8?
Ubuntu рядом с Win 8, загрузчик Windows не видит Ubuntu.
В связи с этим, решил написать заметку, о восстановлении загрузчика grub, о том, как нужно правильно удалять linux, восстанавливать загрузчик Windows и MBR.


1 способ. У нас есть live-cd/usb с дистрибутивом Linux.

1. Записываем live-cd, live-usb практически любого дистрибутива linux, будь то ubuntu, mint или еще что-то там.

2. Загружаемся с live-cd/usb, открываем терминал (Ctrl+T) и смотрим таблицу разделов диска:
$ sudo fdisk -l


Помимо fdisk, еще существует много различных утилит для просмотра и редактирования таблицы разделов: , cfdisk например.

По таблице видно, что linux установлен на разделе /dev/sda1 , напротив него стоит звездочка, это признак того, что раздел загрузочный.

3. Теперь этот раздел нужно смонтировать:
$ sudo mount /dev/sda1 /mnt

4. Раздел смонтирован, следовательно мы имеем доступ к нему.

Для этого нужно установить grub на жесткий диск (НО НЕ НА РАЗДЕЛ ЖЕСТКОГО ДИСКА!), так как мы восстанавливаем MBR:
$ sudo grub-install --root-directory=/mnt /dev/sda
где /mnt — это рутовый каталог, который мы смонтировали, /dev/sda — имя жесткого диска.
После этого MBR восстановлен, grub установлен.

Ситуация:

У вас на машине стоит три системы например: Windows 7 Ultimate, Windows XP Professional и Linux Mint 14.
Windows вам надоела, вы ее снесли и по каким-либо причинам, в списке grub"а остались разделы Windows.

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

1. В консоли пишем:
$ sudo update-grub --output=/mnt/boot/grub/grub.cfg
где update-grub — обновляет конфиг загрузчика, параметр --output указывает на файл конфигурации grub"а.

2. После проделанных операций, можно перезагрузиться и загрузиться с жесткого диска(естественно заходим в BIOS).
Ну и все собственно.
Вот например как выглядит мое меню grub"а, установлен только Debian:


1. Опять же, загружаемся с live-cd/usb, смотрим разделы:
$ sudo fdisk -l

2. Монтируем раздел, на котором установлен linux и еще некоторые важные для работы разделы:
$ sudo mount /dev/sda1 /mnt
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys

Если раздел /boot на отдельном разделе диска, то его тоже нужно примонтировать, например:
$ sudo mount --bind /boot /mnt/boot

3. Скопируем дефолтный файл grub"а (этот шаг можно пропустить):
$ sudo cp /etc/resolv.conf /mnt/etc/resolv.conf

4. Теперь нужно перейти в среду chroot:
$ sudo chroot /mnt

5. Устанавливаем grub:
# grub-install /dev/sda

Если возникла ошибка, поможет команда:
# grub-install --recheck /dev/sda

6. Выходим из chroot, отмонтируем разделы и перезагружаемся:
# exit
$ sudo umount /mnt /dev
$ sudo umount /mnt/proc
$ sudo umount /mnt
$ sudo umount /mnt/boot #если требуется
$ sudo reboot

Ситуация:

У вас нет второго компьютера чтобы записать live-cd/usb, соотвественно нужно как-то выкручивать (у самого была такая ситуация после экспериментальной установки windows 8).

Передо мной лишь черный экран и:
grub>

Это восстановление наиболее сложное (Rescue Mode), но если делать по инструкции, все должно пройти нормально.
В rescue mode доступно всего четыре команды:
ls
set
unset
insmod

1. Нам нужно посмотреть, какие разделы видит наш grub:
> ls
появится что-то типа:
(hd0) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1)

2. Кое-как криво Rescue Grub нам вывел разделы диска, якобы с файловой системой msdos.
Но это не важно.
Счет дисков у grub начинается с нуля, а разделов - с единицы.
По нашему выводу можно определить, что на первом диске у нас два раздела и на втором тоже два.
Экспериментальным путем угадывания будем определять, где же находится наш установленный linux.

3. Допустим раздел (hd0,1) — это именно то что нам нужно (приставку msdos можно опустить).
Пишем:
> set prefix=(hd0,1) /boot/grub
> set root=(hd0,1)

Таким образом мы получаем доступ к диску.

4. Пишем команду:
> ls /boot/grub
если будет какой-то вывод файлов, то все получилось, если же ничего нет, то мы промахнулись разделом, нужно смотреть другие, например (hd1,0) .

5. Теперь пишем:
> insmod ext2
> insmod normal
> normal

6. После этого загружается grub, определяет операционные системы и практически восстановление завершено.

7. Загружаем linux, в терминале пишем:
$ sudo grub install /dev/sda

Все. grub прописывается в MBR и дальнейших проблем возникать не должно.

Оригинал: 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, но установленным на жестком диске дистрибутивам, конечно же, если вы знаете о том, на каком диске установлен каждый из дистрибутивов и по какому пути находятся его файлы образа ядра и образа начальной файловой системы.



gastroguru © 2017