Start grub on 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 — изменение стандартного пункта загрузки и/или времени показа меню. Рассмотрим же, как это делается.

Читайте также:  Linux x32 что это

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

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

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

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

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

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

Или же можно указать значение идентификатора (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 ) необходимо:

sudo gedit /etc/default/grub

Источник

How to get to the GRUB menu at boot-time?

My system is not dual-boot, I run a standard Ubuntu desktop system «on the metal» (I think running it in a VM is the same). Pressing c while booting does not cause the GRUB menu to appear (which I believe it does for a dual-boot system). How can I get the GRUB-menu to present itself on a single-boot system?

Читайте также:  Какую версию линукс ставить

+1 excellent question to expose an essentially undocumented feature of Ubuntu boot process, the answer to which I only found by accident while groveling through grub.cfg. Thanks for hoisting this up to the top (Googleable) level.

Credit where credit is due. This issue came up in another question of mine (buried deep in the comments). Jorge Castro suggested that it would be a good idea to present as a question it its own right. (so credit to him. and I’m happy to bask in the reflected glow 😉 I can see the value of it being a primary Q/A.

10 Answers 10

Menu will appear if you press and hold Shift during loading Grub, if you boot using BIOS. When your system boots using UEFI, press Esc .

For permanent change you’ll need to edit your /etc/default/grub file:

Place a # symbol at the start of line GRUB_HIDDEN_TIMEOUT=0 to comment it out. If that line doesn’t exist, then you can comment out this line instead: # GRUB_TIMEOUT_STYLE=hidden , and then change GRUB_TIMEOUT=0 to GRUB_TIMEOUT=5 , for instance, to give the grub menu a 5 second timeout before it automatically logs you in.

Save changes and run sudo update-grub to apply changes.

@codeMonk: Oops! (I’ve deleted my previous comment because I was on the wrong track). I originally misunderstood the context of «GRUB_TIMEOUT=0». The context you mean is in relation to the «permanent» display of GRUB-menu. I thought you meant in relation to the «Shift» key method. It is true that for a permanently recurring display, you need both «#GRUB_HIDDEN_TIMEOUT=0» and «GRUB_TIMEOUT=*NON-ZERO*», as described in the link in the answer . (I’ve just test it both ways.)

In Ubuntu 18.04 there is no GRUB_HIDDEN_TIMEOUT=0 line in my /etc/default/grub — instead there is GRUB_TIMEOUT_STYLE=hidden (Shift during boot never worked for me (Dell?)). Any idea what to do?

@jena I found the advice at the top of /etc/default/grub helpful: i.e., to have a look at info -f grub -n ‘Simple configuration’ . This explains the options. Use GRUB_TIMEOUT_STYLE=menu to have the menu shown. Or press ESC if you keep the setting at hidden but want to see the menu.

Grub changes with each release, please consider adding version informatoin. The fact for example that this works only for 14.04. It sure is not relevant anymore for 18.04

I have tried both the Shift and Space keys but nothing works. Only the Esc key works for Ubuntu 14.04 and 16.04 to get Grub Menu at boot time.

The same for Ubuntu 16.04 — only Escape works. This should be mentioned in documentation (Recovery Mode)

I had to repeatedly press the ESC key, not hold it down. Let’s have 6 ways to do the same thing. Linux is fun.

@jena Agree. I have several Ubuntu, but only one installed on Intel NUC wants Esc key for GRUB menu. This is problematic because if I press Esc too many times, it goes directly to GRUB CLI.

Читайте также:  Linux содержимое текущей директории

In Ubuntu 18.04, there is no GRUB_HIDDEN_TIMEOUT=0 line in /etc/default/grub — instead there is GRUB_TIMEOUT_STYLE=hidden . According to info -f grub -n ‘Simple configuration’ :

if this option is unset or set to ‘menu’, then GRUB will display the menu and then wait for the timeout set by ‘GRUB_TIMEOUT’ to expire before booting the default entry. Pressing a key interrupts the timeout.

So if you either remove or comment out the line as:

and run sudo update-grub , then the menu will show by default.

18.04 + Not dual boot, boots in grub 5 seconds:

GRUB_TIMEOUT_STYLE=false

GRUB_TIMEOUT= (no value). Works fine LVM.

  • Keep hitting Shift until you see «Grub Loading Message»
  • After the message, hold the Shift down until the menu appears.

That so does not work for me. No matter what I do to this poor SHIFT key, this Intel NUC skips the grub menu 🙁

@yPhil Intel NUC is the freak who eats Shift . It works everywhere else. I’m lucky that Esc works for my NUC, but it didn’t seem to work for you, did it?

By default, GRUB will show the menu if there is a second operating system installed. If only Ubuntu is installed, then GRUB will generally load Ubuntu without showing the menu. To reconfigure GRUB to always show a menu:

  1. Edit /etc/default/grub : Set GRUB_HIDDEN_TIMEOUT= (no value after the = sign).
    Set GRUB_TIMEOUT=n to show the menu for n seconds.
  2. Run update-grub to regenerate /boot/grub/grub.cfg based on the /etc/default/grub settings.

You can get GRUB to show the menu even if the default GRUB_HIDDEN_TIMEOUT=0 setting is in effect:

  • If your computer uses BIOS for booting, then hold down the Shift key while GRUB is loading to get the boot menu.
  • If your computer uses UEFI for booting, press Esc several times while GRUB is loading to get the boot menu.

Hopefully this clears up confusion as to why Shift works for some users and Esc works for others.

Edit /etc/default/grub ( sudo -H gedit /etc/default/grub ).

then save the file and quit the editor. Next run:

GRUB_TIMEOUT_STYLE

If this option is unset or set to menu , then GRUB will display the menu and then wait for the timeout set by GRUB_TIMEOUT to expire before booting the default entry. Pressing a key interrupts the timeout.

If this option is set to countdown or hidden , then, before displaying the menu, GRUB will wait for the timeout set by GRUB_TIMEOUT to expire. If ESC is pressed during that time, it will display the menu and wait for input. If a hotkey associated with a menu entry is pressed, it will boot the associated menu entry immediately. If the timeout expires before either of these happens, it will boot the default entry. In the countdown case, it will show a one-line indication of the remaining time.

Источник

Оцените статью
Adblock
detector