Введение
На компьютере загружается 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)
Taciturn
26.02.2017 13:50Актуальные версии grub4dos находятся по адресу http://grub4dos.chenall.net/categories/downloads/.
rPman
p.s. недавно пытался сделать простейшую вещь — клонирование ubuntu 16 с одной флешки на другую — форматирование, копирование файлов, установка grub2, на последнем этапе, при запуске с указанием пути до целевого root-directory получил отлуп — что то не поддерживается, запуск с целевого диска из chroot так же не сработало, так как времени у меня было ограничено, у меня не получилось разобраться.
Но я точно помню, пару лет назад эта операция у меня не создала никаких проблем.
artemlight
GRUB — на удивление функциональный загрузчик, многие косяки можно даже из recovery shell поправить.
А клонирование с флешки на флешку — там же две секунды делов. dump\restore (или rsync), потом поправить id корневого раздела в fstab и в grub.conf. Потом делаем grub-install /dev/sda — и всё.
Причем если в фстаб не поправить — будет паника ядра с невозможностью примонтировать корневой раздел (лечится только через лайвсиди), а вот если в grub.cfg не поправить — то сам это можно провернуть через сам загрузчик двумя командами.
rPman
само собой я знаю про grub-install и grub.cfg, раньше был ключ --root-firectory, теперь только --boot-directory и в ответ он мне написал что что то не поддерживается, извиняюсь что не могу дать точнее информации, я был просто неготов к такому и не запомнил не сохранил подробностей
мало того просто установка на диск (dos разметка 1 primary раздел) проходила без ошибки но загрузка с флешки не получалась (целевая флешка была 16Gb, я работал с 32Gb так что вопрос о поддержке их биосом не стоял)