Домой / Музыка / Начальный загрузчик GRUB - полное руководство. Лекарство для GRUB. Редактирование загрузчика

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

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

Если вы на своем компьютере используете дуалбут из Windows и Linux, то вероятно уже знаете, что во время установки ОС для того, чтобы было меньше возни, лучше устанавливать сначала а потом только , Debian или что вы там желаете установить. Связано это с тем, что Windows не видит других операционных систем кроме своих и поверх загрузчика GRUB записывает в MBR свой загрузчик. Соответственно, если вы установите сначала Linux а потом Windows, то в итоге не сможете загрузить Linux, так как его просто не будет в списке загрузки. Но что же делать если вам все же необходимо переустановить Windows или просто установить ее на компьютер с Linux? Не переустанавливать же ради этого и Linux? Нет. Просто после всего, что вы сделаете нужно будет восстановить загрузчик GRUB.

Для демонстрации я приведу свой случай с виртуальными машинами, но данный способ ничем не отличается от восстановления GRUB на реальном железе.

У меня на один виртуальный жесткий диск были установлены Ubuntu 14.04 и Windows 7. И вот мне захотелось попробовать developer версию Windows 10. Я решил установить ее поверх семерки. Как и положено, после всех манипуляций Windows 10 заработала, а Ubuntu не запускалась. Так как Ubuntu мне нужна была для работы я решил восстановить затертый GRUB.

Восстановление GRUB 2

Сначала необходимо загрузится с LiveDVD. Когда система загрузится, открываем терминал (Ctr+Alt+T) и смотрим структуру разделов с помощью команды:

Sudo fdisk -l

У меня, как видно по выводу команды, диск разделен на 6 разделов: два NTFS для Windows, Extended (расширенный) и три отмечены как Linux для Ubuntu. Чтобы установить GRUB необходимо примонтировать корневой раздел Ubuntu — мой sda5:

Sudo mount /dev/sda5 /mnt

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

Sudo grub-install --root-directory=/mnt /dev/sda

После этого можно перезагрузить компьютер:

Sudo reboot

GRUB восстановлен. Но остался один момент. Сейчас на виртуальной машине была установлена Windows 10, но в меню загрузчика по прежнему она отображалась как семерка, из-за чего при попытке ее запуска выскакивала ошибка. Чтобы исправить это достаточно было просто загрузится в Ubuntu (не LiveDVD) и через терминал обновить загрузчик.

Многие новые пользователи операционных систем, отличных от Windows, с большой долей сомнения и скепсиса в наши дни встречают фразу «начальный загрузчик». Этому есть вполне логичное объяснение: большинство новых пользователей до перехода к использованию других менее распространенных на рынке операционных систем в повседневной жизни использовали ту же Windows. Загрузчик реализован в ней максимально прозрачно и примитивно. В некоторой степени это, конечно, прибавляет удобства рядовым пользователям, однако вместе с тем это уменьшает функциональные возможности и без того универсальной и популярной операционной системы. Поэтому всем пользователям, которые решили обратить внимание на другие продукты индустрии информационных технологий, следует непременно ознакомиться с универсальным загрузчиком GRUB. В дальнейшем это может значительно помочь пользователю при работе сразу с несколькими операционными системами, установленными на одной машине.

Универсальный инструмент
Прежде всего попробуем разобраться с наименованиями GNU GRUB. Данная аббревиатура в переводе с английского означает “главный унифицированный загрузчик». Создателем данного загрузчика является некоммерческая организация «Проект GNU». Она прославилась в сфере информационных технологий своим свободно распространяемым программным обеспечением. По сути сам GRUB представляет меню выбора нужной операционной системы из перечня поддерживаемых систем, в который входит FreeBSD, Linux и Solaris. GRUB при этом может работать даже с операционной системой Windows. Однако, чтобы запустить подобные системы, которые напрямую не поддерживаются данным начальным загрузчиком, существуют некоторые особенности, которые в дальнейшем будут подробно изучены.

Развитие технологий
Непрерывно возрастающая популярность GRUB с каждым годом была основополагающей причиной, которая побуждала неуклонно развивать и совершенствовать загрузчик в дальнейшем. Самая первая версия загрузчика, которая называлась GRUB Legacy, отлично справляется с задачами унифицированного загрузчика для систем UNIX. Ее продолжительный срок существования также обеспечили широкая поддержка серьезных компаний и серверных дистрибутивов. Но стоит отметить, что данное обстоятельство никак не повлияло на дальнейшее развитие данного загрузчика. Благодаря этому пользователи получили последнюю на данный момент времени версию GRUB2. Будучи написанным практически заново, GRUB2 вряд ли обладает хоть какими-то общими чертами с устаревшим GRUB Legacy. Будучи по умолчанию используемым загрузчиком в операционной системе Ubuntu начиная с версии 9.10 GRUB2 полностью остановил дальнейшую разработку отлично зарекомендовавшей себя в прошлом Legacy. Новичку с самого начала необходимо уяснить, что GRUB 2 представляет собой более сложный в работе загрузчик по сравнению с предыдущей версий. Поэтому чтобы уберечь покупателей от возможных проблем и трудностей, далее будут изложены мельчайшие детали. Их понимание позволит пользователю в полной мере применять все новшества последней версии, которых немало. К ним относятся и скриптовая поддержка (переменных, функций, условий, циклов), возможность изменения внешнего вида загрузчика под вкус пользователя, возможность динамичной подгрузки модулей, которая позволяет расширить функционал не на этапе сборки, а непосредственно во время выполнения, совместимость с различными архитектурами, поддержка загрузки MacOS, стабильная работа с файловыми системами NTFS, FAT32, FAT16. Благодаря кроссплатформенному типу установки GRUB2 можно устанавливать с другой архитектуры. Также при возникновении проблемной ситуации существует возможность введения безопасного режиме. Кроме того, в новой версии загрузчика были исправлены ошибки старой GRUB Legacy, которые из-за требования обратной совместимости изначально не могли быть пофиксены. В дальнейшем под названием GRUB мы будем иметь в виду GRUB 2, с которой будем в полной мерее разбираться.

LILO
Конечно же, выбор загрузчиков операционных систем не ограничивается одним GRUB’ом. Аналогичным загрузчиком является LILI. Это начальный загрузчик Linux систем, который до сих пор не утратил своей актуальности. В пользу того же GRUB следует отметить несколько отличительных особенностей, которыми конкурент пока не может похвастаться. LILO поддерживает только 16 конфигураций загрузки, в то время как GRUB поддерживает неограниченное количество таких конфигураций. Также GRUB может загружаться по локальной сети, чего нельзя сказать о LILO. У LILO отсутствует тот самый командный интерактивный интерфейс, к удобству которого уже успели привыкнуть пользователи последней версии GRUB. Единственная общая особенность обоих загрузчиков заключается в необходимости компилировать каждый раз все внесенные в меню изменения. В фирменном загрузчике Linux издавна отсутствовала функция автоматического сохранения. GRUB 2 этой удобной особенностью похвастаться тоже не может. Даже если учесть этот неудобный для повседневного использования нюанс, загрузчик LILO проигрывает конкуренту сразу по нескольким пунктам. Благодаря этому GRUB получает более широкое распространение среди пользователей домашних компьютерных систем.

Установка GRUB: особенности процесса
Для начала необходимо убедиться в том, что у вас на компьютере имеется либо установленная система Ubuntu, либо ее загрузочный диск. После запуска системы необходимо при помощи комбинации клавиш Ctrl+Alt+F2 вызвать терминал. Затем в нем необходимо прописать следующие команды: — sudo add-apt-repository ppa: cjwatson/grub, — sudo add-get update && sudo add-get install grub 2, — sudo update-grub2. Даже если у вас установлена операционная система не Ubuntu, но имеется Live CD, то процедура останется такой же с одной небольшой разницей. После того как вы загрузитесь именно с этого загрузочного диска, необходимо выбрать опцию «Попробовать Ubuntu». Таким образом вы запустите систему без каких-либо изменений на собственном компьютере. После этого необходимо продолжить установку загрузчика GRUB по той же схеме с этапа вызова терминала. Чтобы проверить установленную версию загрузчика, можно использовать команду grub-install-v. Также это можно сделать непосредственно при самой загрузке Ubuntu.

GRUB: алгоритм запуска
По мере завершения работы с GRUB Install загрузчик прежде всего изменит код MBR на свой собственный сектор MBR, в котором содержится главная загрузочная запись. Здесь содержится код основного загрузчика (446 байт), таблица разделов с описанием как основных, так и вторичных разделов жесткого диска (64 байта). Поскольку сектор MBR обладает малым объемом, запуск GRUB укладывается в два этапа. В секторе MBR размещена ссылка к конфигурационному файлу, который может находиться в любом жестком диске, на усмотрение самого пользователя. По ней будет определяться загрузка, которая начинается на втором этапе. Все настройки и данные для работы GRUB учитываются из конфигурационного файла. Если же конфигурационный файл не был найден на втором этапе, то процесс загрузки будет прекращен. Пользователю придется в ручном режиме выбирать загрузочную конфигурацию из командной строки. Данная структура загрузки позволяет GRUB быть гибким и широко конфигурируемым по сравнению с множеством других аналогов, в которых данный процесс был до максимума упрощен.

Часто используемые консольные команды
Большой простор рабочих возможностей последней версии загрузчика GNU GRUB, его конфигурационные возможности и настройка не оставят пользователей равнодушными. Чтобы попасть в него, достаточно будет просто нажать на клавишу «С» во время отображения меню загрузки. После этого останется только верно внести нужные команды.

GRUB после установки: настройка и полезное ПО
В GRUB2 основным конфигурационным файлом является не /boot/grub/menu.lst, а /boot/grub/grub.cfg. Редактировать данный файл совершенно бессмысленно. С каждым сохраненным изменением в файле настроек /etc/default/grub он будет генерироваться заново. Настройка в /etc/default/grub в основном ограничена изменением стандартного пункта загрузки и времени отображения меню. За изменение первого пункта отвечает параметр GRUB_DEFAULT. Его значением обозначается номер пункта в меню загрузки. При выборе какого-то другого пункта пользователь должен знать его очередность в общем списке. Для этого необходимо просмотреть содержимое файла /boot/grub/grub.cfg и найти в нем нужную учетную запись. При этом стоит помнить о правилах нумерации. Первому пункту присвоено значение 0, второму пункту присвоено значение 1, третьему – 2 и так далее. Параметр GRUB_TIMEOUT отвечает за задержку отображения меню загрузки. Присвоенное в кавычках значение обозначает количество секунд, в течение которых должна появиться заставка. При редактировании данного параметра имеется одна хитрая особенность.

При выставлении значения «-1» заставка будет отображаться до тех пор, пока пользователь не выберет один из пунктов. В /etc/grub.d набор скриптов находит все установленные на компьютере ядра и системы. В grub.cfg формируется загрузочное меню. За поиск других операционных систем и ядер отвечают два основных – 30_os-prober и 10_linux. Файл 40_custom дает возможность изменить GRUB путем добавления собственных пунктов загрузки. Это может быть полезно для работы с особыми типами запуска системы. Стоит обратить внимание на то, что он должен заканчиваться пустой стройкой при любых изменениях. В противном случае последний пункт загрузки из всех предложенных просто не будет отображаться. Существует еще один более простой способ редактирования GRUB в операционной системе Ubuntu. Для этой цели нам понадобится утилита grub-Customizer. Она благодаря своей простоте и интуитивно понятному интерфейсу представляет собой лучший вариант для настройки данного загрузчика. Больше всего Grub Customizer подойдет неопытным новичкам. Чтобы установить его, нужно запустить терминал путем нажатия комбинации клавиш Ctrl+Alt+T, а потом поочередно ввести следующие команды: -sudo add-apt-repository ppa:denielrichter2007/grub-customizer, -sudo add-get update, -sudo add-get install grub-customizer. Конечно, перевод программы Grub-Customizer выполнен не очень качественно, но разобраться в ней довольно легко.

— List configuration – в данном пункте отображаются настройки меню при загрузке операционной системы. Здесь можно изменять очередность пунктов.
— Основные настройки — выбор загружаемой по умолчанию системы, а также определение времени ожидания.
— Внешний вид – данный пункт позволяет осуществлять редактирование внешнего оформления загрузочного меню.

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

Super Grub Disk – представляет собой простой и удобный инструмент для быстрого восстановления загрузчика. Работает не только с LILO и GRUB, но и с Windows. Может быть запущен с дискеты, флэшки или диска.

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

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

Различные PEtoUSB , есть более универсальные как в этом топике . Куча утилит по сути устанавливают загрузчик grub, isolinux (реже BCDW или lilo, еще реже свой как Win7), и затем раскладывают предложенные ему файлы (Windows7,WindowsXP, Ubuntu и т.д.) по папкам. От сюда и требовательность к образам (как писали в комментариях к этому топику).

А между тем абсолютное большинство выложенных в интернете дисков (особенно USB) как раз и используют isolinux и grub, что мешает их просто объединять? да ничего!

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

Образы антивирусов не все удалось нормально «подселить» на флешку, если кто то сможет и поделится опытом буду рад (сам давно их не качал, возможно в последних версиях это уже делается сильно проще). В образе от Dr.Web, например, лежит даже инструкция по установке на флешки.
Для справки Live образы антивирусов:
Dr.Web
BitDefender
Avast! уже платный:(
Symantec NAV
Panda
Avira

8. DOS. Тут стоит разделить, если нам нужен ДОС для какой то серьезной работы, то имеет смысл найти DOS-Live образы, например этот , и грузить как в п.3. Мы же запускаем DOS что бы потом из него запустить установку Windows XP. От ДОСа нам понадобятся:
AUTOEXEC.BAT
COMMAND.COM
CONFIG.SYS
EMM386.EXE
HIMEM.SYS
IO.SYS
SMARTDRV.EXE

Желательно, но не обязательно:
Mouse.com
MOUSE.INI
OAKCDROM.SYS

Копируем все это в корень флешки, а в menu.lst добавляем
title DOS (Install WinXP?)
root (hd0,0)
makeactive
chainloader /io.sys
Тут можно либо насладиться DOS, либо заранее в AUTOEXEC.BAT прописать (файл ответов конечно по желанию):
smartdrv
cd \WinXP\i386
winnt /U:\WinXP\i386\winnt.sif

9. Установка Windows 7. Как уже писал выше достаточно разархивировать ISO в корень флешки, а в menu.lst добавить (уже с hd0,0 )
root (hd0,0)
chainloader /bootmgr
boot

10. Ну и для ровного счета расскажу еще об одном типе утилит. Некоторые (не все!) ISO образы могут быть загружены прямо из grub. Среди таких у меня нашлись: Acronis True Image, Acronis Disk Director, Active Password Changer. Это особым образом подготовленные образы (не простой слепок с CD), их загружать следующим образом:
title Active Password Changer
map (hd0,0)/Pwdchanger.iso (hd32)
map --hook
chainloader (hd32)

Удаление

Что делать если случайно установили grub в MBR основного диска, а не флешки, либо нужно удалить с флешки? Можно воспользоваться утилитой bootsect.exe как я писал выше.
В случае если еще не перезагрузились (если перезагрузились, то при помощи grub загрузите Windows, способом описанным выше), и запустите bootsect.exe
Для восстановления Windows XP bootsect /nt52 c: /mbr
Для восстановления Windows Vista/7 bootsect /nt60 c: /mbr
bootsect находится в папке boot диска Windows, а так же есть в моем выложенном архиве в конце статьи.
Флешку же достаточно просто отформатировать.

Заключение

Надеюсь что примеры помогут кому то разобраться, а кому то заинтересоваться данным загрузчиком, а утилиты для создания загрузочных флешек будут вызывать улыбку (ни кого не хочу обидеть, уважаю всех разработчиков, больше того сам с таких утилит начинал). Ну и конечно же очень рекомендую изучить подробнее сам grub, и GRUB4DOS, например вот

Восстановление GRUB – достаточно распространенная операция, с которой приходится сталкиваться многим. Загрузчик повреждается или затирается при установке Windows в качестве второй системы. Не имеет значения, какая сборка Linux стоит – Ubuntu, Mint, Debian или любая другая: восстановить GRUB можно через терминал или с помощью специальной утилиты.

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

Windows не дружит с Linux, поэтому если вы ставите систему от Microsoft после Ubuntu, Mint 17 или другой линуксовской сборки, то будьте готовы к тому, что загрузчик затрется. Чтобы не теряться в этой ситуации, распечатайте инструкцию и храните её возле компьютера.

После перезаписи загрузчика необходимо перезагрузить компьютер, используйте команду «sudo reboot». После перезагрузки должно появиться окно выбора операционной системы. Если GRUB был перезаписан в результате установки новой версии Windows, но в окне выбора системы продолжает отображаться старая версия, то нужно выполнить обновление загрузочной записи. Для этого загрузитесь в Ubuntu и выполните в терминале команду «sudo update-grub».

Использование утилиты восстановления

Если работа с терминалом кажется сложной, можно автоматизировать процесс восстановления, использовав специальную утилиту boot-repair.

Запустите сборку Linux с флешки или диска. Откройте терминал и выполните последовательно три команды:

  • sudo add-apt-repository ppa:yannubuntu/boot-repair.
  • sudo apt-get update.
  • sudo apt-get install boot-repair.

Установленная программа будет иметь название «Восстановление загрузчика». Запустите утилиту (выполните «boot-repair» в консоли) и выберите режим работы. Новичкам подойдет «Рекомендуемый способ восстановления». После запуска этого режима GRUB будет автоматически восстановлен.

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