Чем отличаются grub legacy и grub
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Загрузчики Linux
Master Boot Record
Для того, чтобы начать разговор про загрузчиков, для начала необходимо понимать, как разбиваются жесткие диски и систему их разбиения.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
MBR Master Boot Record это первые 512 Байт диска, это не раздел, не партиция это участок места в начале жесткого диска, зарезервированный для загрузчика Операционной системы и таблицы разделов.
Когда компьютер включается BIOS производит тестовые процедуры. После чего, передает код управления начальному загрузчику, который как раз расположен в первых байтах MBR. Причем, какому жесткому диску передавать управление мы определяем самостоятельно в соответствующих настройках BIOS. MBR это очень важная часть нашего жесткого диска, потеря его чревата потерей данных с нашего жесткого диска или невозможностью загрузится. Поэтому ранее возникала потребность в резервном копировании данной части жесткого диска. Но это было достаточно давно.
Для начала надо нам понять, что и куда у нас смонтировано какой раздел у нас является загрузочным и его скопировать. Вводим команду fdisk l и видим следующее:
Только, что мы скопировали первый блок жесткого диска, это то самое место, где на жестком диске находится MBR.
Загрузчики
Первый загрузчик Lilo Linux Loader
Это был самый популярный загрузчик для Linux и для Unix систем в целом, он не зависел от файловой системы, мог загружать ОС с жесткого диска или с дискеты. Из этого выходила его особенность, загрузчик Lilo хранил в своем теле положение ядер и пункты меню и требовал обновления себя с помощью специальной утилиты, можно было поместить до 16 пунктов меню при загрузке. Данного загрузчика уже нету во многих дистрибутивах ОС Linux.
В настоящее время повсеместно используется загрузчик GRUB2, но мы можем поставить загрузчик Lilo, чтобы с ним разобраться.
В процессе установки выскакивает предупреждение, что это первая установка lilo, после установки необходимо будет исполнить команду, а затем запустить непосредственно загрузчик, который применит непосредственно все изменения. Нажимаем ОК. Далее запускаем liloconfig. Ничего не произошло, просто утилита создала файл и этот файл является файлом конфигурации. С помощью команды cat /etc/lilo.conf мы можем посмотреть файл конфигурации загрузчика.
В заголовке файла написано сразу, что после внесения изменений необходимо выполнить команду lilo, чтобы он сразу применил их. Далее идут основные параметры конфигурационного файла. Первый параметр lba32. Вот он как раз и меняет ту самую традиционную конфигурацию цилинд-головка-сектор, на logical block адреса, что позволяет работать с большими дисками.
В разделе boot мы должны указать на каком диске у нас находится MBR. Если внимательно посмотреть, то можно увидеть подсказку, где посмотреть /dev/disks/by-id/ata* uuid дисков. После, чего можно скопировать имя диска и вставить его и тогда его сможет загружать. Lilo узнает, где MBR и будет оттуда загружать систему.
Далее мы можем посмотреть, где находятся ядра нашей операционной системы. Когда мы запустили liloconfig загрузчик нашел наши ядра операционной системы. Как видно на скриншоте определил версию ядра, определил где будет корневая файловая система. Смонтировал в режиме read-only. В данных параметрах мы может отредактировать строчку lable, чтобы переименовать отображение при загрузке. Если есть желание можно отредактировать данный файл и добавить еще ядро, если установлена вторая OS.
Загрузчик GRUB
Старый загрузчик GRUB эта та версия загрузчика, который использовался с Lilo. Тогда Lilo был самый распространенный. Теперь данный загрузчик называется Grub legacy. Больше никак не развивается, для него выходят только патчи и обновления и его даже невозможно установить на новые операционные системы. Т.к. команды и инструментарий используется одинаковый, как для старого GRUB, так и для нового.
Далее мы будем рассматривать современный вариант загрузчика GRUB 2.
Примерно так выглядит файл настроек для загрузки.
Отредактировать данный файл возможно в редакторе.
Второй путь к папке /etc/grub.d в ней лежат исполняемые файлы. Данные файлы сканируют, также ядра при необходимости добавят нужные параметры в загрузчик. Мы всегда можем добавить опцию и написать скрипт. Для применения настроек в загрузчике, надо выполнить update-grub.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Загрузчик системы GRUB Legacy
Содержание
GNU GRUB Legacy (GRand Unified Bootloader) — это первая версия программы-загрузчика операционных систем GRUB. В Ubuntu до версии 9.04 использовалась по умолчанию именно эта первая версия GRUB, которая теперь называется GRUB Legacy. В более поздних версиях используется GRUB 2, который теперь подразумевается под просто GRUB.
Основные сведения
GRUB Legacy — самый популярный загрузчик в мире Linux, так как является загрузчиком по-умолчанию в большинстве известных дистрибутивов. Ранее самым популярным был Lilo.
GRUB Legacy может загрузить практически любую ОС, имеющуюся на вашем компьютере, а также в сети и, при некоторых ухищрениях, на CD/DVD (даже если этого не поддерживает BIOS вашего комьютера в виду его почтенного возраста). Умеет по цепочке передать управление другому загрузчику, допустим NTLDR для загрузки Windows. После настройки GRUB, пользователь, при включении компьютера, видит список операционных систем, которые установлены на его компьютер, и которые можно загрузить, нажав Enter. GRUB позволяет установить несколько ОС на один компьютер в разные разделы, загружать разные ядра, передавать параметры ядру.
Основные возможности GRUB Legacy
На данный момент разработка GRUB Legacy (GRUB первой версии) остановлена в пользу развития более совершенного и мощного загрузчика GRUB2, который является загрузчиком по умолчанию в версиях Ubuntu начиная с 9.10 «Karmic Koala».
Настройки
Настройка вручную
В Ubuntu GRUB Legacy имеет свой файл конфигурации: /boot/grub/menu.lst Для его редактирования наберите
Пункт по умолчанию
Определяет какой блок title будет загружаться по истечению времени timeout если не нажимать никаких клавиш. Блоки title нумеруются по порядку начиная с нуля.
Вы можете использовать по умолчанию последний выбранный вариант:
Но при этом среди директив загрузки системы должно быть savedefault.
Таймаут выбора
Время для выбора режима загрузки (в секундах). Если пользователь ничего не трогает, по истечении тайм-аута выбирается метка, указанная в поле default.
Скрыть меню
Меню будет показано только по нажатию Esc.
Пароль
Пароль будет необходим для доступа в командную строку GRUB, редактирования записей и загрузки тех систем, среди директив которых есть команда lock.
Записи для различных ОС
В конце конфигурационного файла указывается несколько секций операционных систем. Каждая из них начинается с директивы title, после которой указан текст для меню.
Windows
название пункта меню
определение раздела с ОС
придание разделу статуса активного
Linux
название пункта меню
определение раздела с ОС
передача загрузки ядру, возможно, вместе с дополнительными параметрами
Нумерация разделов
Жёсткие диски и разделы на них GRUB именует по-своему, в виде (hdномер_диска,номер_раздела), причём нумеровать начинает с нуля. Тут важно знать вот что: (hdX,Y) — означает Y+1-ый раздел на X+1-ом диске. То есть (hd1,0) — это первый раздел второго диска в вашем компьютере (в нотации GRUB (да и Linux) диски и разделы нумеруются с нуля, только и всего). Тем, кто привык к буквенным обозначениям в Windows, без них будет тяжеловато, но дистанцироваться от них следует хотя бы потому, что они непостоянны и могут изменяться (в результате чего, возникают известные проблемы). Диски нумеруются в соответствии с подключением, разделы — в соответствии с порядком следования на диске. Как правило, (hd0,0) — это первый раздел master-диска подключенного к основному (primary) IDE-контроллеру либо к нулевому SATA порту. При помощи команды map можно осуществить «замену» дисков. Т.е. если у Вас есть два жестких диска и операционная система, такая как Windows, которая не хочет грузиться с второго жесткого диска, вы можете подменить hd0 на hd1 и hd1 на hd0. Другими словами, вы можете виртуально поменять местами два жестких диска и загрузить выбранную операционную систему. Приведенные опции загрузят ОС из первого раздела второго диска:
Команды map «меняют местами» диски даже в представлении GRUB: второй диск становится после их выполнения hd0, a нe hd1.
Командный режим
Есть у GRUB и командный режим (попасть в него можно, остановив загрузку клавишей Esc и нажав C ). Набрав в командном режиме help, вы получите список всех доступных команд.
поможет получить краткую справку по соответствующей команде GRUB.
GUI для настройки GRUB
Кроме того, для конфигурирования GRUB есть как минимум две GUI-утилиты для редактирвоания файла menu.lst. Из исходников (не бойтесь, в данном случае это действительно просто) можно установить GRUBed, а в репозитариях есть StartUp-Manager.
Дополнительно
C помощью GRUB и Gfxboot можно организовать и графическое загрузочное меню. Сделать это не сложно, к тому же существует много готовых тем.
Похожие программы
Грубая правда о Grub’е 2
Не понимаю я логики иных разработчиков.
Если берешься усовершенствовать, согласно своим представлениям, некую популярнейшую и необходимейшую миллионам людей программу, и при этом начинаешь писать ее с нуля, то почему бы тебе не дать проекту другое название. Пусть старая добрая программа остается со своим брендом, а ты создай новый бренд, если так уверен в успехе своей программы.
Вместо этого, старый добрый проект закрывается, новая поделка навязывается насильно, и всем плевать на свободу выбора, которой так гордился прежде мир свободного софта.
Сказанное относится: к незажившей ране ≈ KDE; к возникшему в начале 2011 года Gnome3; и к неотвратимо расползающемуся, подобно раковой опухоли, Grub2. Все три этих инновации объединяет то, что они откровенно хуже (ресурсоемкость, медлительность, неудобство или невозможность настроек), несовместимы со своими предшественниками и базируются на бредовых идеях. А цель подобных инноваций только одна ≈ сделать «как у Виндоуз» ≈ то есть, чтобы пользователь не смог самостоятельно настраивать программы, а при каждой нештатной ситуации бежал к «специалисту», то есть платил деньги.
Тема сегодняшнего обсуждения ≈ Grub2, давайте перейдем к нему.
На первый взгляд, он вроде бы не сильно отличается от предшественника ≈ Grub Legacy. При инсталляции так же бодро обследует жесткие диски, находит все операционные системы и выдает удобное загрузочное меню. Это меню снабжено всякими картинками и даже озвучено и внешне выгодно отличается от старого.
Приходилось слышать мнение ≈ «Дескать, в старом грубе один файл настройки, в новом ≈ другие, притерпимся и привыкнем».
Но горе вам, если вы постоянно устанавливаете новые дистрибутивы, удаляете старые, меняете ядра, имеете клоны разделов или просто хотите иметь внятные и понятные вам пункты меню вместо стандартных безликих надписей!
Попробуйте удалить ненужный пункт меню или добавить нужный! Попробуйте отредактировать параметры загрузки! Попробуйте поменять строки меню местами!
Все это в старом Grub Legacy делалось редактированием единственного файла menu.list в текстовом редакторе и занимало от силы 10 минут.
А вот как происходят эти же действия в новом Grub2:
1. Изменение настроек по умолчанию
К ним относится: время ожидания меню; строка, загружаемая по умолчанию; использование UUID’ов; наличие строк recovery mode (безопасный режим, он же режим восстановления) и прочие.
GRUB_DEFAULT=0 ≈ В первой строке устанавливается строка меню, загружаемая автоматически (если не выбрана иная). Первая строка считается нулевой, вторая ≈ первой и т.д.
GRUB_TIMEOUT=5 ≈ Задержка до начала загрузки пункта меню в секундах. Чтобы остановить отсчет секунд, достаточно нажать клавишу пробел или стрелочки вверх-вниз.
GRUB_CMDLINE_LINUX_DEFAULT=»quiet» ≈ По умолчанию ядро LINUX будет загружено с параметром «quiet». Можно вписать сюда другие параметры, но они будут применяться ко всем ядрам подряд.
GRUB_CMDLINE_LINUX=»» ≈ Дополнительные параметры загрузки ядра.
Чтобы изменить эти четыре настройки, нужно вписать свои значения и запустить команду
Команда перепишет основной конфигурационный файл Grub2 ≈ /boot/grub/grub.cfg с новыми значениями.
Далее в файле /etc/default/grub еще есть возможность раскомментировать строки, позволяющие осуществить некоторые важные настройки:
Попросту, если хотите видеть root=/dev/sdaX вместо root=UUID=xxx, то снимите решетку перед словами GRUB_DISABLE_LINUX_UUID=true
Если не хотите появления пунктов меню «режим восстановления», то снимите решетку перед строкой GRUB_DISABLE_RECOVERY=»true»
Миленький такой гудочек.
Наберите, не пожалеете ≈ там еще очень много любопытного.
И опять-таки, чтобы изменения вошли в силу нужно переписать файл /boot/grub/grub.cfg при помощи команды
2. Добавление и удаление пунктов меню. Редактирование этих пунктов
Grub2 так умно и замечательно устроен, что не допускает возможности внесения изменений в автоматически созданное при инсталляции загрузочное меню. Так что редактирование невозможно.
Вот его полный текст:
Перевод: Этот файл обеспечивает простой способ добавлять собственные пункты меню. Просто впишите новые пункты, которые вы хотите добавить к меню, непосредственно после данного комментария. Не изменяйте строку ‘exec tail’ в начале файла.
Затем отредактируем название пункта меню. Вместо «RFRemix 15 on /dev/sda3 (2.6.38.6-27.fc15.i686) (on /dev/sda3)» напишем просто «Fedora 15 on /dev/sda3»
Что касается всех остальных команд и их аргументов, то, если они загружают раздел нормально, менять их незачем, ведь в меню они не видны.
Но одно нужно иметь в виду: разработчики Grub2 сделали настоящую подлость в нотации разделов. Раздел (hd0,1) означает первый раздел первого диска, так как нумерация дисков начинаются с нуля, а нумерация разделов ≈ с единицы. Логики здесь нет никакой, просто желание запутать пользователя. Тем более, что номера пунктов меню, как положено, считаются с нуля.
После чего делаем неизменное
Теперь можно просмотреть файл /boot/grub/grub.cfg и убедиться, что в нем появился новый пункт меню ≈ «Fedora 15 on /dev/sda3». Пункт этот окажется последним, так как перед ним будут идти все menuentry, создаваемые скриптом 10_linux (который и создает меню по умолчанию).
Теперь нужно проверить, работает ли наш menuentry на деле. Придется перезагрузиться, выбрать в загрузочном меню пункт «Fedora 15 on /dev/sda3» и нажать ENTER.
Если загрузка состоялась, то продолжим работу.
3. Создаем собственное модульное меню и деактивируем меню, созданное автоматически
Теперь можно избавиться от пунктов, созданных при инсталляции. Только не нужно удалять никаких файлов, как советуют иные руководства. Достаточно снять исполняемый бит с файла /etc/grub.d/10_linux :
Если файл в директории /etc/grub.d не является исполняемым, то команда update-grub не может его запустить, что фактически означает его игнорирование.
Модульное меню готово. Теперь, чтобы убрать любой из пунктов меню, достаточно лишить соответствующий файл исполняемого бита. При необходимости его всегда можно подключить обратно.
Если вы создали новый раздел и установили новую ОС, то вам придется сделать файл /etc/grub.d /30_os-prober снова исполняемым, чтобы он мог найти и вписать новенькую. На основе этой записи вы сделаете очередной файл ХХ_myOS, а /etc/grub.d /30_os-prober опять деактивируете.
Поменять местами пункты меню можно просто поменяв первые цифры в названии файлов.
4. Никому не верь, особенно разработчикам (Для самых отчаянных)
Сказанное ниже не является руководством к действию, но как один из вариантов, вполне может быть принято на вооружение.
В первой строке файла /boot/grub/grub.cfg сказано: «DO NOT EDIT THIS FILE!». Во всех без исключениях руководствах по Grub2, на самом видном месте, иногда большими буквами написано: «Не пытайтесь редактировать файл /boot/grub/grub.cfg, Все равно он будет переписан и все ваши изменения пропадут».
5. Подведение итогов
Надеюсь вы убедились, что смысле удобства использования старый Grub Legacy даст новому сто очков вперед. Так что если у вас есть возможность установить хоть один дистрибутив, допускающий использование Grub Legacy (например, Fedora), то ставьте его, хотя бы для того, чтобы им запускать все остальные. Можно также выделить загрузочный раздел на диске и установить туда Grub Legacy. В любом случае стоит оттянуть освоение недоношенного Grub’а 2 как можно дольше, авось он сам сойдет на нет.
Содержание
Первые шаги
При первом сравнении 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).