Поблагодари автора прямо сейчас на странице Спасибо!

Grub2

Материал из Пингвиньи радостей

Перейти к: навигация, поиск

Статья о загрузчике операционных сред GRUB2

Grub2 это универсальный загрузчик операционных сред.

Grub2 может быть легко установлен и на floppy-, usb-, cd/dvd-, hdd диски, а также использоваться в качестве PXE-загрузчика.
В операционной системе Debian от версии Squeeze и выше Grub2 устанавливается загрузчиком по умолчанию.

Сайт проекта www.gnu.org/software/grub/.


Установка в linux

Пакет присутствует в хранилище пакетов debian.
Для установки пакета

После установки пакет готов к работе.

  Замечание:
  Если ранее была установлена младшая версия Grub 1xx , то в целях обеспечения преемственности
  прежний файл конфигурации будет сохранён и организована загрузка по цепочке.
  Впоследствии от прежнего файла - файла конфигурации Grub 1xx и возникшей цепочки можно
  будет отказаться, например с помощью команды
     # upgrade-from-grub-legacy

Некоторые часто используемые команды

  # sudo update-grub2                     - обновление файла конфигурации

Сборка файла конфигурации

Для формирования меню Grub2 использует файл конфигурации /etc/boot/grub.cfg. В Debian данный файл формируется автоматически скриптом сборки update-grub2 из правил-скриптов, расположенных в каталоге /etc/grub.d/. При выполнении скрипта считываются файлы из каталога /etc/grub.d/, файл /etc/default/grub и создаётся новый файл конфигурации /etc/boot/grub.cfg. Правила сборки например предусматривают автоматический поиск установленных ядер Linux-систем, других операционных сред и добавление их в пункты меню.

  Замечание
  Существуют и графические утилиты управления меню загрузки Grub2, например Startupmanager.
  Startupmanager также позволяет осуществить и сборку файла конфигурации, и установку некоторых параметров загрузки.

Параметры файла /etc/default/grub

  GRUB_DEFAULT=0                        - пункт меню по умолчанию, если указано saved то Grub2 будет сохранять выбранную позицию
  GRUB_TIMEOUT=5                        - указание времени задержки до старта пункта по умолчанию в сек
  GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
  GRUB_CMDLINE_LINUX_DEFAULT="quiet"
  GRUB_CMDLINE_LINUX=""                 - параметры загрузки ядра
  #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"      - разрешение фильтрации плохой памяти,
                                          параметр работает с любым ядром получающем информацию о памяти от Grub
  GRUB_TERMINAL=console                 - запрет графического терминала = переключение в текст
  GRUB_GFXMODE=640x480                  - разрешение графического терминала, допустимые режимы могут быть получены командой vbeinfo
  GRUB_DISABLE_LINUX_UUID=true          - запрет передаче ядру Linux параметра корневой системы в виде "root=UUID=xxx"
  GRUB_DISABLE_RECOVERY="true"          - запрет создания в меню Grub2 пункта с режимом восстановления
  GRUB_INIT_TUNE="480 440 1"            - указание параметров звукового сигнала при старте Grub2
  WALLPAPER="/boot/grub/splash.png"     - указание фоновой картинки, поддерживаются только png, jpeg (jpg), tga
  COLOR_NORMAL="black/black"            - указание цвета меню для не выделенного пункта меню
  COLOR_HIGHLIGHT="magenta/black"       - указание цвета меню для выделенного пункта меню

Назначение правил-скриптов сборки /etc/grub.d/

  00_header                             - скрипт считывания установки GRUB из /etc/default/grub
  05_debian_theme                       - скрипт темы GRUB, определяет фон, цвета и прочее
  10_linux                              - скрипт определения конфигурации меню для установленного дистрибутива
  20_memtest86+                         - скрипт добавления пункта меню для утилиты тестирования памяти memtest86, если она установлена
  30_os-prober                          - скрипт поиска на жестких дисках других операционных систем и добавления их в меню
  40_custom                             - шаблон, для создания дополнительных пользовательских пунктов меню
  Замечание
  Запуск скриптов, а соответственно и появление пунктов в меню GRUB, происходит в порядки их нумерации.

Ссылки

Команды консоли

Grub2 позволяет осуществить переход в командую консоль управления. Для этого в момент отображения меню загрузки следует нажать клавишу C.

В консоли управления доступны команды

  > ls                      - отображение списка жестких дисков и  разделов
  > ls (hd0,1)              - отображение информацию об указанном разделе, например
                           тип файловой системы, метку, UUID и дату последнего изменения данных
  > ls /boot/grub           - отображение содержимого папки
  > cat /путь/имя_файла     - вывод содержимого указанного файла
  > linux файл_ядра параметры   - загрузка ядра linux с указанными параметрами
  > initrd файл                 - загрузка образа стартовой файловой системы initrd
  > chainloader +1          - передача управления загрузкой по цепочке другому MBR с установленного командой root раздела
  > chainloader /путь/имя_файла - передача управления загрузкой по цепочке другому загрузчику
  > root                    - вывод информации о текущем корневом карзделе
  > root (hd0,1)            - установка корневого раздела
                            Внимание! Во избежание несовместимостей более правильным является использование команды «set root» 
  > set переменная=значение     - задание значений переменных например
  > set root=(hd0,1)            - (пример) установка корневым разделом, второго раздела первого жёсткого диска
  > set color_normal=magenta/green        - установка цвета для обычного пункта меню (и текста в консоли) 
  > set color_highlight=light-blue/black  - установка цвета для выделенного пункта меню
  > search                  - поиск раздела по UUID, метке или заданному файлу.
   Имеет следующие ключи:
   -u (или –fs-uuid)      - поиск раздела по UUID
   -l (или –label)        - поиск по метке раздела
   -f (или –file)         - поиск по указанному файлу
   -n (или –no-floppy)    - не проверять флоппи-дисковод 
   -s (или –set)          - установить найденный раздел в качестве значения заданной переменной
  > lsfonts                 - отображение списка загруженных в настоящий момент шрифтов
  > help                    - вывод списка доступных команд
    help l                  - вывод справки по всем командам, начинающимся на «l»
    help search             - вывод справки о команде «search»
  > halt                    - выключение питания компьютера
  > reboot                  - перезагрузка компьютера
  > background_image /путь/имя_файла      - изменение фонового изображения в текущем сеансе
     background_image позволяет изменить изображение "на лету" - избегая перезагрузки.
     В сочетании с установкой цветов командой set позволяет подобрать подходящий вариант
     оформления в интерактивном режиме.
    background_image        - (при использовании без параметров) сброс текущего фонового изображениия
  > terminal_output.console - переключение на черно-белую цветовую гамму.

Ссылки:

Создание собственного пункта меню

Grub2 позволяет добавлять собственные пункты в меню загрузки.

Для добавления собственного пункта меню загрузки, например

  menuentry "etherboot loader" {    # пункт меню для добавления загрузчика PXE
     set root=(hd0,1)
     linux16 /boot/eb-net.lil
  }

Ссылки:

Изменение пункта загрузки по умолчанию

Grub2 позволяет изменять пункт меню загрузки по умолчанию, а также осуществлять автосохранение осуществленного выбора.

Для постоянного изменения изменения пункта загрузки по умолчанию

  • в файле параметров сборки /etc/default/grub изменяется строка
 GRUB_DEFAULT=0
 например на
 GRUB_DEFAULT=2

Создание GRUB PXE-загрузчика

Grub2 может быть трансформирован и использован для осуществления загрузки компьютера по сети по PXE-протоколу вместо обычно применяемого в этих случаях PXELinux.

Для создания Grub2 PXE-загрузчика

  • выполняются команды
  # grub-mkimage --output=core.img --format=i386-pc --prefix="(pxe)/grub-loader" pxe pxecmd   - создание загрузчика grub2pxe
  # cat /usr/lib/grub/i386-pc/pxeboot.img core.img > grub2pxe                                 - добавление к grub2pxe PXE-модуля
  или
  # grub-mkimage -d /usr/lib/grub/i386-pc/ -p "(pxe)/" -O i386-pc-pxe -o /<ПУТЬ>/grub2.pxe pxe pxecmd

Для использования Grub2 PXE-загрузчика

  • загрузчик вместе с необходимыми файлами копируется в корневой каталог TFTP сервера <TFTPROOT>
  # cp grub2pxe <TFTPROOT>                     - копирование самого загрузчика
  # cp /boot/* <TFTPROOT>/grub-loader          - копирование необходимых для загрузки модулей
  group   {
     filename  "grub2pxe";
     #option pxelinux.configfile    "/grub-loader/grub.cfg";                - файл конфигурации для изменения порядка загрузки
     option root-path        	"<IP-SERVER>:/tftpboot/grub-loader";
     ...
  }

Ссылки:

Загрузка из ISO образов

Grub2 умеет осуществлять подключение/монтирование ISO-образа и передавать загрузку на находящиеся в нём ядра.

  Внимание!
  Grub2 не передаёт управление загрузчику ISO-образа, а просто распаковывает его на лету.
  В связи с этим формирование меню и установка параметров загружаемого ядра должны быть произведены самостоятельно.

Для загрузки из ISO образов в Grub2

  • ISO-образ размещается в доступном для загрузчика месте, например в каталоге /boot на жёстком диске
  • в файл правил /etc/grub.d/40_custom добавляются например строки
  menuentry "Gparted live" {                          # на примере Gparted Live версии 0.18.0-1-i486
     set root=(hd0,1)
     set isofile="/boot/gparted-live-0.18.0-1-i486.iso"
     loopback loop $isofile
     linux (loop)/live/vmlinuz boot=live config union=aufs noswap noprompt vga=788 ip=dhcp toram=/live/filesystem.squashfs findiso=$isofile
     initrd (loop)/live/initrd.img
  }

Ссылки:

Создание тем загрузки

Grub2 поддерживает установку пользовательских тем загрузки. В качестве фона для тем могут быть использованы графические файлы расширений jpg/jpeg, png, tga.

  Замечание:
  Для добавления дополнительных тем загрузки оптимизированных для Grub2 в Debian может быть использован пакет
  grub2-splashimages. Установленные темы размещаются в папку /usr/share/images/grub/.

Графический файл для использования в качестве фона

  • может находиться в каталоге /boot/grub/
  • может быть указан в виде переменной WALLPAPER
  • может быть указан прямо в файле /etc/grub.d/05_debian_theme

Для внесения изменений в файла конфигурации /boot/grub/grub.cfg

  • выполняется команда
  # update-grub2
  Замечание:
  Просмотр наличия графических файлов осуществляется в указанном выше порядке.
  В качестве фона Добавляется первый из найденных.

Для изменения темы загрузки путём размещения файла в каталоге /boot/grub/

Для изменения темы загрузки путём изменения переменной WALLPAPER

  WALLPAPER="/usr/share/wallpapers/At_Night/contents/screenshot.png"
  строка добавляется перед командами set_background_image  и set_default_theme 

Для изменения темы загрузки путём изменения файла /etc/grub.d/05_debian_theme

  • либо изменяется ссылка /usr/share/images/desktop-base/desktop-grub.png или /etc/alternatives/desktop-grub на нужный файл фона в формате png
  • либо изменяется имя файла (расширение) путём редактирования строки в файле /etc/grub.d/05_debian_theme
  set_background_image "/usr/share/images/desktop-base/desktop-grub.png" ||

Ссылки:

Восстановление Grub2

Повреждение загрузчика Grub2 и прекращение с его помощью процесса загрузки может быть связано с установкой / попыткой установки другого загрузчика, например Syslinux или при установке ОС семейства Windows, либо при изменении структуры жёсткого диска, например именования раздела на котором установлен загрузчик, либо в иных случаях. В связи с этим может возникнуть потребность восстановления загрузчика Grub2.
Для Grub2 разрушение может выглядеть как полное или частичное с различием между ними в том, что старт загрузчика не происходит вовсе или он запускается, но в Rescue mode.

  Замечание:
  В целях настоящей статьи под полным разрушением загрузки понимается разрушении MBR от Grub2.
  Если предположить отсутствии на носителе информации и папки с файлом конфигурации и модулями Grub2, то
  следует считать, что Grub2 не установлен и требуется его первичная установка.

При появлении экрана Rescue mode Grub2 существует возможность старта системы и последующего восстановления загрузчика без привлечения внешних ресурсов. При полном разрушении загрузчика (разрушении MBR) на носителе информации остаются файл конфигурации и модули Grub2, но для восстановления требуется предварительная загрузка с внешнего "источника".
Восстановления Grub2 при полном разрушении может быть осуществлено двумя способами:

  • Первый способ заключается в загрузке "внешней" операционной среды с установленным загрузчиком Grub2, например с CD/DVD привода, USB-флешки или по сети через PXE/Etherboot, и последующей его "установкой" на целевой жёсткий диск.
  • Второй способ использует возможность загрузки целевой операционной системе с установленным загрузчиком Grub2 минуя разрушенный MBR с последующим восстановлением Grub2 из "родной" среды.

Для восстановления Grub2 в Rescue mode

  • в окне Rescue mode Grub2 выполняются команды
  # ls (hd0,1)/                        - устанавливается раздел с установленным загрузчиком
  # set root=(hd0,1)                   - установка пути корневой файловой системы
  # set prefix=(hd0,1)/boot/grub       - установка пути к модулям загрузчика
  # insmod /boot/grub/linux.mod        - загрузка модуля загрузки linux
  # linux /vmlinuz root=/dev/sda1 ro   - установка расположения модуля ядра linux
  # initrd /initrd.img                 - установка стартовой файловой системы ядра linux
  # boot                               - загрузка установленной linux-системы
  • после загрузки операционной среды осуществляется восстановление Grub2, например командой
  # dpkg-reconfigure grub-pc

Для восстановления Grub2 при разрушении MBR из внешней "живой" (Live) системы

  • запускается "живая" (Live CD) система с внешнего носителя
  Замечание:
  В качестве загружаемой "живой" операционной среды могут быть использованы различные Linux Live системы,
  например такие как Debian Live, Parted Magic, SystemRescueCD, Rescatux, а также 
  операционная система Debian запускаемая по сети, например с сервера терминалов NFS.
  • устанавливается загрузчик с помощью команд
  # su                                           - получение прав суперпользователя
  # mount        /dev/sda1 /mnt                  - подключение носителя с разрушенным Grub
  # mount --bind /dev      /mnt/dev              - подключение устройств для выполнения команды chroot
  # mount --bind /proc     /mnt/proc
  # mount --bind /sys      /mnt/sys
  # chroot /mnt                                  - перехода в chroot-режим
  $ grub-install --recheck --no-floppy /dev/sda  - установка Grub2
  $ exit                                         - выход из chroot-режима
  # umount -l /mnt/dev                           - отмонтирование служебных папок 
  # umount -l /mnt/proc
  # umount -l /mnt/sys
  # umount -l /mnt                               - отмонтирование носителя, Grub2 установлен
  Замечание:
  Существует и возможность осуществить проверку загрузочного меню Grub2 без перезапуска компьютера.
  Например с помощью команд
  # sync
  # echo 3 > /proc/sys/vm/drop_caches
  # qemu -hda /dev/sda

Для восстановления Grub2 при разрушении MBR с загрузкой минуя носитель

  • запускается целевая операционная система минуя разрушенный MBR
  Замечание:
  Для загрузки операционной системы с установленным загрузчиком Grub2 минуя разрушенный MBR
  могут быть использованы такие средства как SuperGRUB2 disk, специальные ядра altker32/altker64 распространяемые
  на LiveCD диске проекта Systemrescue, а также ручная загрузка из любого загрузчика, позволяющего осуществлять это
  вручную, например те же Grub2 или Syslinux запускаемые с CD/DVD привода или флешки.
  • устанавливается загрузчик с помощью команд
  # su                                           - получение прав суперпользователя
  # grub-install /dev/sda                        - или
  # grub-install --recheck --no-floppy --root-directory=/ /dev/sda
                                                 - установка Grub2 на жёсткий диск /dev/sda
                                                 с (во)созданием каталога /boot/grub
                                                 в точке подключения носителя /

Ссылки:

Установка Grub2 в Windows 7

Grub2 может быть установлен в операционных системах Windows. Особенно хорошо он "вписывается" в Windows 7' в связи с тем, что эта ОС выделяет под загрузку специальный скрытый раздел.

Для установки в Grub2 в Windows 7

  • запускается современный LiveCD диск с установленной Linux системой и последней версий загрузчика, например Parted Magic
  • монтируется раздел жёсткого диска с установленной Windows 7
  # mount -t ntfs /dev/sda1 /media/sda1
  # mount -t ntfs /dev/sda2 /media/sda2
  • перемещаются загрузочные файлы Windows 7 - bootmgr, bootsect.bak и каталог Boot/ - со скрытого раздела жёсткого диска (/dev/sda1) на системный (/dev/sda2)
  • устанавливается Grub2 на первый (скрытый) раздел жёсткого диска и в MBR
  # grub-install --modules=ntfs --recheck --no-floppy --root-directory=/media/sda1 /dev/sda
  на устройстве /media/sda1 появляются файлы Grub2 в каталоге /media/sda1/boot
  menuentry "Windows 7" {
     set root=(hd0,2)
     chainloader +1
  }

Теперь при перезапуске появится меню Grub2 с пунктом выбора "по цепочке" загрузчика Windows 7.

Ссылки:

Запуск других загрузчиков из Grub2

Grub2 поддерживает загрузку "по цепочке" ОТ СЕБЯ на множество других загрузчиков напрямую или через по-цепочке на MBR разделы, на котором они установлены.

Примеры организации запуска других загрузчиков приведены в статьях

Запоминание выбранного пункта меню

Grub2 умеет запоминать пользовательский выбор пункта меню. Это означает, что при последующих стартах загрузчика, пунктом по умолчанию будет установлен последний выбранный вручную.

Для добавления запоминания выбранного пункта Grub2

  • в файл конфигурации /etc/default/grub добавляются строки
  GRUB_SAVEDEFAULT=true
  GRUB_DEFAULT=saved
  Замечание:
  При добавлении пунктов меню вручную с использованием файла /etc/grub.d/40_custom
  и желании запоминать их выбор тоже, следует в необходимые секции меню
  добавить строку savedefault, например
  menuentry "etherboot loader" {
     savedefault
     set root=(hd0,1)
     linux16  /boot/ipxe.lkrn
  }
  • осуществляется пересборка файла конфигурации /boot/grub/grub.cfg
  # update-grub

Ссылки:

Литература

Справочная информация

  • 01.10.2009: Grub2: создание статьи на примере для debian lenny amd64
  • 11.10.2010: Grub2: последняя правка - добавлено описание изменения тем загрузки
  • 20.01.2011: Grub2: правка внешнего вида, расширено и актуализировано описание установки собственных тем загрузки
  • 12.10.2011: Grub2: добавлено описание установки в Windows 7
  • 23.03.2014: Grub2: добавлено описание Загрузки из ISO образов
  • 06.04.2014: Grub2: добавлено описание Параметров файла /etc/default/grub
  • 31.01.2015: Grub2: добавлено описание Восстановления Grub2
  • 17.02.2016: Grub2: добавлено описание Запоминание выбранного пункта меню
  • 22.02.2016: Grub2: добавлено описание Команд консоли
Личные инструменты