Введение


На компьютере загружается Linux, который когда-то был туда установлен. Тогда структура жесткого диска претерпела ряд изменений: были созданы разделы, а также установлен загрузчик. Судя по большинству дистрибутивов, самым популярным в мире Linux является загрузчик GRUB.

Действие этого загрузчика операционной системы происходит с точки зрения пользователя так: пользователь после включения компьютера видит список операционных систем, которые установлены на его компьютер. По оформлению этот список бывает совершенно разным: черно-белым, разноцветным, с пингвинами.

В конце концов по выбору пользователя загружается операционная система.

В центре внимания этот статьи — графической режим GRUB с анимированными пингвинами, которых программист Steffen Winterfeldt заставил ходить взад-вперед и выдавать еще несколько других номеров. Прежде всего — пингвины, а за этим — утилита gfxboot для изменений и тестов конфигурации графического загрузчика.

Еще в статье много информации по конкретным дистрибутивам (Mageia, openSUSE, Ubuntu) с неодинаковыми методами изменения графического загрузчика. Отдельная тема — графический загрузочный экран на основе grub4dos.

Благодарность


Хочу выразить благодарность А.Федорчуку за статью о виртуальной машине VirtualBox и образах операционных систем с сайта osboxes.org, информация из которой очень помогла при написании этой статьи.

Пингвины и gfxboot


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

Физически такая заставка представляет собой cpio-архив, как правило это /boot/message. Вы можете, в принципе, просмотреть этот архив, распаковать его в текущую директорию и переупаковать. Но для того, чтобы облегчить себе жизнь, есть утилита gfxboot.

openSUSE


Когда на компьютере установлен GRUB2, настоящей системой испытаний будет возврат к GRUB, когда у осуществляющего его существует недостаток знаний. Далее следует блок-инструкция по переходу к использованию в качестве загрузчика GRUB.

1. Установка GRUB на жесткий диск с помощью команды

sudo zypper in grub

оканчивается сообщением: grub is not the active boot loader.

2. Делаем GRUB активным загрузчиком с помощью оболочки GRUB так, как это отражено на скриншоте. В нем принят допуск, что GRUB установлен на первый раздел первого жесткого диска (hd0,0).


Установка кода GRUB в MBR

В выдаче оболочки GRUB в ответ на последнюю команду содержится имя файла /boot/grub/menu.lst.

3. Создадим и отредактируем этот файл с помощью команды

sudo vi /boot/grub/menu.lst

Он будет содержать конфигурацию загрузочного меню, аналог конфигурации загрузочного меню, содержащейся в файле /boot/grub2/grub.cfg. Их синтаксисы по существу родствены друг другу. С некоторыми изменениями текст конфигурационного файла GRUB2 служит основой для текста конфигурационного файла GRUB.

Фрагмент файла /boot/grub2/grub.cfg

menuentry 'openSUSE' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-99d4f445-3170-4ced-a612-fe255dc11b3c' {
 load_video
 set gfxpayload=keep
 insmod gzio
 insmod part_msdos
 insmod ext2
 set root='hd0,msdos1'
 if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  99d4f445-3170-4ced-a612-fe255dc11b3c
 else
  search --no-floppy --fs-uuid --set=root 99d4f445-3170-4ced-a612-fe255dc11b3c
 fi
 echo    'Loading Linux 3.16.6-2-default ...'
 linux   /boot/vmlinuz-3.16.6-2-default root=UUID=99d4f445-3170-4ced-a612-fe255dc11b3c   quiet resume=/dev/sda2 splash=silent quiet showopts
 echo    'Loading initial ramdisk ...'
 initrd  /boot/initrd-3.16.6-1-default
}

и соответствующий ему фрагмент файла /boot/grub/menu.lst

title openSUSE
 root (hd0,0)
 kernel /boot/vmlinuz-3.16.6-2-default root=UUID=99d4f445-3170-4ced-a612-fe255dc11b3c   quiet resume=/dev/sda2 splash=silent quiet showopts
 initrd /boot/initrd-3.16.6-1-default

4. Для включения графического режима GRUB с анимированными пингвинами, с помощью текстового редактора vi добавим в начало файла /boot/grub/menu.lst строку

gfxmenu (hd0,0)/boot/message

и сделаем вероятность появления пингвинов равной 100% с помощью команды

sudo gfxboot --change-config penguin=100


Пингвины

Mageia


Когда на компьютере установлен GRUB, меню с пингвинами делается по-другому. Далее следует соответствующая инструкция.

1. Начало инструкции — на скриншоте.


Установка gfxboot и gfxboot-themes

2. В файле /boot/grub/menu.lst вместо строки

gfxmenu (hd0,0)/boot/gfxmenu

вводим строку

gfxmenu (hd0,0)/boot/message

выбираем и настраиваем тему графического загрузочного экрана

gfxboot --new-theme openSUSE
gfxboot --change-config penguin=100

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

exit


Пингвины

Ubuntu


В этой системе есть gfxboot, gfxboot-themes, grub, но в последнем не работает графический загрузочный экран. Вместо его предлагаются статичные изображения, отображаемые в загрузочном меню с помощью параметра splashimage, указываемого в конфигурационном файле GRUB. В таком случае можно использовать загрузчик grub4dos.

Grub4dos на загрузочной флешке и жестком диске


Границы применения grub4dos шире установки на флеш-накопители, но это, наверное, является главным. Ниже на листинге примерная процедура или схема его установки.

Установка grub4dos на флеш-накопитель


wget https://downloads.sourceforge.net/project/grub4dos/GRUB4DOS/grub4dos%200.4.4/grub4dos-0.4.4.zip
unzip grub4dos-0.4.4.zip
cd grub4dos-0.4.4
sudo ./bootlace.com /dev/sdb

После копирования содержимого каталога grub4dos на флеш-накопитель и загрузки с его помощью компьютера, видим разноцветное загрузочное меню, как на скриншоте.


Загрузочное меню grub4dos

После копирования туда же файла /boot/message, полученного способом, описанным выше, и замены содержимого файла menu.lst другим, содержащим строку

gfxmenu /message

получаем все тех же пингвинов.

На жестком диске grub4dos можно вызвать из GRUB, введя в его конфигурационный файл описание соответствующего пункта меню:

default 0
timeout 0
title grub4dos
 kernel (hd0,5)/grub.exe --config-file="map (rd) (fd0); map --hook; chainloader (fd0)+1; rootnoverify (fd0)"
 initrd (hd0,5)/myfloppy.img

Это действует, если на шестом разделе жесткого диска с fat12 или fat32 имеются файлы grub.exe и myfloppy.img, последний из которых — файл-образ загрузочной дискеты. В нем объединены файлы из архива grub4dos-0.4.4.zip. Далее следует несколько команд, выполнение которых провоцирует добавление на диск необходимого для загрузки grub4dos файла myfloppy.img

sudo mkfs.msdos -С myfloppy.img 1440
sudo ./bootlace.com --floppy myfloppy.img
mkdir dos
sudo mount -o loop myfloppy.img dos
sudo cp grub4dos-0.4.4/* dos
sudo vi dos/menu.lst

Осталось добавить в каталог к файлам grub.exe и myfloppy.img файл message, заменить содержимое файла dos/menu.lst на что-то подобное тому, что воспроизведено на следующем листинге и отмонтировать файл-образ myfloppy.img с помощью команды

sudo unmount /dev/loop0

чтобы получить результат, неоднократно ранее полученный в этой статье.

Содержимое конфигурационного файла menu.lst для grub4dos

default 0
timeout 3
gfxmenu /message
title Ubuntu
 root (hd0,0)
 chainloader +1

title Reboot
 reboot
Поделиться с друзьями
-->

Комментарии (4)


  1. rPman
    26.02.2017 11:07

    самым популярным в мире Linux является загрузчик GRUB
    к сожалению, самым популярным является grub2, по сравнению с предыдущией версией это монстроуозное наслоение технологий, причем оно продолжает меняться, к сожалению не там и не так как ожидается.

    p.s. недавно пытался сделать простейшую вещь — клонирование ubuntu 16 с одной флешки на другую — форматирование, копирование файлов, установка grub2, на последнем этапе, при запуске с указанием пути до целевого root-directory получил отлуп — что то не поддерживается, запуск с целевого диска из chroot так же не сработало, так как времени у меня было ограничено, у меня не получилось разобраться.
    Но я точно помню, пару лет назад эта операция у меня не создала никаких проблем.


    1. artemlight
      27.02.2017 13:19

      GRUB — на удивление функциональный загрузчик, многие косяки можно даже из recovery shell поправить.
      А клонирование с флешки на флешку — там же две секунды делов. dump\restore (или rsync), потом поправить id корневого раздела в fstab и в grub.conf. Потом делаем grub-install /dev/sda — и всё.

      Причем если в фстаб не поправить — будет паника ядра с невозможностью примонтировать корневой раздел (лечится только через лайвсиди), а вот если в grub.cfg не поправить — то сам это можно провернуть через сам загрузчик двумя командами.


      1. rPman
        28.02.2017 22:06

        само собой я знаю про grub-install и grub.cfg, раньше был ключ --root-firectory, теперь только --boot-directory и в ответ он мне написал что что то не поддерживается, извиняюсь что не могу дать точнее информации, я был просто неготов к такому и не запомнил не сохранил подробностей
        мало того просто установка на диск (dos разметка 1 primary раздел) проходила без ошибки но загрузка с флешки не получалась (целевая флешка была 16Gb, я работал с 32Gb так что вопрос о поддержке их биосом не стоял)


  1. Taciturn
    26.02.2017 13:50

    Актуальные версии grub4dos находятся по адресу http://grub4dos.chenall.net/categories/downloads/.