как узнать версию grub
Ubuntu66.ru — новости, уроки, помощь, поддержка.
Многие пользователи системы Linux имеют на своём компьютере, как правило два и более, установленных дистрибутива на жёстком диске, которые отображаются в самом начале загрузки компьютера, в загрузчике GRUB (англ. GRand Unified Bootloader ).
Иногда, после установки/переустановки той или иной системы мы применяем такой инструмент, как Boot-Repair для восстановления загрузчика GRUB основной (рабочей) системы. Затем перезагружаем компьютер, чтобы посмотреть и убедиться, что загрузчик восстановлен.
Но не многие знают, что для того чтобы убедиться в этом и посмотреть на GRUB, совсем не обязательно покидать систему и перезагружать компьютер. Для этой цели может служить утилита, которая есть в репозитоии, под названием grub-emu (эмулятор grub). Вы можете найти у становить её из Центра приложений или выполнить команду в терминале на установку (Ubuntu/Linux Mint):
sudo apt-get install grub-emu
По окончании установки вы можете использовать утилиту, выполнив команду в терминале:
Чтобы закрыть окно эмулятора, необходимо прежде закрыть терминал и окно эмулятора закроется.
Примечание. В самом начале эмулятор grub открывается, а чрез несколько секунд выдаёт ошибку и предлагает нажать любую клавишу, т.к. он пытается загрузить систему. Не трогайте ничего и он вновь чрез несколько секунд восстановится.
Таким образом, вы не выходя из системы, можете посмотреть и проверить свой загрузчик GRUB.
Ссылка на источник compizomania
26-01-2013.
Как узнать версию GRUB
Как мне найти версию GRUB, которая работает в определенной версии Ubuntu? Я хочу команду терминала, которая говорит мне.
6 ответов
Для меня приведенный выше ответ @Daniel не работает. У меня Ubuntu 14.04 LTS (это также работает с Ubuntu 17.10) и для проверки версии Grub (Grub2) мне нужно набрать:
И это даст вам правильную версию grub, установленной в данный момент.
Это примерно сделает работу:
Вы должны заметить, что просто чтобы запутать вещи, что версия 1.9x известна как Grub2. Я думаю, что они считают это таким же образом, что люди назвали бы 1600-1699, 17 век.
который покажет вам что-то вроде этого:
Это также можно выяснить с помощью одного из них:
Я тоже брошу свою шляпу на ринг. Вы также можете сделать это с apt-cache policy grub-pc
Чтобы узнать, какой загрузчик вы используете, вам нужно посмотреть загрузчик!
Все запросы установленных пакетов, как описано в других ответах, упускают важный момент: чтобы проверить свой загрузчик, посмотрите на загрузчик!
Другими словами, вы можете установить любые пакеты, которые вам нравятся, в любой ОС или дистрибутиве, которые вам нравятся, но все это не имеет ничего общего с загрузчиком, который вы будете использовать при перезагрузке.
в частности, для дисков с разделами MBR/msdos: проверьте MBR (т.е. посмотрите на загрузчик, чтобы узнать, какой загрузчик вы используете)
У этого дубликата есть несколько хороших ответов: Как мне узнать, какой у меня загрузчик?
Содержание
Первые шаги
При первом сравнении GRUB со старым GRUB Legacy самым весомым различием оказывается измененная структура файлов конфигурации.
И об этом нас предупреждают не просто так. Ведь «grub.cfg» генерируется автоматически с использованием нескольких скриптов. Поэтому после следующего обновления GRUB ваш «grub.cfg» будет создан заново, и все ваши правки будут утрачены.
Кроме файла «grub.cfg», отвечающего за загрузочное меню, имеются файл «/etc/default/grub» и папка «/etc/grub.d«. Рассмотрим их подробнее.
/etc/default/grub
Данный файл содержит в себе основные настройки для GRUB. Через него, собственно, они и изменяются. Для наглядности ниже приводится примерное содержимое этого файла:
Изменение стандартного пункта загрузки
Значением «GRUB_DEFAULT» является номер пункта меню, который должен быть выбран стандартным. Чтобы выбрать другой пункт, нам нужно узнать, каким по счету он будет в списке. Есть два варианта:
Или же можно указать значение идентификатора (id), оно должно быть именно таким, каким мы его видим в «/boot/grub/grub.cfg«. Данный способ удобен тем, что после обновления ядра не придется изменять настройки из-за сбившейся нумерации.
Пример
Если в «grub.cfg» пункт меню выглядит так:
То значение параметра «GRUB_DEFAULT» должно указываться именно в виде:
Изменение времени отображения меню
«Скрытое» меню
В случае, если на компьютере установлена только Ubuntu, меню загрузки по умолчанию не будет отображаться, а GRUB будет загружать вас напрямую в систему. Однако же, иногда может возникнуть необходимость загрузиться с другим ядром или же запустить проверку памяти. Для этого предусмотрено «скрытое меню» за него отвечает параметр «GRUB_HIDDEN_TIMEOUT».
Параметр «GRUB_HIDDEN_TIMEOUT_QUIET» отвечает за отображение таймера во время паузы. Если его значение «true» таймер отображаться не будет, а со значением «false» будет.
Чтобы GRUB отображал меню со списком установленных операционных систем, без нажатия клавиш вызова меню (например Shift или Esc ) необходимо:
Убираем подменю
Чтобы раскрыть все меню используем такой параметр:
Это бывает нужно если хотим загружаться не с первой строчки.
Особые случаи
Поведение меню отличается от заданного переменными GRUB_TIMEOUT и GRUB_HIDDEN_TIMEOUT когда предыдущая загрузка не завершилась успехом или предыдущаяя загрузка происходила в режиме восстановления. Подробно это описано далее, в разделе «Защита от зацикливания на перезагрузке». Полную справку по параметрам файла настроек можно дав команду:
Изменение стандартных параметров загрузки ядра
Вы можете добавить необходимые вам параметра запуска ядра, приведя это значение к виду «quiet splash your_param1 your_param2», то есть дописав через пробел нужные параметры.
Пример
Чтобы заменить графическую заставку во время загрузки на информацию о загрузке компонентов системы (это позволит проследить за процессом загрузки и выявить неполадки). Необходимо заменить строчку:
/etc/grub.d
Эта папка содержит в себе скрипты, которые используются для создания файла «grub.cfg». При обновлении GRUB они находят все установленные на компьютере системы и ядра и формируют в файле «grub.cfg» меню загрузки, которое мы и видим. Два основных из них:
Пример
Добавляем режим загрузки без графической заставки, с текстовым отображением процесса загрузки (verbose mode). Для этого мы немного отредактируем обычный пункт загрузки. допустим, он выглядит так (в «/boot/grub/grub.cfg«):
Для того, чтобы сделать из этого verbose mode, нам нужно убрать опции quiet и splash и изменим название самого пункта. В итоге получаем:
Все это и добавляем в «40_custom» в конец файла. Строка с echo не является обязательной она лишь будет сигнализировать нам о том, что наш пункт найден и добавлен при обновлении GRUB.
Команды консоли GRUB
Чтобы попасть в консоль, нужно нажать клавишу C во время отображения меню загрузки.
Команда сообщит нам тип файловой системы на разделе, метку раздела (если таковая имеется), UUID и дату последнего изменения данных на разделе (в формате UTC).
Данная команда выводит содержимое заданного файла, используется в формате:
linux
Аналог команды «kernel» в GRUB Legacy. Загружает указанное Linux-ядро:
initrd
Загружает указанный initrd-образ. Используется так:
chainloader
Передает управление загрузкой по цепочке другому загрузчику (загрузчик ищется на заданном в качестве root разделе). В общем случае требует указания файла для загрузки:
Для (загрузчика Windows) можно использовать:
После задания раздела команда сообщит новый root-раздел и тип файловой системы. Примечание: «root hd(*,*)» не всегда корректно срабатывает. более предпочтительным вариантом является «set root» (см. ниже)
Весьма универсальная команда для изменения различных параметров. Служит для задания значений переменных и используется в формате:
search
Служит для поиска раздела по UUID, метке или заданному файлу. Имеет следующие ключи:
lsfonts
Команда отобразит список загруженных в настоящий момент шрифтов.
При использовании в чистом виде выведет список доступных команд. В формате:
Выведет справку по всем командам, начинающимся на «r».
Отобразит справку по команде «search»
reboot
background_image
Позволяет «на лету» изменить фоновое изображение. Используется в формате:
Дает замечательную возможность посмотреть на выбранную картинку в действии, избегая лишних перезагрузок. В сочетании с заменой цветов через set позволит довольно быстро подобрать подходящий вариант оформления.
terminal_output.console
Применение изменений
После этого смело перезагружаемся и видим, что все работает как надо.
Нюанс с нумерацией дисков и разделов
Если в GRUB Legacy первый раздел первого диска (sda1) именовался «hd0,0». То в GRUB, первый раздел первого диска (sda1) теперь будет «hd0,1».
Создание дополнительного меню загрузки
Суть в том, что вместо уже знакомого «grub.cfg» можно загрузить свой файл настройки загрузочного меню со своей конфигурацией. Это позволяет создать дополнительное меню с другими пунктами, настройками, оформлением и т.д. Итак, создадим наш новый файл конфигурации. Создавать с нуля не будем, а скопируем «grub.cfg», дав новое имя:
Поскольку файл скопируется с правами 444, выставим ему права на запись:
Теперь открываем его в любимом текстовом редакторе и изменяем:
Строкой ниже мы можем задать цвета текста. Изменяются они так же, как и в »/etc/grub.d/05_debian_theme« (см. Настройка внешнего вида загрузчика GRUB). Можно проделать один интересный трюк: уберите строки с set color_highlight и else теперь настройка будет такой:
Закончив с настройкой, перейдем к пунктам меню, они идут ниже. Измените их, удалите ненужные и добавьте новые, пересортируйте на свой вкус.
Настроив свой файл, сохраните его Ctrl + Shift и закройте.
Теперь необходимо добавить дополнительное меню. Для этого в файле »/etc/grub.d/40_custom« добавим запись такого вида:
Если вы хотите, чтобы ваше новое меню загружалось вместо стандартного «grub.cfg», установите новый пункт в качестве пункта по умолчанию, но перед этим проверьте новое меню на работоспособность.
Обновите свой «grub.cfg» выполнив команду:
В качестве образца пример файла «custom.cfg» (файл урезан до необходимого минимума):
Защита от зацикливания на перезагрузке
Зачем это сделано
А что если.
А что если отключить?
Отключаем.
Как это работает
Для того, что бы убрать необходимость интерактивного вмешательства в процесс загрузки нужно установить переменную GRUB_RECORDFAIL_TIMEOUT в /etc/defaul/grub в то количество секунд, которые меню GRUB-а будет ждать ввода в случае когда recordfail=1. Сохранить изменения и обновить GRUB (sudo update-grub).
Финт с GRUB_RECORDFAIL_TIMEOUT может не сработать в некоторых (старых) версиях GRUB. Тогда нужно редактировать /etc/grub.d/00_header. Нужно найти функцию make_timeout (), которая выглядит примерно так:
и заменить в ней строчку
После этого финт с GRUB_RECORDFAIL_TIMEOUT заработает. Нужно сохранить изменения и обновить GRUB (sudo update-grub).
Grub 2
В Википедии имеется статья по теме «Grub»
GRUB (GRand Unified Bootloader) — загрузчик ОС, применяется для загрузки ядер Linux, OpenSolaris, BSD и Hurd (StartUp Manager).
GRUB 2 — это новая версия GRUB, сильно отличающаяся от предыдущей. Данное описание и инструкции касаются только таблицы разделов MBR и BIOS. Для GPT и UEFI используются немного другие команды.
Содержание
Определяем версию загрузчика [ править ]
В GRUB2 основным файлом конфигурации является не «/boot/grub/menu.lst», как это было в предыдущей версии, а «/boot/grub/grub.cfg». Однако редактировать его напрямую не нужно, ведь при каждом обновлении файл генерируется автоматически с помощью файла настроек /etc/default/grub и скриптов директории /etc/grub.d.
/etc/default/grub [ править ]
Данный файл содержит в себе основные настройки для grub2. Через него, собственно, они и изменяются. Для наглядности ниже приводится примерное содержимое этого файла:
Мы видим, что файл представляет собой набор опций в человекопонятном формате ОПЦИЯ=ЗНАЧЕНИЕ. Мы не будем здесь рассматривать все представленные параметры, поскольку рядовому пользователю вполне достаточно понимания пары-тройки основных параметров. Наиболее часто встречающаяся потребность при настройке grub — изменение стандартного пункта загрузки и/или времени показа меню. Рассмотрим же, как это делается.
Что делать, если файла /etc/default/grub нет [ править ]
Начинающие пользователи внимательно читают этот замечательный учебник и пытаются следовать описанным здесь сведениям. Однако тут же натыкаются на грабли: файла /etc/default/grub нет. 1) У вас версия Grub1 2) Проверить, есть ли файл /etc/sysconfig/grub2. Править его аналогичным образом. В этом разделе будет написано, почему этого файла нет и как настраивать загрузчик в этом случае.
Изменение стандартного пункта загрузки [ править ]
Пример [ править ]
Если в «grub.cfg» пункт меню выглядит так:
то и значение параметра «GRUB_DEFAULT» должно указываться именно в виде
Изменение времени отображения меню [ править ]
По умолчанию меню загрузки отображается 10 секунд, после чего загружается стандартный пункт (если раньше не нажат enter и не выбран другой пункт, что останавливает таймер). С изменением задержки все совсем просто. За эту задержку отвечает параметр «GRUB_TIMEOUT» (не путайте с «GRUB_HIDDEN_TIMEOUT»!). Значение задается в секундах. Обратите внимание, что цифра указывается в кавычках. В нашем примере это значение — 2, то есть меню отображается две секунды. Кроме того, есть одна хитрость. Если поставить значение «−1», то меню будет отображаться до тех пор, пока пользователь не выберет какой-либо пункт. То есть без всяких таймеров и утекающих секунд.
Изменение времени отображения в debian 8 [ править ]
Данный хак будет полезен и для владельцев систем построенных на debian. Дело в том что файл /etc/grub.d/00_header построен по непонятному принципу, а строчка в GRUB_TIMEOUT в /etc/default/grub не меняет время отображения. Для того чтобы это исправить надо открыть любым редактором файл /etc/grub.d/00_header и удалить данные строчки (делаем резервную копию на всякий случай):
Эта функция запутанная и ничего не даёт. Далее ищем и удаляем полностью данный текст:
Далее удаляем полностью из файла следующий текст:
«Скрытое» меню [ править ]
Изменение стандартных параметров загрузки ядра [ править ]
Пример [ править ]
Вместо того, чтобы добавлять новые параметры, мы уберем стандартные. Отключим графическую заставку и «молчаливый режим». Заменим
Теперь все наши пункты загрузки linux-ядер будут преобразованы в verbose mode, то есть режим загрузки без графической заставки и с выводом на экран текстовой информации о загрузке компонентов системы, что позволяет следить за процессом загрузки и выявлять неполадки.
Обратите внимание, чтобы ядру не передавались лишние параметры через GRUB_CMDLINE_LINUX, если он не пустой. Все вышеописанное работает для
Остальные настройки файла /etc/default/grub [ править ]
— данная строка отвечает за названия дистрибутива, которое будет отображаться в меню GRUB2 (Ubuntu, Xubuntu, Debian, и т.д.)
— раскомментируйте данную строку, и это позволит отключить графический терминал (grub-pc only). Данный прием будет полезен тем, что отключение графического режима может существенно увеличить скорость работы меню (прокрутка, отзывчивость).
— раскомментируйте, если вы не хотите, чтобы GRUB передавал вашей системе параметр «root=UUID=xxx».
Если строка GRUB_GFXMODE=640×480 закомментирована или выбранное разрешение недоступно, тогда GRUB2 использует настройки по умолчанию, определенные скриптом /etc/grub.d/00_header.
— Настройка одинакового разрешения в меню GRUB2 и вашей операционной системы, позволит немного уменьшить время загрузки.
— В качестве дополнительной опции пользователь может задать битность изображения, просто добавив необходимые данные в настройку разрешения. Например так: 1280x1024x24 или 640x480x32.
— Пользователь может добавить одновременно несколько разрешений. Как это работает? А вот так, если GRUB2 не может использовать первое заданное разрешение, тогда он будет пробовать следующее и т.д. Перечень разрешений необходимо разделять запятыми. Пример: 1280x1024x16,800x600x24,640×480.
— Если используется строка GRUB_GFXMODE= и при выполнении команды sudo update-grub вам выдается сообщение not found, просто попробуйте или добавить или изменить битность изображения.
— Включает/выключает проверку скриптом /etc/grub.d/30_os-prober наличия на других разделах операционных систем, включая такие как Windows, Linux, OSX и Hurd.
/etc/grub.d [ править ]
Примечание: файл «40_custom» должен заканчиваться пустой строкой, иначе последний пункт не будет отображаться в меню!
Пример [ править ]
Добавляем verbose-mode (режим загрузки без графической заставки, с текстовым отображением процесса загрузки), позволяющий контролировать процесс загрузки системы. Для этого мы немного отредактируем обычный пункт загрузки. Допустим, он выглядит так (в «/boot/grub/grub.cfg»):
Для того, чтобы сделать из этого verbose-mode, нам нужно убрать опции quiet и splash из строки «linux». Ну, и для понятности изменим название самого пункта. в итоге получаем:
Все это и добавляем в «40_custom» в конец файла. Строка с echo не является обязательной, она лишь будет сигнализировать нам о том, что наш пункт найден и добавлен при обновлении grub2
Применение изменений [ править ]
Она выполнит скрипты в каталоге «/etc/grub.d» и применит заданные в «/etc/default/grub» параметры. После этого смело перезагружаемся и видим, что все работает как надо. Ну или не работает. Если все прошло успешно, то в выводе консоли вы увидите список найденных grub2 ОС и linux-ядер. Выглядит все это примерно так, как на скриншоте справа.
Тот же самый скрипт выполняется и при обновлении ядра.
Нюанс с нумерацией дисков и разделов [ править ]
Резервная копия [ править ]
Перед каким-либо редактированием обязательно сделайте бэкап файлов конфигурации. например, выполнив последовательно эти строки:
(можно сохранить данный скрипт в /usr/bin, назвать, к примеру, «grub-backup» и дать права 755. Теперь для резервного копирования grub2 достаточно будет выполнить команду «grub-backup»)
Немного улучшенная версия скрипта.
Оформление [ править ]
Установка фонового изображения [ править ]
(не путайте пакет grub2-splashimages с пакетом grub-splashimages, который не совместим с grub2!). Эти изображения будут помещены в каталог «/usr/share/images/grub», который нужно будет добавить в файл конфигурации (см. ниже). Фоновое изображение задается в файле «/etc/grub.d/05_debian_theme». Найдите в нем строку такого вида:
Обратите внимание, что в последних, на данный момент (23.10.2010), версиях GRUB, установка фонового изображения упростилась ещё больше. Теперь для установки фонового изображения достаточно в строке:
указать в кавычках путь к файлу с одним из перечисленных выше расширений (.png,.tga,.jpg) и разрешением 640×480. После чего обновить конфигурацию:
Способ №2: [ править ]
В файле /etc/default/grub определить константу GRUB_BACKGROUND и передать ей путь к файлу с картинкой.
Способ для дистрибутива debian 8 [ править ]
В debian 8 картинка устанавливается по другому. За поиск отвечают вот эти строчки в файле /etc/grub.d/05_debian_theme.
В этих строчках менять ничего не нужно. Сначала будет проверена константа GRUB_BACKGROUND в файле /etc/default/grub, если изображение будет найдено то оно устанавливается на фон grub. Если данная константа в /etc/default/grub не указана, то update-grub будет искать в каталоге /boot/grub файлы формата tga, jpg и png. Поиск выполняется по имени, например если в папке находятся файлы A.tga и B.tga, на фон будет выбрана картинка A.tga. О картинке которая будет выбрана выведется информация при выполнении команды update-grub: Found background image: [путь]. Если в каталоге /boot/grub нет изображений, то поиск будет производится оп переменной указанной в файле /usr/share/desktop-base/grub_background.sh, с именем WALLPAPER.
Если по пути указанном в переменной WALLPAPER, файла /usr/share/desktop-base/grub_background.sh не будет найдено изображения, то изображение установится на /usr/share/images/desktop-base/desktop-grub.png. Для того чтобы вместо /usr/share/images/desktop-base/desktop-grub.png задать своё значение, надо найти вот такую строчку с текстом в файле /etc/grub.d/05_debian_theme.
И изменить на путь до изображения. Порядок поиска:
Настройка цвета пунктов меню [ править ]
Цвета пунктов меню также задаются в файле «/etc/grub.d/05_debian_theme». В самом начале файла нужно всего-навсего изменить значения переменных:
Заметьте, что black (черный) при использовании в качестве второго параметра (т.е. цвета фона) в результате даст прозрачный фон, без какой-либо заливки, текст прямо поверх картинки. Использование black в качестве цвета текста дает черный текст.
Пример [ править ]
Настройка цвета пунктов меню в debian 8 [ править ]
На debian 8 цвет меню устанавливается таким образом. Так как добавление переменных введённых выше в файл /etc/grub.d/05_debian_theme ничего не дают, то изменять надо в уже готовом файле. Выполняем в терминале:
В текущем каталоге появится файл grub.cfg. Открываем его любым редактором и ищем строчку с:
Сразу под ним вставляем данные строчки:
Затем выполняем команду:
Перезагружаемся и наслаждаемся цветным меню.
Изменение цвета меню навсегда [ править ]
Чтобы каждый раз не менять grub.cfg заходим в файл /etc/grub.d/05_debian_theme и ищем строчку с текстом:
И удаляем её. Затем ищем строчку с текстом:
И прямо под ней две строки отвечающие за цвет. Изменяем их и выполняем команду:
Перезагружаемся и радуемся результату.
Восстановление GRUB2 [ править ]
После, например, установки Windows, вы можете столкнуться с тем, что при загрузке будет отображаться только меню загрузки Windows, а меню grub2 вы не увидите вовсе, что приведет к невозможности загрузить что-либо кроме Windows. Такое происходит из-за того, что Windows при установке затирает загрузочную область жесткого диска (так называемый MBR-раздел), удаляя оттуда код загрузчика grub2. Для восстановления grub2 вам понадобится liveCD Ubuntu 10.04 или любой другой современной системы, включающей grub2 в свой дистрибутив.
Восстановление GRUB2 с LiveCD [ править ]
Для работы нам понадобится /-раздел (root). Примонтируйте его командой
Также монтируем каталог /dev нашей live-системы как /dev нашего root-раздела:
и /proc live-системы как /proc root-раздела:
теперь выполняем следующую команду:
Если вы устанавливаете GRUB для Gentoo:
В полученной таблице есть столбец «загрузочный». В моем случае напротив раздела sda1 стоит звездочка, означающая, что у меня загрузочным является первый жесткий диск, то есть sda. Определившись с загрузочным диском, ставим на него grub2:
Также в некоторых случаях может помочь вариант
Обратите внимание: мы устанавливаем grub2 на физический диск (sda, sdb. ) т.е. в mbr, а не на раздел (sda3, sdb1. )! Если все прошло успешно, выходим из chroot командой
Отмонтируем наши диски и каталоги: /dev нашей live-системы:
boot-раздел, если таковой монтировался отдельно:
И собственно, корневой раздел:
Все! Перезагружаемся, восстанавливаем порядок загрузки в BIOS (ставим жесткий диск на первое место) и смотрим результат.
Восстановление GRUB2 с LiveCD. способ 2 (без chroot) [ править ]
Нам опять же понадобится LiveCD Ubuntu 9.10 или другой системы с поддержкой grub2. В отличие от предыдущего способа, мы не будем запускать установщик через chroot, что позволит сократить количество требуемых действий. Итак, загружаемся с выбранного LiveCD, запускаем консоль. Вместо использования chroot мы воспользуемся ключом «—root-directory». Но для начала убедимся, что данная опция поддерживается нашей live-системой. Если вы работаете с Ubuntu 9.10 Desktop, можно не волноваться. В ином случае выполните
или же можно глянуть
Разница лишь в форме вывода информации. Определившись с корневым разделом, монтируем его. Пусть в нашем примере это будет sda5:
Если у вас выделен отдельный boot-раздел, примонтируйте и его. Допустим это sda2
Теперь переходим собственно к установке grub2. Ключ «—root-directory» позволяет указать, что использовать в качестве корневой директории. Нам нужен корневой раздел нашей системы, который примонтирован в /mnt. Поэтому выполняем:
При необходимости повторяем операции для всех жестких дисков. Сохраняем файл и повторно выполняем команду grub-install, как описано выше. Теперь должен отобразиться правильный список дисков. Отмонтируем диски и перезагружаемся.
Восстановление GRUB2 с LiveCD. способ 3 (совсем простой) [ править ]
изменив /dev/sda на нужный диск. Можно снова грузиться с этого диска.
Копирование рабочего GRUB 2 в нужный раздел [1] [ править ]
Порой бывает необходимость перенести корректно работающий GRUB 2 на нужный раздел (только основной раздел диска). Для этого можно загрузиться с LiveCD или использовать уже установленную систему (причём в том числе и для установки GRUB 2 на текущий раздел, с которого загружена работающая система). Для систем использующих ядро Linux достаточно выполнить в терминале:
После чего выполнить непосредственно инсталляцию GRUB 2 на выбранный ранее раздел командой терминала update-grub, например:
При этом программа инсталляции найдет и установит соответствующие пункты загрузки всех совместимых со спецификациями Multiboot операционных систем и, вероятно, загрузчиков других операционных систем (например Windows, OS/2 и т.п.).
Загрузка системы при частичной неработоспособности GRUB2 [ править ]
В моем случае это «hd0,5», он же «/dev/sda5», то есть пятый раздел первого диска. Полный список доступных разделов можно получить уже знакомой многим командой «ls». Она выдаст что-то вроде
После того, как вы задали root-раздел, можно удостовериться в том, что все получилось, выполнив команду «root». Она выдаст сообщение следующего вида:
Некоторых, наверно, смутит упоминание ext2. Не волнуйтесь, так и должно быть. так же происходит каждый раз при нормальной загрузке системы. После того, как задан root-раздел, мы должны указать, какое ядро следует загрузить. Это задается командой «linux». Укажите то ядро, с которым вы обычно загружаетесь. В моем случае команда будет выглядеть так:
Обратите внимание на параметр «root=/dev/sda5» в конце строки! Здесь также нужно указать ваш root-раздел, но уже в более привычном формате. Без этого система может не загрузиться. Указав ядро и корневой раздел, мы готовы к загрузке системы. Для этого выполняем команду
Вышеперечисленных действий должно хватить для загрузки системы. Если загрузка не удастся, попробуйте перед выполнением «boot» выполнить еще команду «initrd» (которая, вообще-то, выполняется при нормальной загрузке). Напишите «initrd /boot/initrd» и нажмите tab. Выберите вариант, соответствующий загружаемому ядру. В моем случае команда будет выглядеть так:
по аналогии с ядром создается символьная ссылка на последнюю версию initrd.
И уже после этого выполняйте «boot». В результате всех манипуляций мы должны успешно загрузиться в родную систему, а там уже можно выполнить «update-grub» и при необходимости восстановить нужные файлы из резервной копии (которую вы, конечно, делали).
Совет [ править ]
Вы можете легко и быстро сделать себе инструкцию по аварийному запуску системы. Откройте ваш «/boot/grub/grub.cfg», найдите там пункт, который вы обычно загружаете, и скопируйте его оттуда. Допустим, он выглядит так:
Нам нужно оставить только три строки: «set root», «linux» и «initrd». Чтобы не забыть, допишем в конце команду «boot». В строке linux заменим «UUID=. » на ваш корневой раздел и уберем лишние параметры. В итоге получим такие строки:
Осталось распечатать это на бумажке и сохранить оную в надежном месте. Теперь у вас всегда под рукой инструкция по загрузке на случай каких-либо неполадок!
Загрузка Windows аналогичным образом [ править ]
После этого мы скомандуем grub2 передать управление загрузкой Windows-загрузчику NTLDR. Для этого просто выполним
И наконец дадим команду на запуск:
Advanced [ править ]
Даунгрейд до grub-legacy (возврат старой версии). В случае, если ваша дружба с grub2 так и не состоялась, вы можете заменить его на старый grub (ныне известный как grub-legacy), который на текущий момент более стабилен и привычен для многих. Для начала, конечно же, сделаем бэкап важных файлов. Создайте резервную копию файлов конфигурации как описано в конце I-ой главы. Также желательно забэкапить каталог «/boot/grub». Для этого выполните
Теперь мы можем приступить к удалению grub2. Для этого удаляем пакеты «grub-pc» и «grub2» (последний может быть не установлен):
Заметьте: удаление пакетов не приведет к полной очистке каталога «boot/grub». Теперь установим grub версии 0.97:
Но после установки нам необходимо создать файл menu.lst и другие файлы загрузчика. Для этого нужно выполнить еще две команды:
Эта команда создаст файл меню загрузки. На заданные ей вопросы отвечайте «yes».
Создание аварийно-спасательного GRUB2-liveUSB [ править ]
На выбранном разделе (/dev/sdb1) будут созданы каталоги и скопированы файлы, необходимые для загрузчика, в MBR диска будет записан код, передающий управление на выбранный раздел. Загрузившись с флеш-диска, попадаем в меню grub2. Для его изменения достаточно вручную править файл конфигурации grub.cfg.
Здесь мы рассмотрим некоторые команды консоли grub2. Все мы разбирать не будем, а изучим лишь самые необходимые и полезные. Напомню, чтобы попасть в консоль, нужно нажать «c» во время отображения меню загрузки. Итак, начнем!
ls [ править ]
сообщит нам тип файловой системы на разделе, метку раздела (если таковая имеется), UUID и дату последнего изменения данных на разделе (в формате UTC).
cat [ править ]
linux [ править ]
Загружает указанное linux-ядро. Аналог команды «kernel» в grub-legacy. Используется в формате
initrd [ править ]
Загружает указанный initrd-образ. Используется так:
Обратите внимание: версия initrd должна соответствовать версии загружаемого ядра!
load_env [ править ]
Что такое блок окружения GRUB? (GRUB environment block)
Часто полезно помнить небольшой объем информации от одной загрузки к другой. Например, вы можете захотеть установить запись меню по умолчанию на основе того, что было выбрано в последний раз. GRUB обычно не реализует поддержку записи файлов, чтобы свести к минимуму вероятность того, что загрузчик понесёт ответственность за повреждение файловой системы, поэтому конфигурационный файл GRUB не может просто создать файл обычным способом. Однако GRUB предоставляет «блок среды», который можно использовать для сохранения небольшого количества состояний.
Блок окружения представляет собой предварительно выделенный 1024-байтовый файл, который обычно находится в /boot/grub/grubenv (хотя вы и не должны это предполагать). Во время загрузки команда load_env загружает в нее переменные среды, а команда save_env сохраняет в ней переменные среды. Из работающей системы утилиту grub-editenv можно использовать для редактирования блока окружения.
grub-mkconfig использует эту возможность для реализации ‘GRUB_SAVEDEFAULT’ (в /etc/default/grub).
chainloader [ править ]
Передает управление загрузкой по цепочке другому загрузчику (загрузчик ищется на заданном в качестве root разделе). В общем случае требует указания файла для загрузки:
Однако, для NTLDR (загрузчика Windows) можно использовать
boot [ править ]
производит загрузку указанного ядра (заданного с «linux» и «initrd») или же другого загрузчика (заданного через «chainloader»). Используется без параметров
root [ править ]
После задания раздела команда сообщит новый root-раздел и тип файловой системы. Примечание: «root (hd*,*)» не всегда корректно срабатывает. Более предпочтительным вариантом является «set root» (см. ниже)
save_env [ править ]
set [ править ]
Весьма универсальная команда для изменения различных параметров. Служит для задания значений переменных и используется в формате
(именно такая технология используется в «grub.cfg») Также с ее помощью можно, например, «на лету» изменить цвет текста в меню и консоли, что позволяет опробовать цветовую схему перед установкой ее в качестве основной. Для этого изменяем переменные «color_normal» и «color_highlight» для обычного пункта (и текста в консоли) и выделенного пункта соответственно. Например, попробуем такой вариант:
(Подробнее о цветах читайте в главе II, раздел «настройка цвета пунктов меню»).
search [ править ]
Пожалуй, одна из самых полезных команд. Потомок «find» и «uuid» из grub-legacy. Служит для поиска раздела по UUID, метке или заданному файлу. Имеет следующие ключи:
Команда сообщит нам, какой раздел соответствует заданному UUID. Однако, UUID длинный, и хотя его и можно узнать, вводить вручную такое количество символов проблематично, и существует большой шанс сделать ошибку. Вместо этого мы воспользуемся поиском по файлу, который точно имеется на нужном разделе. Допустим, мы ищем раздел boot-раздел нашей системы. Найдем его по файлу «grub.cfg»:
Обратите внимание, что при использовании такого способа указанный файл должен иметься только на одном разделе! Получив искомое, можно вручную задать нужный раздел в качестве root-раздела, но гораздо проще воспользоваться ключом «-s». Если после него не указана переменная, будет использована «root», то есть найденный раздел как раз и будет задан в качестве корневого. Допустим, раздел с Windows имеет метку «C_drive». Установим его в качестве корневого для загрузки с него:
lsfonts [ править ]
help [ править ]
При использовании в чистом виде выведет список доступных команд. В формате
выведет справку по всем командам, начинающимся на «r».
отобразит справку по команде «search».
halt [ править ]
Выключит компьютер (в теории) или введет его в ступор (у меня ).
reboot [ править ]
background_image [ править ]
Позволяет «на лету» изменить фоновое изображение. Используется в формате
vbeinfo [ править ]
Выведет список поддерживаемых видеорежимов. Этой командой полезно будет воспользоваться перед настройкой разрешения в «/etc/default/grub».
configfile [ править ]
Потомок одноименной команды в grub-legacy. Позволяет загрузить другой файл конфигурации с другим меню вместо текущего «grub.cfg». Создав новый файл, вы можете сделать другое меню с другими настройками, оформлением и пунктами, не захламаляя основное меню. Используется так:
Создание и использование новых меню позже будет рассмотрено отдельно.
terminal_output.console [ править ]
terminal_output [ править ]
Использование: terminal_output [—append|—remove] [терминал1] [терминал2] …
play [ править ]
С помощью данной команды можно создавать любые шедевры. В качестве вывода звука будет использоватся пищалка на материнской плате. Рекомендуется подключать сторонюю пищалку для более качественного звука. Синтаксис команды с переводом:
Чтобы проиграть файл, пишем play и указываем путь до файла формата MID. Для того чтобы создавать свои мелодии нужно задать темп, а также высоту и длительность каждого звука. Пример мелодии:
Можно писать мелодии любого размера без ограничений.
tr [ править ]
Заменяет буквы в тексте.
testspeed [ править ]
Даёт возможность протестировать скорость чтения файла с диска.
time [ править ]
Замеряет время выполнения любой команды.
sleep [ править ]
Заморозка grub на указанное количество секунд. Аналогична команде sleep в linux, но без отмены командой Ctrl-C.
Премудрости 😉 [ править ]
Ну и для полного счастья ниже я приведу небольшой список премудростей, которые помогут вам облегчить работу в консоли: уже упомянутое автодополнение команд (как в bash) по нажатию tab. tab в пустой строке выведет полный список доступных команд. Это самое автодополнение имеет нетривиальный способ использования. Если вы не помните, какой раздел вам нужен, напишите «root (hd0,» (или «root (hd1.» и далее по списку) и нажмите tab. Будет выведен список разделов заданного диска с указанием файловых систем, UUID и времени последнего изменения. Имя раздела вида «(hd*,*)» можно использовать в начале пути к файлу, например, вот так:
Еще один полезный пример
позволяет просмотреть содержимое заданного раздела без переключения root. И кстати в терминале linux тоже можно с успехом использовать данный хак.
Загрузка другого grub2 из текущего [ править ]
Во втором случае видим сообщение, что файловая система неизвестна. Это нормально. Передаем управление по цепочке
и даем команду на запуск
и попадаем в искомый загрузчик.
Создание дополнительных меню загрузки [ править ]
В этом разделе мы рассмотрим создание своих собственных загрузочных меню со своей конфигурацией. Суть в том, что вместо уже знакомого нам «grub.cfg» можно загрузить другой файл конфигурации. Это позволяет создать дополнительное меню, совершенно другое — с другими пунктами, настройками. оформлением. Те, кто имел дело с установкой ArchLinux, могли заметить несколько подменю в grub установочного диска. Примерно такой метод мы и будем использовать. Итак, создадим наш новый файл конфигурации. Писать с нуля мы его, конечно же, не будем, а сотворим на основе имеющегося «grub.cfg». Для чего скопируем последний, дав новое имя, например:
Поскольку файл скопируется с правами 444, выставим ему права на запись:
Теперь пункт перехода в новое меню появится в обычном. для того чтобы выйти обратно в первое меню, достаточно нажать escape. Вот, в принципе, и вся премудрость. Таких файлов можете насоздавать себе хоть десять штук, тут уж зависит от потребностей.
Пример файла «custom.cfg» [ править ]
Ниже я приведу в качестве образца то, что получилось у меня (файл сильно урезан до необходимого минимума):
MBR — бэкап, восстановление и загрузка через образ [ править ]
Если ваш загрузочный диск — не sda, поменяйте значение на свое (на самом деле, код загрузчика занимает первые 446 байт, а дальше записана таблица разделов, но для загрузки нашего образа он должен быть не меньше 512 байт). Наш образ готов! Данные сохранены в файл «mbr.bin» в вашей домашней директории. Используя полученный образ, можно загрузить основной grub2 из-под другого при поврежденном MBR диске. Если у вас есть другая установленная linux-система с grub2 на другом жестком диске или загрузочная флэшка с grub2 (создание таковой описано выше) — можете попробовать на практике нижеприведенный совет. Итак, в моем примере я загружаюсь со своей спасительной флэшки с grub2, на которую я предварительно закинул образ MBR своего жесткого диска. Загрузившись в grub2, выходим в консоль (нажав «c»). Указываем в качестве корневого раздела тот жесткий диск, на котором по сценарию попорчен MBR, и с которого мы хотим запустить grub2. Можно указать сам диск или любой из его разделов, например так:
Проверим результат командой
Если все верно — загружаем наш образ с помощью chainloader. Здесь нужно указать полный путь, начиная с раздела, на котором лежит наш файл. Флэшка, с которой я загружен именуется (hd0), так что команда будет выглядеть так:
Если все тихо — даем команду на запуск:
и наслаждаемся родным grub2.
Примечание: в MBR (и, соответственно, в полученном образе) нет четкого указания жесткого диска, поэтому через наш образ загрузится grub2 с того раздела, который был указан в качестве корневого (root) в консоли grub2. Загрузив родную систему, мы можем восстановить из-под нее MBR диска. Но если лишнего grub2 у вас под рукой нет, действовать мы будем с LiveCD.
Грузимся с LiveCD любой linux-системы (в данном случае поддержка grub2 роли не играет). Для восстановления MBR нам нужно будет «раскатать» ранее созданный образ обратно в первый сектор диска. Но для начала проверим таблицу разделов, ведь вполне возможно, что grub2 не грузился и из-за нее. Для этого выполните
Если нужно восстановить и таблицу разделов — укажите 512 вместо 446. В качестве значения if пропишите путь к файлу образа, в of — тот диск, загрузочный сектор которого мы восстанавливаем. Если все прошло успешно — перезагружаемся, грузимся с починенного диска и радуемся.
Еще одна полезная возможность — полученный образ можно использовать для загрузки grub2 через NTLDR (в случае, если grub2 не загружает нормально Windows, и вы хотите сделать NTLDR основным загрузчиком). Но об этом как-нибудь позже.
P.S. Через grub4dos данный трюк провернуть не получится, возникает ошибка: Geom Error Missing Helper.
Создание LiveCD с GRUB2 [ править ]
В случае, если ваш компьютер не поддерживает загрузку с usb, можно создать cd-диск с grub2, через который можно будет загрузить свою систему при неисправности основного grub2. Для начала создадим в удобном месте каталог, в котором будем собирать наш диск, а в ней вложенные каталоги «/boot» и «/boot/grub»:
И еще один очень важный момент: в начале файла должна иметься такая строка: insmod part_msdos загрузка данного модуля обязательна! Без него полученный grub2 увидит только жесткий диск, но не увидит таблицу разделов на нем, и такой LiveCD будет бесполезен. Про настройки цветов/разрешения и всего прочего читайте в вышеупомянутом разделе. А теперь же перейдем к созданию самого меню. Вы можете скопировать нужные пункты из «/boot/grub/grub.cfg», но я рекомендую написать их с нуля, ибо для корректной работы тамошних пунктов потребуется загрузка дополнительных модулей. А написать их несложно, для Linux-системы пункт меню должен иметь такой вид:
/tmp/iso/boot/grub/grub.cfg»). Теперь мы готовы к созданию iso-образа нашего LiveCD. В этом нам поможет утилита grub-mkrescue. команда будет выглядеть так:
2.8M), прожигаем его на rw-шку (лучше программой cdrecord из пакета cdrtools) и пробуем грузиться!
Пример файла «grub.cfg» [ править ]
Как и обещал, привожу пример файла «grub.cfg», корректно работающего на LiveCD с комментариями:
Создание LiveCD с GRUB2 на базе имеющегося дистрибутива [ править ]
(за идею спасибо тов. komix)
Поскольку тратить целую болванку ради записи iso-шника с grub2 в 3 мегабайта было бы глупо, можно совместить приятное с полезным, а именно: LiveCD с grub2 и установочный диск какой-нибудь системы. Исходить мы будем из того, что имеется iso некоего LiveCD, к которому мы хотим прикрутить grub2. Порядок действий будет в целом аналогичен описанному в предыдущем пункте. Первым делом создадим каталог, в котором будем собирать наш новый диск. В нём же создадим каталог /boot/grub и каталог, в который будут помещены файлы нашей live-системы (я назову ее live):
Теперь нам нужно примонтировать iso-образ нашей системы в свежесозданный каталог для нее:
В данном случае этого будет достаточно. Для других систем могут потребоваться дополнительные параметры загрузки ядра. Ядро же может лежать в «/live/boot» или в другом каталоге в зависимости от конкретного дистрибутива. Обратите внимание на то, что здесь не используются строки вида «set root. » или «search. «. Если вы создали правильный «grub.cfg», то корневым разделом при загрузке устанавливается cdrom, поэтому нет нужды его задавать повторно. После того, как «grub.cfg» готов, можно приступить к созданию iso-образа:
Продолжительность процесса зависит от размера оригинального дистрибутива. По окончании получаем свежеиспеченный iso-образ с оригинальным дистрибутивом и бонусом в виде grub2. Отмонтируем оригинальный iso:
и прожигаем новый iso-шник на болванку. Грузимся и проверяем результат.
Добавление в меню пункта загрузки с CD/DVD & USB [ править ]
Средствами исключительно GRUB загрузиться с CD-ROM/USB не получится, но «мир не без добрых людей». Существуют мультизагрузчики, не такие многофункциональные, как GRUB, но, зато, умеющие грузить систему с CD-ROM/USB, даже если BIOS такой возможности не предоставляет.
Способ 1. Загрузка с CD & USB посредством Plop Boot Manager [ править ]
Сама загрузка будет осуществляться посредством Plop Boot Manager. Для этого качаем архив Plop’а, откуда извлекаем файл plpbt.bin, и кидаем его в каталог /boot/ нашей системы. Далее открываем файл /etc/grub.d/40_custom:
Либо вот таким способом, чтобы не узнавать каждый раз номер раздела и диска.
Затем обновляем grub.cfg:
Перезагружаемся, радуемся результату.
Способ 2. Загрузка с CD посредством Smart Boot Manager [ править ]
Затем обновляем grub.cfg:
Перезагружаемся, смотрим результат.
Деактивация recordfail grub2 [ править ]
GRUB2 поставляется с функцией, которая после неудачной попытки загрузки во время следующей загрузки автоматически останавливается в меню загрузки.
Это может быть нежелательным в определенных обстоятельствах. В зависимости от версии GRUB, изменения необходимо внести либо в файл /etc/grub.d/00_header, либо в переменную GRUB_RECORDFAIL_TIMEOUT в файле /etc/default/grub.
Сначала выполните поиск в файле /etc/grub.d/00_header.
Если это найдено (точное совпадение, или чуть-чуть изменённое), то просто добавьте комментарии:
Также строчка может иметь такой вид:
Затем отредактируйте файл /etc/default/grub и добавьте строку:
Для таймаута в 7 секунд. Потом выполните обновление конфигурации grub:
Теперь GRUB2 будет всегда использовать установленное время ожидания.
Ручной сброс значения recordfail [ править ]
Значение для grubenv можно сбросить вручную. Для этого нужно ввести в консоли grub следующее: