Grub2 grub cmdline linux

Sysadminium

В этой статье рассмотрим подробнее самый популярный загрузчик для операционных систем Linux, а именно GRUB 2.

GRUB 2

GRUB 2 (GRand Unified Bootloader / большой единый загрузчик) — это кроссплатформенный загрузчик операционных систем.

При старте системы, когда запускается GRUB 2 вы видите следующее меню:

GRUB 2 для Debian 11

Хотя, по умолчанию в Ubuntu 22.04 вы не увидите это меню, так как система загружается сразу, не показывая его в отличие от Debian 11. А в Debian 11 по умолчанию это меню появляется на 5 секунд.

В обоих системах управление осуществляется следующими клавишами:

  • Стрелки «вверх/вниз» — переход по пунктам меню;
  • «Enter» — загрузка выбранного пункта;
  • «e» — редактирование выбранного пункта;
  • «c» — запуск командной строки.

Настройка GRUB 2

При загрузки GRUB 2 читает конфигурационный файл /boot/grub/grub.cfg, но редактировать вручную его не нужно, об этом даже предупреждают в начале этого файла (на английском):

alex@deb-11:~$ head /boot/grub/grub.cfg # # DO NOT EDIT THIS FILE # # It is automatically generated by grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then set have_grubenv=true

Выше я использовал команду head, чтобы посмотреть первые строки из файла /boot/grub/grub.cfg. А вообще, работать с текстовыми файлами мы научимся чуть позже в этом курсе.

Основной конфигурационный файл, который нужно редактировать для настройки этого загрузчика, это /etc/default/grub.

Для Ubuntu 22.04 и Debian 11 настройки по умолчанию немного отличаются. Ниже я вывожу содержимое файлов без комментариев.

Для Debian 11:

alex@deb:~$ cat /etc/default/grub | grep -v '^#' GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet" GRUB_CMDLINE_LINUX=""

Для Ubuntu 22.04:

alex@ubu:~$ cat /etc/default/grub | grep -v '^#' GRUB_DEFAULT=0 GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=0 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity" GRUB_CMDLINE_LINUX=""

Параметры конфигурации

Давайте рассмотрим какими параметрами можно настроить наш загрузчик:

  • GRUB_DEFAULT — отвечает за номер строки, которая будет загружена по умолчанию. Отсчет начинается с нуля, то-есть 0 — это первая строчка меню, 1 — это вторая строчка меню и так далее.
  • GRUB_TIMEOUT — отвечает за время (в секундах), после истечения которого, если ничего не нажать, загрузится строка под номером указанным в GRUB_DEFAULT. Чтобы меню не появлялось следует указать 0, а чтобы выключить таймер то -1.
  • GRUB_TIMEOUT_STYLE — с помощью этого параметра можно скрыть или отобразить меню:
    • hidden — меню будет скрыто в течении GRUB_TIMEOUT, а затем начнется загрузка системы;
    • menu — меню будет отображаться, тоже самое будет если полностью удалить этот параметр.
    • quiet — означает, не выводить сообщения во время загрузки;
    • splash — вывести заставку загрузки;
    • selinux=0 — выключить selinux;
    • rootfstype=ext4 — можем указать тип файловой системы, чтобы он не вычислялся.
    • console — отключает графический терминал, при этом меню будет показано в текстовом виде;
    • gfxterm — включает графический терминал;
    GRUB_INIT_TUNE="1750 523 1 392 1 523 1 659 1 784 1 1047 1 784 1 415 1 523 1 622 1 831 1 622 1 831 1 1046 1 1244 1 1661 1 1244 1 466 1 587 1 698 1 932 1 1195 1 1397 1 1865 1 1397 1"

    После изменения настроек GRUB 2 нужно всегда выполнять команду update-grub2 для применения настроек. Но выполнять её нужно с правами администратора, поэтому в Debian переключаемся на root пользователя:

    alex@deb:~$ su - Пароль: root@deb:~# update-grub2 Generating grub configuration file . Found linux image: /boot/vmlinuz-5.10.0-13-amd64 Found initrd image: /boot/initrd.img-5.10.0-13-amd64 Found linux image: /boot/vmlinuz-5.10.0-10-amd64 Found initrd image: /boot/initrd.img-5.10.0-10-amd64 done

    А в Ubuntu можем это выполнить с помощью команды sudo:

    Своя картинка в меню

    На задний фон меню загрузки можно поместить какую-нибудь картинку. Для этого нужно положить файл картинки в /boot/grub и выполнить команду update-grub2. Файл должен быть обязательно в формате .png.

    Вот пример для Ubuntu с использованием sudo, а в Debian вам нужно будет переключиться на пользователя root:

    alex@ubu:~$ sudo cp ./пингвин.png /boot/grub/ alex@ubu:~$ sudo update-grub2 Sourcing file `/etc/default/grub' Sourcing file `/etc/default/grub.d/init-select.cfg' Generating grub configuration file . Found background image: пингвин.png Found linux image: /boot/vmlinuz-5.15.0-30-generic Found initrd image: /boot/initrd.img-5.15.0-30-generic Warning: os-prober will not be executed to detect other bootable partitions. Systems on them will not be added to the GRUB boot configuration. Check GRUB_DISABLE_OS_PROBER documentation entry. done

    И после перезагрузки системы увидим нашу картинку (для перезагрузки используйте команду sudo reboot):

    Добавление параметров ядра в меню GRUB 2

    Добавлять параметры ядра можно не только редактируя файл /etc/default/grub, но и в самом меню. Для этого нужно отредактировать выбранный пункт меню нажав клавишу «e», после чего у вас откроется вот такой редактор:

    GRUB 2. Добавление параметров загрузки ядра

    Опции загрузки добавляются в строке начинающейся с linux, это строка выделена на рисунке выше.

    Редактируя здесь параметры ядра можно например сбросить пароль root пользователя в системе. Для этого нужно ro изменить на rw, и дописать init=/bin/bash:

    GRUB 2. Добавление параметров загрузки ядра

    Дальше нажимаем Ctrl+x или F10 для загрузки и попадаем в систему под пользователем root, без ввода пароля.

    Осталось только поменять пароль и перезагрузить сервер.

    Командная строка GRUB 2

    Чтобы попасть в командную строку нажимаем клавишу «c». Рассмотрим пока только две команды:

    GRUB 2. Работа с командной строкой

    • ls — позволяет просматривать файлы на файловой системе, а также блочные устройства;
    • search — позволяет производить поиск.
    • Команда ls без параметров покажет нам список разделов;
    • С помощью команды search -f /путь_к_файлу можем найти раздел, на котором лежит определённый файл;
    • Если к команде ls добавить раздел ls (hd0,gpt2) , то получим информацию о нём;
    • А если после раздела поставить слеш ls (hd0,gpt2)/ , то увидим содержимое этого раздела;
    • Ну и в конце концов можем посмотреть содержимое определённого каталога ls (hd0,gpt2)/boot/grub/ ;
    • Если вы хотите перезагрузить систему, то выполните reboot .

    Меню GRUB 2 с несколькими системами

    Если на компьютере установлено несколько систем, то меню GRUB 2 выглядит следующим образом:

    Меню GRUB 2 с несколькими системами

    Как установить 2-е системы на один компьютер и при этом использовать загрузчик GRUB 2 мы разберём в следующей статье.

    Каталог со скриптами (/etc/grub.d/)

    В каталоге /etc/grub.d/ находятся специальные скрипты написанные на языке сценариев «sh«. Они выполняются при обновлении GRUB 2, то есть когда мы выполняем команду «update-grub2«.

    alex@deb:~$ ls /etc/grub.d/ 00_header 05_debian_theme 10_linux 20_linux_xen 30_os-prober 30_uefi-firmware 40_custom 41_custom README
    alex@ubu:~$ ls /etc/grub.d/ 00_header 05_debian_theme 10_linux 10_linux_zfs 20_linux_xen 30_os-prober 30_uefi-firmware 35_fwupd 40_custom 41_custom README

    Рассмотрим предназначения некоторых из них:

    • «10_linux» — отвечает за поиск ядер linux;
    • «30_os-prober» — отвечает за поиск других ос;
    • «40_custom» — позволяет добавлять свои пункты загрузки.

    Источник

    Читайте также:  Возможности настройки ос linux
Оцените статью
Adblock
detector