Установка grub customizer в linux mint
Содержание:
- Post-Restoration Commands
- Moving GRUB 2
- GRUB Legacy Upgrades and Downgrades
- Создание дополнительного меню загрузки
- Выставляем правильные настройки
- Установка загрузчика Grub в GPT для BIOS
- Reinstalling GRUB 2 from a Working System
- Что нам понадобится
- Fixing reboot/shutdown freezes
- Displays
- Themes
- Installing/Reinstalling/Moving GRUB2
- Booting an ISO from a Menuentry
- Как однократно выполнить загрузку произвольного пункта меню?[править]
- Создание загрузочного носителя
- Монтирование разделов
- Password protection of GRUB menu
- внешние ссылки
- Настройки
- Установить с помощью DisplayFusion
- Purging & Reinstalling GRUB 2
- Manual configuration of core image for early boot
- /etc/grub.d
- Combining the use of UUIDs and basic scripting
- История
grub-кастомайзер -утилита предназначена для редактирования меню загрузчика GRUB2 в BIOSе компьютера. Расскадем подробно о способах установки и работы grub для различных операционных систем, монтирование разделов, инструкции по работе и настройке разделов. Сайты, которые могут помочь с разными проблемами при работе с grub.
Post-Restoration Commands
Once the user can boot to a working system, the following commands may prove useful in locating and/or fixing the problem.
- To refresh the available devices and settings in /boot/grub/grub.cfg
sudo update-grub
To look for the bootloader location.
grub-probe -t device /boot/grub
To install GRUB 2 to the sdX drive’s MBR or boot sector (sda, sdb, etc.)
sudo grub-install /dev/sdX
Moving GRUB 2
The command to change the GRUB 2 installation device or boot files is grub-install run as root. This command allows the user to modify the installation by setting the ROOT directory, preload modules, run specific setup files and more. When executed, grub-install may run one or more other commands, such as grub-probe, grub-mkimage, and grub-setup. Here are some considerations when running grub-install:
- The grub-install command should be used rather than grub-setup under normal circumstances. grub-setup will be called by grub-install when needed.
- The command should specify a device and when executed will install the required GRUB files to the location called for in the options.
- If only the device is specified (sda, sdb, etc), the boot information will be written to the specified device’s boot record. (example: sudo grub-install /dev/sda )
- If the —boot-directory= switch is used, the grub folder will will become a subfolder of the location specified. The —boot-directory switch is available in GRUB 1.99 and later.
- If the user attempts to run the command with a specific partition (example: sudo grub-install /dev/sda6 ) a warning will be issued. Specifying a partition is not recommended due to the use of blocklists, which the developers consider unreliable. An option is provided on how to override this recommendation if the user still wishes to do so.
- The list of options available for grub-install can be displayed in a terminal with grub-install --help
- An alternative command to install or move GRUB 2 from a particular device is to use the dpkg-reconfigure command. As the command runs, the user will be offered the opportunity to add kernel options on the first page and to specify the devices/drives on the second screen. Use the TAB key to highlight OK and press ENTER to continue.
- Add the desired kernel options (such as ‘noapic’), TAB to OK when finished, and press ENTER.
- Select the drive(s) with the SPACEBAR. It is not recommended to select any partition. TAB to OK when finished and press ENTER.
GRUB Legacy Upgrades and Downgrades
For information on how to switch from GRUB Legacy to GRUB 2, or from GRUB 2 to GRUB Legacy, please refer to the Grub2/Upgrading community documentation.
Создание дополнительного меню загрузки
Суть в том, что вместо уже знакомого «grub.cfg» можно загрузить свой файл настройки загрузочного меню со своей конфигурацией. Это позволяет создать дополнительное меню с другими пунктами, настройками, оформлением и т.д. Итак, создадим наш новый файл конфигурации. Создавать с нуля не будем, а скопируем «grub.cfg», дав новое имя:
sudo cp /boot/grub/{grub,custom}.cfg
Поскольку файл скопируется с правами 444, выставим ему права на запись:
sudo chmod 744 /boot/grub/custom.cfg
Теперь открываем его в любимом текстовом редакторе и изменяем:
sudo gedit /boot/grub/custom.cfg
Если вы в достаточной мере знаете структуру «grub.cfg» и понимаете, какие строки что делают, можно значительно сократить свой файл, убрав лишнее и привести его к более удобочитаемому виду.
- задаем пункт меню по умолчанию, указав или его номер или точное название.
- здесь задается разрешение экрана в привычном формате WxH. Можно также указать глубину цвета, например «1024x768x32». можно указать несколько вариантов, при этом если первый не сможет быть установлен, будет загружен второй, если и он не сработает — третий и т.д. Например:
set gfxmode=1024x768x32,1024x768x24,1024x768
- Теперь зададим время отображения меню, для этого ищем строку , и устанавливаем значение -1 для отключения таймера.
Для задания фонового изображения найдем строку с (подразумевается, что в вашем «grub.cfg» используется фоновое изображение. Если нет — смотрите пример файла в конце раздела). После команды прописан путь к файлу картинки, поменяйте его на нужный файл.
Обратите внимание, что разрешение картинки должно соответствовать заданному выше разрешению экрана!
Строкой ниже мы можем задать цвета текста. Изменяются они так же, как и в »/etc/grub.d/05_debian_theme« (см. Настройка внешнего вида загрузчика GRUB). Можно проделать один интересный трюк: уберите строки с и теперь настройка будет такой:
- задает цвет/фон текста сверху и снизу (версия grub и комментарии) и текста в консоли
- отвечает за цвет пунктов меню и фон прямоугольника, в котором они находятся
- задает цвет/фон выделенного пункта меню.
Закончив с настройкой, перейдем к пунктам меню, они идут ниже. Измените их, удалите ненужные и добавьте новые, пересортируйте на свой вкус.
Настроив свой файл, сохраните его Ctrl+Shift и закройте.
Теперь необходимо добавить дополнительное меню. Для этого в файле »/etc/grub.d/40_custom« добавим запись такого вида:
menuentry "Название меню"{ configfile /boot/grub/custom.cfg }
Если ваш путь к файлу отличается — исправьте его.
Если вы используете отдельный boot-раздел, путь будет таким: »/grub/custom.cfg«.
Также учтите, что «40_custom» должен заканчиваться пустой строкой!
Если вы хотите, чтобы ваше новое меню загружалось вместо стандартного «grub.cfg», установите новый пункт в качестве пункта по умолчанию, но перед этим проверьте новое меню на работоспособность.
Обновите свой «grub.cfg» выполнив команду:
sudo update-grub
Теперь пункт перехода в дополнительное меню появится в главном, для того чтобы выйти обратно в главное меню, достаточно нажать Esc
В качестве образца пример файла «custom.cfg» (файл урезан до необходимого минимума):
have_grubenv=true load_env ### выбранный пункт по умолчанию set default=0 ### таймаут меню set timeout=2 ### разрешение set gfxmode=800x600x32,800x600x24,800x600 insmod ext2 search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s insmod gfxterm insmod vbe if terminal_output gfxterm ; then true ; else terminal gfxterm; fi insmod png ### фоновое изображение background_image /usr/share/images/grub/yellow.png ### настройка цветов set color_normal=black/black set menu_color_normal=green/light-blue set menu_color_highlight=red/blue menuentry "9.10 @ 2.6.32" { search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s linux /boot/vmlinuz-2.6.32-020632-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro quiet splash initrd /boot/initrd.img-2.6.32-020632-generic } menuentry "9.10 @ 2.6.32 (recovery)" { search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s linux /boot/vmlinuz-2.6.32-020632-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro single initrd /boot/initrd.img-2.6.32-020632-generic } menuentry "windooz"{ search -u AC9C75E59C75AA8A -s chainloader +1 }
Выставляем правильные настройки
Данный способ может похвастаться чрезвычайной эффективностью, поскольку основная причина пропажи – неправильно выставленные настройки. В первую очередь необходимо убедиться, что языковая панель не отключена в настройках системы.
Порядок действий следующий:
- Открываем старую ПУ. Нажав на «Пуск» — «Служебные Windows» — «Панель управления».
- Перемещаемся в раздел «Часы, язык».
- Далее в разделе «Язык» щелкаем по пункту «Изменение способа ввода».
- Открываем дополнительные параметры и щелкаем «Изменить сочетания клавиш».
- В открывшемся окне отметьте пункт «Закреплена на панели задач» и щелкните «ОК».
- Для того, чтобы непосредственно включить языковую панель, не выходя из окна дополнительных параметров, отметьте функцию «Использовать языковую панель», после чего сохраните настройки.
Это, пожалуй, самый легкий способ восстановления значков. Однако, если он вам не помог, двигаемся дальше.
Установка загрузчика Grub в GPT для BIOS
Во-первых, мы можем ничего не менять и установить Grub так, как описано в предыдущем способе. Но тогда он будет установлен в область совместимости с MBR, а это не надежно. Поэтому рекомендуется установить grub так, как описано ниже, на отдельный раздел.
Нужный нам раздел можно создать в установщике любого дистрибутива, если вы выполняете установку в графическом интерфейсе или с помощью gparted. Нам нужен раздел размером 1 Мегабайт без файловой системы и с меткой grub_bios:
Дальше примените изменения, нажмите на разделе правой кнопкой, выберите manage flags и добавьте флаг grub_bios:
Готово. Если у вас нет под рукой доступа к графическому интерфейсу, вы можете создать такой раздел через терминал. Утилита fdisk не поддерживает работу с gpt, поэтому будем использовать gfdisk. Сначала запустите утилиту:
Чтобы создать новый раздел нажмите n и выберите номер раздела:
Соглашаемся с начальным сектором, будет использован первый же свободный:
Выбираем конечный сектор раздела. По умолчанию будет использоваться максимальный. Нам нужен раздел размером 1 Мб. Размер одного сектора GPT — 512 байт, поэтому нам нужен раздел размеров 2048 секторов. Таким образом, конечный сектор будет 24000 с чем-то.
HEX Code — это тот код, который скажет системе, что этот раздел нужно использовать для Grub, нужно установить ef02:
Готово, осталось нажать w для записи изменений на диск:
Установка grub на жесткий диск дальше выполняется точно так же, как и в предыдущем способе:
Осталось создать конфигурационный файл grub:
Теперь переходим к самому сложному, как установить grub efi.
Reinstalling GRUB 2 from a Working System
If Ubuntu is operating normally, boot into the working installation and run the following command from a terminal.
X is the drive (letter) on which you want GRUB to write the boot information. Normally users should not include a partition number, which would produce an error message as the command would attempt to write the information to a partition.
sudo grub-install /dev/sdX # Example: sudo grub-install /dev/sda
This will rewrite the MBR information to point to the current installation and rewrite some GRUB 2 files (which are already working). Since it isn’t done during execution of the previous command, running sudo update-grub after the install will ensure GRUB 2’s menu is up-to-date.
Что нам понадобится
В этой статье мы будем использовать загрузчик Grub, впрочем, он и так используется в большинстве дистрибутивов Linux. Также нам понадобится ISO образ, с которого будем загружаться и вы должны знать на каком разделе он размещён. Удобнее всего разместить его на загрузочном разделе. Чтобы узнать какой раздел диска у вас загрузочный выполните:
Загрузочный раздел будет помечен знаком * в колонке Загрузочный или Boot. Например, у меня /dev/sda2 или как пишется в Grub hd0,2 — загрузочный.
Разделы /dev/sda1 и /dev/sdb3 будут называться в Grub hd0,1 и hd1,3 соответственно. В синтаксисе Grub именование дисков начинается с нуля, а именование разделов с единицы.
Fixing reboot/shutdown freezes
If your machine freezes upon attempts to shutdown or reboot, try modifying /etc/default/grub. Open the file with gksudo gedit /etc/default/grub (graphical interface) or sudo nano /etc/default/grub (command-line). Any other plaintext editor (Vim, Emacs, Kate, Leafpad) is fine too. Find the line that starts with GRUB_CMDLINE_LINUX_DEFAULT and add reboot=bios to the end.
If done properly it should result in something like GRUB_CMDLINE_LINUX_DEFAULT="quiet splash reboot=bios"
Then save the file, run sudo update-grub and reboot in any way that’s possible for you. After that, reboots and shutdowns should start working properly.
With certain hardware (notably DELL) the kernel parameter that you add needs to be reboot=pci (instead of reboot=bios), the procedure remains the same.
Displays
GRUB 2 can do more than provide a simple black & white menu. Its menu can be customized by the user to present a more visually-appealing menu by changing font colors, backgrounds and resolutions.
For information on using splash images and changing font colors and menu resolutions, please refer to the Grub2/Displays community documentation.
Themes
GRUB 2 Theming is still under development, as is integration with gfxmenu. Theme elements will include colors, fonts, progress indicators, menus, and labels. Both of these hold great promise but are not ready for release with Ubuntu 9.10. Check the Links section at the bottom of this page for references.
Installing/Reinstalling/Moving GRUB2
Please visit the Grub2/Installing community documentation. Information concerning upgrades from GRUB 0.97 (Legacy) to GRUB 2 is now located at Grub2/Upgrading.
Booting an ISO from a Menuentry
Ubuntu ISOs, as well as many utility ISOs and some other Linux operating systems, can be booted from a hard drive via a GRUB menuentry. This eliminates the need to create a CD/DVD and allows bootable image files to be stored only on the hard drive.
For information on this Grub 2 feature, please visit the Grub2/ISOBoot community documentation page.
Как однократно выполнить загрузку произвольного пункта меню?[править]
Иногда бывает удобно загрузиться с произвольным пунктом меню, но не менять текущий вариант. Это удобно, например, для тестирования нового ядра, когда надо иметь возможность вернуть старое ядро простой перезагрузкой. Для этого надо настроить Grub в соответствии со способом 1 предыдущего пункта, после чего можно задать пункт меню для следующей загрузки командой grub-reboot и запустить команду reboot. В момент начала загрузки конфигурация Grub автоматически вернётся в исходное состояние, и следующая загрузка компьютера произойдёт по-старому. Это аналогично использованию опции -R загрузчика Lilo.
Создание загрузочного носителя
Для удобства работы с приложением можно установить Grub4Dos на флешку. Это позволит пользователю всегда иметь утилиту под рукой и применять ее при необходимости.
Для создания внешнего загрузочного носителя рекомендуется обратить внимание на видоизмененную версию приложения Grub4DOS Installer 1.1. Она отличается тем, что разработана с учетом последующей установки на флешку
Данная версия русифицирована. Это означает, что работать с Grub4Dos menu намного легче.
Для чего нужен загрузочный носитель? Уникальная структура приложения предоставляет возможность хранить на флешке одновременно несколько ОС. В процессе переустановки Windows пользователь сам выбирает, какую операционную систему требуется загрузить. Теперь нет необходимости хранить диски с ОС.
Монтирование разделов
Примонтируем корневой раздел. Выполняем команду (вместо /dev/sda2 вы должны указать свой раздел):
Мы примонтировали раздел /dev/sda2 в директорию /mnt.
Если для загрузчика у вас выделен отдельный раздел, то нужно примонтировать еще и его (вместо /dev/sdX укажите ваш boot-раздел):
Теперь можно посмотреть содержимое директории /mnt, чтобы убедиться, что мы примонтировали верный раздел:
Вывод команды должен быть примерно следующим
Обратите внимание есть ли в этом списке каталог /boot, так как именно в нем установлен GRUB
Также можно проверить, что директория boot не пустая:
У меня вывод команды выглядит следующим образом
Обратите внимание на присутствие каталога с именем grub
Далее нужно создать ссылки на несколько директорий, к которым GRUB должен иметь доступ для обнаружения всех операционных систем. Для этого выполните команды:
Монтирование EFI-раздела
Если у вас используется UEFI, то еще нужно примонтировать EFI-раздел в директорию /mnt/boot/efi (выше я указал пример вывода команды fdisk -l в котором показан EFI-раздел):
Warning: If someone has physical access to your machine and is able to boot a live USB/disk (i.e., BIOS allows booting from an external disk), it is fairly trivial for one to modify GRUB configuration files to bypass this if resides on an unencrypted partition. See and .
If you want to secure GRUB so it is not possible for anyone to change boot parameters or use the command line, you can add a user/password combination to GRUB’s configuration files. To do this, run the command . Enter a password and confirm it:
grub-mkpasswd-pbkdf2
Your PBKDF2 is grub.pbkdf2.sha512.10000.C8ABD3E93C4DFC83138B0C7A3D719BC650E6234310DA069E6FDB0DD4156313DA3D0D9BFFC2846C21D5A2DDA515114CF6378F8A064C94198D0618E70D23717E82.509BFA8A4217EAD0B33C87432524C0B6B64B34FBAD22D3E6E6874D9B101996C5F98AB1746FE7C7199147ECF4ABD8661C222EEEDB7D14A843261FFF2C07B1269A
Then, adjust permissions on such that only root can read it and add the following to this file:
/etc/grub.d/40_custom
set superusers="username" password_pbkdf2 username password
where is the string generated by .
Regenerate your configuration file. Your GRUB command line, boot parameters and all boot entries are now protected.
Password protection of GRUB edit and console options only
Adding to a menu entry will allow any user to boot the OS while preventing the user from editing the entry and preventing access to the grub command console.
Only a superuser or users specified with the switch will be able to edit the menu entry.
/boot/grub/grub.cfg
menuentry 'Arch Linux' --unrestricted --class arch --class gnu-linux --class os ...
The factual accuracy of this article or section is disputed.
In order to make Linux entries , the variable in the beginning of can be modified.
/etc/grub.d/10_linux
CLASS="--class gnu-linux --class gnu --class os --unrestricted"
внешние ссылки
Практические инструкции и устранение неполадок
Вики-сайты по распространению предлагают множество решений для типичных проблем и пользовательских настроек, которые могут вам помочь:
- Fedora / GRUB_2
- Gentoo / GRUB2
Технические детали
- Единый расширяемый интерфейс прошивки (прошивка UEFI, распространена с 2012 года)
- Таблица разделов GUID (GPT) — обрабатывает жесткие диски размером более 2 ТиБ и более 4 разделов
- Основная загрузочная запись, используемая с прошивкой BIOS (материнские платы примерно до 2012 года)
- SysLinux (IsoLinux) — часто используемый загрузчик на CD, DVD
- NTLDR (BOOTMGR) — загрузчик Windows
- Сравнение загрузчиков
Настройки
Настройка вручную
В Ubuntu GRUB Legacy имеет свой файл конфигурации: /boot/grub/menu.lst Для его редактирования наберите
sudo gedit /boot/grub/menu.lst
Вместо gedit используйте ваш любимый текстовый редактор. В файле помимо опций, описываются пункты загрузочного меню. Каждый пункт начинается ключевым словом , текст содержащийся после него на той же строке и является названием пункта меню. На следующих строках следует описание действий, выполняемых загрузчиком при выборе соответствующего пункта.
Основные опции:
Пункт по умолчанию
Определяет какой блок title будет загружаться по истечению времени timeout если не нажимать никаких клавиш. Блоки title нумеруются по порядку начиная с нуля.
default 0
Вы можете использовать по умолчанию последний выбранный вариант:
default saved
Но при этом среди директив загрузки системы должно быть savedefault.
Таймаут выбора
Время для выбора режима загрузки (в секундах). Если пользователь ничего не трогает, по истечении тайм-аута выбирается метка, указанная в поле default.
timeout 10
Меню будет показано только по нажатию Esc.
hiddenmenu
Пароль
Пароль будет необходим для доступа в командную строку GRUB, редактирования записей и загрузки тех систем, среди директив которых есть команда lock.
password topsecret password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
Записи для различных ОС
В конце конфигурационного файла указывается несколько секций операционных систем. Каждая из них начинается с директивы title, после которой указан текст для меню.
Windows
title Windows rootnoverify (hd0,1) makeactive chainloader +1</code>
где:
title Windows
название пункта меню
rootnoverify (hd0,1)
определение раздела с ОС
makeactive
придание разделу статуса активного
chainloader +1
Linux
title Ubuntu Intrepid root (hd0,2) kernel /boot/vmlinuz-2.6.27-14-generic root=UUID=4a13e968-c692-465f-bf7a-d1cc1939879c ro quiet splash initrd /boot/initrd.img-2.6.27-14-generic boot
где:
title Ubuntu Intrepid
название пункта меню
root (hd0,2)
определение раздела с ОС
kernel /boot/vmlinuz-2.6.27-14-generic root=UUID=4a13e968-c692-465f-bf7a-d1cc1939879c ro quiet splash
передача загрузки ядру, возможно, вместе с дополнительными параметрами
Нумерация разделов
Жёсткие диски и разделы на них 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 (hd0) (hd1) map (hd1) (hd0) root (hd0,0) makeaktive chainloader +1
Команды map «меняют местами» диски даже в представлении GRUB: второй диск становится после их выполнения hd0, a нe hd1.
Командный режим
Есть у GRUB и командный режим (попасть в него можно, остановив загрузку клавишей Esc и нажав C). Набрав в командном режиме help, вы получите список всех доступных команд.
help имя_команды
поможет получить краткую справку по соответствующей команде GRUB.
Если загрузиться вдруг не получается, то вы всегда можете перевести GRUB в режим редактирвоания нажатием клавиши E, после этого вы вручную сможете отредактировать параметры загрузки.
Дополнительно
C помощью GRUB и Gfxboot можно организовать и графическое загрузочное меню. Сделать это не сложно, к тому же существует много готовых тем.
- Восстановление GRUB Legacy после установки Windows
- Графическое меню для GRUB Legacy
Установить с помощью DisplayFusion
- Нажать на зелёную кнопку на сайте с надписью «Скачать установщик сейчас»;
- Запустить скаченный файл.exe и следовать инструкциям мастера, параллельно знакомясь с возможностями программы из подготовленной создателями презентации;
- Подождать окончания процесса и нажать на кнопку «Готово».
Чтобы установить на десктоп анимированное изображение, нужно:
1. Запустить DisplayFusion, пользуясь появившимся ярлыком или из меню «Пуск».
3. Разрешить утилите управлять фоном рабочего стола постановкой галочки возле соответствующей команды в верхней левой части окна.
3. Выбрать источник изображения, нажав на кнопку «Изменить» чуть ниже — это может быть «Сплошной цвет», папка «Мои изображения», сторонний URL-адрес или сайт изображений.
4. При выборе «Мои изображения» откроется проводник, через который необходимо найти на ПК желаемые гифки (можно выбрать несколько файлов), нажать кнопку «Открыть».
5.Среди списка доступных гифок, прописанных в левой части окна как адресный путь, следует выбрать одну, выделить её и нажать на «Применить» в правом нижнем углу.
6. Нажимаем по кнопке «Переменить» снизу в правом углу, чтобы картинка стала фоном рабочего стола.
В предыдущем окне выбора гифки можно настроить варианты её отображения — использовать на каждом мониторе отдельную анимацию, на всех сразу одну и ту же или только на одном рабочем столе.
Purging & Reinstalling GRUB 2
The difference between using the grub-install command and purging & reinstalling GRUB 2 is that the latter completely removes all GRUB 2 files and system settings. Purging GRUB 2 is also a method to reset all configuration settings to the default values on a working system. This may correct GRUB 2 failures due to corrupted files and improper configurations as well as for missing folders/files deleted by the user. The GRUB 2 packages removed and reinstalled via this procedure include grub-pc, grub-common and, in Grub 1.99 and later, grub-gfxpayload-lists.
During this operation the user will be temporarily left with no bootloader. Ensure you have a working Internet connection and access to the repositories before purging the GRUB 2 packages.
This procedure can be accomplished very simply via Boot-Repair, or via the terminal procedure below.
Remark: the Boot-Repair procedure will also remove custom files that may block the boot. It is also able to purge and reinstall GRUB2 for UEFI / LVM / RAID systems.
via Boot-Repair Graphical Tool
* Run Boot-Repair either from liveCD or from your installed session * Click «Advanced options» —> «GRUB options» tab * Tick the «Purge GRUB and reinstall it» option —> Apply
via Terminal Commands
The commands from a working Ubuntu installation or once within the ChRoot of a LiveCD are the same.
- If using the LiveCD, complete the steps up to and including the sudo chroot command (Step 9) in the previous section.
Run the following commands as root. If not in a ChRoot environment, preface each command with sudo.
- Update the repositories to get a list of the most recent packages available. Ensure you have a working Internet connection and access to the repositories. If you do not, STOP!
apt-get update
- The following command will completely remove grub-pc and grub-common. In GRUB 1.99 and later, grub-gfxpayload-lists will also be removed.
You will be warned you are removing the bootloader. TAB to OK and press ENTER.
apt-get purge grub-common
- Reinstall GRUB 2. When you run the following command:You will be given the opportunity to add kernel options. TAB to OK. You will be given the opportunity to select the devices/drives on which to install GRUB 2. Select the appropriate drive(s) with the SPACEBAR. Normally you do NOT want to select any partitions. TAB to OK after selecting the drive(s), then press ENTER.
apt-get install grub-pc
- If using the ChRoot procedure, Exit chroot then continue the ChRoot procedure at Step 13:
Manual configuration of core image for early boot
If you require a special keymap or other complex steps that GRUB is not able to configure automatically in order to make available to the GRUB environment, you can generate a core image yourself. On UEFI systems, the core image is the file that is loaded by the firmware on boot. Building your own core image will allow you to embed any modules required for very early boot, as well as a configuration script to bootstrap GRUB.
Firstly, taking as an example a requirement for the keymap embedded in early-boot in order to enter a password for an encrypted on a UEFI system:
Determine from the generated file what modules are required in order to mount the crypted . For instance, under your you should see lines similar to:
insmod diskfilter cryptodisk luks gcry_rijndael gcry_rijndael gcry_sha256 insmod ext2 cryptomount -u 1234abcdef1234abcdef1234abcdef set root='cryptouuid/1234abcdef1234abcdef1234abcdef'
Take note of all of those modules: they will need to be included in the core image. Now, create a tarball containing your keymap. This will be bundled in the core image as a memdisk:
# grub-kbdcomp -o dvorak.gkb dvorak # tar cf memdisk.tar dvorak.gkb
Now create a configuration file to be used in the GRUB core image. This is in the same format as your regular grub config, but need contain only a few lines to find and load the main config file on the partition:
early-grub.cfg
set root=(memdisk) set prefix=($root)/ terminal_input at_keyboard keymap /dvorak.gkb cryptomount -u 1234abcdef1234abcdef1234abcdef set root='cryptouuid/1234abcdef1234abcdef1234abcdef' set prefix=($root)/grub configfile grub.cfg
Finally, generate the core image, listing all of the modules determined to be required in the generated , along with any modules used in the script. The example above needs , , , and .
# grub-mkimage -c early-grub.cfg -o grubx64.efi -O x86_64-efi -m memdisk.tar diskfilter cryptodisk luks gcry_rijndael gcry_sha256 ext2 memdisk tar at_keyboard keylayouts configfile
The generated EFI core image can now be used in the same way as the image that is generated automatically by : place it in your EFI partition and enable it with , or configure as appropriate for your system firmware.
/etc/grub.d
Эта папка содержит в себе скрипты, которые используются для создания файла «grub.cfg». При обновлении GRUB они находят все установленные на компьютере системы и ядра и формируют в файле «grub.cfg» меню загрузки, которое мы и видим. Два основных из них:
- «10_linux» и «30_os-prober» отвечают за поиск Linux ядер и остальных ОС на других разделах соответственно.
- Файл «40_custom» позволяет добавлять свои пункты загрузки. Это может быть полезно, если вы, например, хотите добавить какие-то особые варианты загрузки системы.
Файл «40_custom» должен заканчиваться пустой строкой, иначе последний пункт не будет отображаться в меню!
Пример
Добавляем режим загрузки без графической заставки, с текстовым отображением процесса загрузки (verbose mode). Для этого мы немного отредактируем обычный пункт загрузки. допустим, он выглядит так (в «/boot/grub/grub.cfg«):
menuentry "Ubuntu, Linux 2.6.32-020632rc6-generic" { recordfail=1 if ; then save_env recordfail; fi set quiet=1 insmod ext2 set root=(hd0,5) search --no-floppy --fs-uuid --set 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 linux /boot/vmlinuz-2.6.32-020632rc6-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro quiet splash initrd /boot/initrd.img-2.6.32-020632rc6-generic }
Для того, чтобы сделать из этого verbose mode, нам нужно убрать опции quiet и splash и изменим название самого пункта. В итоге получаем:
echo "adding verbose mode" >&2 menuentry "Ubuntu, Linux 2.6.32.rc6 verbose-mode" { recordfail=1 if ; then save_env recordfail; fi set quiet=1 insmod ext2 set root=(hd0,5) search --no-floppy --fs-uuid --set 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 linux /boot/vmlinuz-2.6.32-020632rc6-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro initrd /boot/initrd.img-2.6.32-020632rc6-generic }
Все это и добавляем в «40_custom» в конец файла. Строка с echo не является обязательной она лишь будет сигнализировать нам о том, что наш пункт найден и добавлен при обновлении GRUB.
Combining the use of UUIDs and basic scripting
If you like the idea of using UUIDs to avoid unreliable BIOS mappings or are struggling with GRUB’s syntax, here is an example boot menu item that uses UUIDs and a small script to direct GRUB to the proper disk partitions for your system. All you need to do is replace the UUIDs in the sample with the correct UUIDs for your system. The example applies to a system with a boot and root partition. You will obviously need to modify the GRUB configuration if you have additional partitions:
menuentry "Arch Linux 64" { # Set the UUIDs for your boot and root partition respectively set the_boot_uuid=ece0448f-bb08-486d-9864-ac3271bd8d07 set the_root_uuid=c55da16f-e2af-4603-9e0b-03f5f565ec4a # (Note: This may be the same as your boot partition) # Get the boot/root devices and set them in the root and grub_boot variables search --fs-uuid $the_root_uuid --set=root search --fs-uuid $the_boot_uuid --set=grub_boot # Check to see if boot and root are equal. # If they are, then append /boot to $grub_boot (Since $grub_boot is actually the root partition) if ; then set grub_boot=($grub_boot)/boot else set grub_boot=($grub_boot) fi # $grub_boot now points to the correct location, so the following will properly find the kernel and initrd linux $grub_boot/vmlinuz-linux root=/dev/disk/by-uuid/$the_root_uuid ro initrd $grub_boot/initramfs-linux.img }
История
GRUB изначально был разработан Эрихом Болейном в рамках работы по загрузке операционной системы GNU / Hurd , разработанной Free Software Foundation . В 1999 году Гордон Мацигкейт и Ёсинори К. Окуджи сделали GRUB официальным программным пакетом проекта GNU и открыли процесс разработки для общественности. По состоянию на 2014 год большинство дистрибутивов Linux приняли GNU GRUB 2, а также другие системы, такие как Sony PlayStation 4 .
Развитие
GRUB версии 1 (также известной как «GRUB Legacy») больше не разрабатывается и постепенно прекращается. Разработчики GNU GRUB переключились на GRUB 2, полностью переписанный с целями, в том числе сделать GNU GRUB более чистым, надежным, портативным и мощным. GRUB 2 стартовал под названием PUPA . PUPA была поддержана Агентством продвижения информационных технологий (IPA) в Японии. PUPA была интегрирована в разработку GRUB 2 примерно в 2002 году, когда версия GRUB 0.9x была переименована в GRUB Legacy.
Некоторые из целей проекта GRUB 2 включают поддержку платформ , отличных от x86 , интернационализацию и локализацию , символы, отличные от ASCII, динамические модули, управление памятью , мини-язык сценариев , перенос специфичного для платформы (x86) кода на специфичные для платформы модули, и объектно-ориентированный фреймворк. GNU GRUB версии 2.00 был официально выпущен 26 июня 2012 года.
Три наиболее широко используемых дистрибутива Linux используют GRUB 2 в качестве основного загрузчика. Ubuntu принял его в качестве загрузчика по умолчанию в своей версии 9.10 в октябре 2009 года. Fedora последовала его примеру с Fedora 16, выпущенной в ноябре 2011 года. OpenSUSE принял GRUB 2 в качестве загрузчика по умолчанию в своем выпуске 12.2 от сентября 2012 года. Solaris также принял GRUB 2 на платформа x86 в версии Solaris 11.1.
В конце 2015 года был обнаружен и быстро исправлен эксплойт, заключающийся в 28-кратном нажатии на клавишу Backspace для обхода пароля входа.
Варианты
GNU GRUB — бесплатное программное обеспечение с открытым исходным кодом , поэтому было создано несколько вариантов. Некоторые примечательные из них, которые не были объединены в основную ветку GRUB:
- OpenSolaris включает модифицированный GRUB Legacy, который поддерживает метки дисков BSD , автоматический выбор 64-битного ядра и загрузку из ZFS (со сжатием и несколькими средами загрузки).
- В Google Summer of Code 2008 был проект по поддержке устаревшей версии GRUB для загрузки с разделов, отформатированных в ext4 .
- Проект Syllable сделал модифицированную версию GRUB для загрузки системы из файловой системы AtheOS .
- TrustedGRUB расширяет GRUB, реализуя проверку целостности системы и безопасности процесса загрузки с помощью Trusted Platform Module (TPM).
- Набор Intel BIOS Implementation Test Suite (BITS) предоставляет среду GRUB для тестирования BIOS и, в частности, их инициализации процессоров, оборудования и технологий Intel. BITS поддерживает создание сценариев через Python и включает API-интерфейсы Python для доступа к различным низкоуровневым функциям аппаратной платформы, включая ACPI, регистры процессора и набора микросхем, PCI и PCI Express.
- GRUB4DOS — это уже не существующая унаследованная ветвь GRUB, которая улучшает процесс установки в DOS и Microsoft Windows , помещая все, кроме конфигурации GRLDR, в один файл образа. Его можно загрузить с помощью диспетчера загрузки Windows .