Grub как запустить linux
Перейти к содержимому

Grub как запустить linux

  • автор:

GRUB — загрузчик системы

GRUB

GRUB (GRand Unified Bootloader 1) ) — программа-загрузчик операционных систем.
GRUB является эталонной реализацией загрузчика, соответствующего спецификации Multiboot и может загрузить любую совместимую с ней операционную систему. Среди них: Linux, FreeBSD, Solaris и многие другие. Кроме того, GRUB умеет по цепочке передавать управление другому загрузчику, что позволяет ему загружать Windows (через загрузчик NTLDR), MS -DOS, OS /2 и другие системы.
После настройки GRUB пользователь при включении компьютера видит список операционных систем, которые установлены на его компьютер и которые можно загрузить, выбрав подходящую и нажав Enter .
GRUB позволяет пользователю при загрузке задавать произвольные параметры и передавать их в ядро Multiboot-совместимой ОС для дальнейшей обработки.
GRUB — самый популярный загрузчик в мире Linux и является загрузчиком по умолчанию в большинстве известных дистрибутивов.

Здесь и далее в иных статьях под названием программы GRUB подразумевается GRUB 2, который используется в операционных системах семейства Ubuntu начиная с версии 9.10, до него использовался GRUB первой версии, сейчас известный как GRUB Legacy. GRUB 2 полностью переписан с нуля и не имеет ничего общего с GRUB Legacy, разработка которого была остановлена в пользу более совершенного и мощного GRUB.

Первые шаги

При первом сравнении GRUB со старым GRUB Legacy самым весомым различием оказывается измененная структура файлов конфигурации.

Настройка GRUB производится теперь принципиально иным способом — основным файлом конфигурации является «/boot/grub/grub.cfg«. Однако же, не торопитесь править его так, как привыкли это делать с «menu.lst» в GRUB Legacy. При внимательном прочтении мы видим в начале файла «grub.cfg» такие строки:

# # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub #

И об этом нас предупреждают не просто так. Ведь «grub.cfg» генерируется автоматически с использованием нескольких скриптов. Поэтому после следующего обновления GRUB ваш «grub.cfg» будет создан заново, и все ваши правки будут утрачены.

Кроме файла «grub.cfg», отвечающего за загрузочное меню, имеются файл «/etc/default/grub» и папка «/etc/grub.d«. Рассмотрим их подробнее.

/etc/default/grub

Данный файл содержит в себе основные настройки для GRUB. Через него, собственно, они и изменяются. Для наглядности ниже приводится примерное содержимое этого файла:

GRUB_DEFAULT=6 #GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT="2" GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entrys #GRUB_DISABLE_LINUX_RECOVERY="true"

Файл представляет из себя набор опций в понятном формате ОПЦИЯ=ЗНАЧЕНИЕ.
Наиболее часто встречающаяся потребность при настройке GRUB — изменение стандартного пункта загрузки и/или времени показа меню. Рассмотрим же, как это делается.

Изменение стандартного пункта загрузки

По умолчанию стандартный пункт (выделенный при показе меню) — верхний в списке. После установки Ubuntu она окажется наверху, а Windows, например, будет последним пунктом.

Значением «GRUB_DEFAULT» является номер пункта меню, который должен быть выбран стандартным. Чтобы выбрать другой пункт, нам нужно узнать, каким по счету он будет в списке. Есть два варианта:

Просмотреть содержимое «/boot/grub/grub.cfg» и сосчитать, какой по счету окажется нужная запись;
Перезагрузиться и более наглядно посмотреть меню загрузки.

Нумерация пунктов меню начинается с нуля. Значение по умолчанию — 0, поэтому и выбирается первый пункт.

Пятому сверху пункту будет соответствовать значение 4, второму — 1, первому — 0. В вышеприведенном примере установлено значение 6, то есть стандартным задан седьмой пункт меню.

Команда sudo grub-reboot 1 однократно выбирает второй пункт меню по-умолчанию (только для следующей загрузки),

Команда sudo grub-set-default 2 выбирает на постоянной основе третий пункт меню по-умолчанию.

Или же можно указать значение идентификатора (id), оно должно быть именно таким, каким мы его видим в «/boot/grub/grub.cfg«. Данный способ удобен тем, что после обновления ядра не придется изменять настройки из-за сбившейся нумерации.

Пример

Если в «grub.cfg» пункт меню выглядит так:

menuentry ‘Example GNU/Linux distribution’ —class gnu-linux —id example-gnu-linux

То значение параметра «GRUB_DEFAULT» должно указываться именно в виде:

GRUB_DEFAULT=example-gnu-linux

Ранее документацией предлагалось указывать название пункта меню загрузки (так, как он отображается в самом меню). Хотя этот способ по-прежнему работает, использовать его не рекомендуется, поскольку эти названия могут меняться, например, при обновлении ядра/версии ОС

Изменение времени отображения меню

По умолчанию меню загрузки отображается 10 секунд (при наличии других установленных ОС, если система одна — GRUB по умолчанию не отображается и сразу начинает загрузку), после чего загружается стандартный пункт, если раньше не нажат Enter или не выбран другой пункт, что останавливает таймер. За эту задержку отвечает параметр «GRUB_TIMEOUT», значение задается в секундах.

Если поставить значение «-1», то меню будет отображаться до тех пор, пока пользователь не выберет какой-либо пункт

Обратите внимание, что цифра указывается в кавычках. В нашем примере это значение — 2, то есть меню отображается две секунды.

«Скрытое» меню

В случае, если на компьютере установлена только Ubuntu, меню загрузки по умолчанию не будет отображаться, а GRUB будет загружать вас напрямую в систему. Однако же, иногда может возникнуть необходимость загрузиться с другим ядром или же запустить проверку памяти. Для этого предусмотрено «скрытое меню» за него отвечает параметр «GRUB_HIDDEN_TIMEOUT».

В случае, когда установлены другие ОС, этот параметр закомментирован (# в начале строки). Данное значение позволит приостановит загрузку на заданное количество секунд, давая пользователю возможность вызвать меню загрузки, нажав Esc .

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

Параметр «GRUB_HIDDEN_TIMEOUT_QUIET» отвечает за отображение таймера во время паузы. Если его значение «true» таймер отображаться не будет, а со значением «false» будет.

Чтобы GRUB отображал меню со списком установленных операционных систем, без нажатия клавиш вызова меню (например Shift или Esc ) необходимо:

Открыть файл /etc/default/grub для редактирования:

sudo gedit /etc/default/grub

Выставить время до автоматической загрузки выделенной системы/ядра (например 10 секунд):

GRUB_TIMEOUT="10"

Чтобы меню GRUB отображалось, необходимо закомментировать следующую строчку (значком #):

#GRUB_HIDDEN_TIMEOUT=0

Как открыть меню GRUB при загрузке компьютера

Как открыть меню GRUB

Если при загрузке Linux вы не видите меню GRUB, то, скорее всего, установлена нулевая задержка (таймаут); меню не показывается, и сразу начинается загрузка операционной системы.

Чтобы показать меню GRUB нужно нажать (в некоторых случаях удерживать) определенную клавишу во время загрузки компьютера, а именно после того, как показался экран приветствия (логотип) BIOS/UEFI.

Для компьютеров с BIOS

Для старых компьютеров, с классическим BIOS, чтобы показать меню GRUB, нужно нажать и удерживать клавишу Shift .

Для компьютеров с UEFI

Для современных компьютеров, использующих UEFI, чтобы показать меню GRUB, нужно нажать клавишу Esc .

Если вы нажали и удерживали клавишу Esc , то, возможно, вы попадете в командную строку GRUB. Чтобы открыть меню введите команду normal или используйте другой способ, описанный в заметке Как попасть в меню GRUB, если находишься в командной строке GRUB?

Примечание: справедливо для версии GRUB 2.

Аварийный запуск системы из командной строки GRUB

Админ в маленьком городе

Краткая инструкция по загрузке Windows и Linux из командной строки GRUB на случай каких-либо неполадок. Сразу оговорюсь, что сам grub2 должен запускаться, если же вы не можете попасть в консоль grub2, то вам скорее всего потребуется переустановка grub.

Запуск Linux с помошью командной строки GRUB

Нам понадобится написать всего 3 строчки: «set root«, «linux» и «initrd» и в конце дать команду «boot».

set root=(hd0,5)
linux /boot/vmlinuz-2.6.32-generic root=/dev/sda5
initrd /boot/initrd.img-2.6.32-generic
boot

Немного поясню — в строке set root указываем на корневой раздел linux. В моем случае это был «hd0,5», он же «/dev/sda5», то есть пятый раздел первого диска. Список доступных разделов диска можно получить, выполнив команду ls.

Далее, командой linux, указываем загружаемое ядро. Полное название ядра знать не обязательно, просто пишем «linux /boot/vmlinuz» и нажимаем tab. Консоль сама допишет правильный результат. У меня был предложен выбор между старым и новым ядром. Только в конце строки не забудьте дописать параметр root=/dev/sda5 или что там у вас.

Для старта системы этого уже должно хватить. Осталось выполнить команду boot. В некоторых случаях перед выполнением «boot» попробуйте дополнительно выполнить команду initrd, как описано выше в примере.

Запуск Windows из командной строки GRUB

Процесс запуска Windows из консоли GRUB ещё проще. Как и в случае с Linux в начале указываем корневой раздел, где находится Windows. В моем случае окошки установлены в /dev/sda1. После чего, отдаем команду chainloader +1, которая заставляет grub2 передать дальшейшее управление загрузкой Windows-загрузчику. Даем команду boot на запуск системы и наблюдаем загрузку винды. Пример:

set root=(hd0,1)
chainloader +1
boot

Подписывайтесь на канал
Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

Комментариев: 8

  1. 2018-03-08 в 11:13:03 | Сергей Единственный работающий мануал на весь рунет. Респектище автору.
  2. 2018-09-22 в 20:03:52 | Роман Если не знаете на каком разделе установлен Линукс (вдруг), можно каждый раздел проверить командой типа ls(hd0,1)/ (со слешем в конце).
  3. 2018-11-04 в 16:01:30 | Ильшат Спасибо.
  4. 2018-11-22 в 09:16:11 | cryptoparty Привет, а как сделать так, чтобы каждый раз это не прописывать?
  5. 2018-11-22 в 11:49:25 | dre@mer Для этого нужно прописать соотвествующие изменения в загрузчик GRUB. Обычно нужные строки добавляются автоматически при установке системы.
  6. 2019-11-06 в 07:30:43 | Рустам Спасибо автору. Что делать, если видит только разделы msdos, но я знаю что там есть Linux
  7. 2020-03-06 в 01:43:50 | Александр Спасибо автору.

9.6. Команды GRUB

GRUB разрешает запуск команд в интерфейсе командной строки. Некоторые команды используют аргументы. Аргументы должны разделяться пробелом.

Наиболее распространенные команды:

  • boot — загружает операционную систему или последний загруженный последовательный загрузчик.
  • chainloader — передает управление файлу. Если файл расположен в первом секторе раздела, то можно просто использовать chainloader +1 . Пример использования команды chainloader :
chainloader +1 
initrd /initrd-2.6.8-1.523.img 
  • — определяет устройство, раздел и файл образа первого загрузчика, например, (hd0,0)/grub/stage1 .
  • — определяет диск, куда будет установлен загрузчик первой стадии, например, (hd0) .
  • — передает загрузчику второй стадии информацию о расположении загрузчика первой стадии, например, (hd0,0)/grub/stage2 .
  • p — указывает команде install выполнить поиск файла конфигурации меню , например, (hd0,0)/grub/grub.conf .

Предупреждение

Команда install перезаписывает все существующие данные в MBR.

kernel /vmlinuz-2.6.8-1.523 ro root=/dev/VolGroup00/LogVol00 
root (hd0,0) 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *