Создание своей версии gfxmenu

Здесь будет рассказано как скачать, модифицировать и собрать gfxmenu для себя, как изменить меню и как поменять картинку.

Для начала нам нужно доустановить пакеты для сборки gfxmenu.
urpmi gfxboot gfxboot-devel

Затем скачиваем исходники темы MagOS. Это можно сделать через браузер на странице https://github.com/magos-linux/magos-linux/releases либо командой
git clone https://github.com/magos-linux/magos-linux.git

Переходим в папку make_MagOS/files/devel/gfxmenu/MagOS. Здесь лежат исходники для сборок 2014* и патчи для сборок 2016.64

Применяем патчи
patch -p1 -i patch_gfxmenu_2016.diff
patch -p1 -i patch_gfxmenu_2016_i3.diff

Вносим свои правки. Можно добавить свою рабочую среду по аналогии с тем как это было сделано в патче patch -p1 -i patch_gfxmenu_2016_i3.diff. Можно изменить фоновую картинку, которая лежит data-boot/back.jpg Картинку необходимо заранее обработать скриптом …/convert_back_jpg

mogrify -strip back.jpg
convert back.jpg -colors 24 back.jpg
convert back.jpg -resize 1024x768\! back.jpg
djpeg -bmp back.jpg > back.bmp
cjpeg -quality 85 back.bmp > back.jpg
rm -f back.bmp

здесь используется разрешение 1024x768. Если вы планируете изменить видеорежим в загрузчике, то можно указать в скрипте нужное разрешение. Получившуюся после скрипта картинку необходимо положить взамен стандартной data-boot/back.jpg

Собираем gfxmenu командой make
В результате выполнения команды получается 2 файла - gfxmenu gfxmenu_ru - соответственно для английского и русского языков по умолчанию

Заменяем получившимися файлами файлы gfxmenu в загрузчиках

1 лайк

Добавлю. Чтоб заменить только фон в уже собранном gfxmenu можно обойтись без пересборки. Вот так:

gfxboot --add-files back.jpg -a gfxmenu

Но новый back.jpg нужно предварительно “правильно” подготовить, как выше описал Михаил.

Creating a new theme with gfxboot-devel is not for the faint hearted.
(Источник):smile:

у нас загрузчик уникален в том что меню работают в grub4dos и syslinux. В остальных дистрибутвах были проблемы с этим. Да и исходники там трудно понимаемы. Я не помню чью брал за основу, но изрядно помучится пришлось.
Поэтому рекомендую пользоваться нашей версией

Та неее… Я просто пытался найти какой-нить мануал по “gfxboot” и зацепился за эту фразу :slightly_smiling_face:
Но ,похоже, мне ещё рановато gfxmenu переписывать ( у меня вопросы возникают после прочтения каждой 2-й строчки), надо подучиться “на кошках”.
Да и проблемы, для меня, особой нет, через “desktop=mate” войти :slightly_smiling_face:.

Несколько не в тему. В сборке prar, для которой делал UIRD есть скрипт, который транслирует menu.lst в формат конфига grub2. На моих примерах с uird - срабатывал правильно. Автор sfs, думаю не будет против если украдем :slight_smile: :

#!/bin/sh
#191021 sfs Конвертер меню grub4dos в grub2
C(){
egrep -v '^#' $1 \
    | sed 's/^title\(.*\)$/menuentry "\1" {/ ; s/find /search /
    s/^default /set default=/' \
    | sed 's/^timeout /set timeout=/' \
    | sed 's/--set-root/--set=root/' \
    | sed 's/--ignore-floppies/--no-floppy --file/' \
    | sed 's/%\(.\)%/${\1}/g' \
    | sed 's/kernel /linux /' \
    | sed 's/;/\\;/g' \
    | sed 's/^\(\(initrd\|lock\|pause ---\|halt$\|reboot$\|configfile \|chainloader \).*\)$/\1\n}/' \
    | sed 's/\(\(plpbt.bin.gz\|memtest.gz\).*\)$/\1\n}/' \
    | sed '/\(plpbt.bin.gz\|memtest.gz\)/s/linux /linux16 /' \
    | sed '/^menuentry /s#\\n##g' \
    | sed 's/^lock/true/' \
    | sed 's/^configfile /configfile $prefix/' \
    | sed 's/pager on/set pager=1/' \
    | sed 's/^pause .*$/echo "---Press escape to continue to the main menu---"\nsleep --interruptible 9999/' \
    | sed '/▁▂▃▄▅▆  Grub2/,+4d' \
    | sed 's/ load=/ \\\n\tload=/' \
    | sed 's/ noload=/ \\\n\tnoload=/' \
    | sed 's/^\(set \+\([^=]\+\)=.*\)$/\1\nexport \2/' \

#    | sed 's/^\(set \+\([^=]\+\)=.*\)$/\1\nexport \2/' \
#s замена /этого/на это/
#^\(....\)$ - запомнили1 всю строку ; '$' - конец строки
#^set строка начинается c 'set '
# \+ .пробел >= 1 раз 
#\([^=]\+\) запоминаем2 этот курок текста, где  - любой символ кроме "=" >= 1 раз 
#=.* - равно и далее  сколько угодно любых символов
#\1 - вставить 'запомнили1' , т.е. первое запоминание
#\n - перевод строки
#export - добавляемый текст
#\2 вставляем 'запоминаем2'

#    | sed 's,configfile /menu\([0-9]\?\)\.lst,configfile /grub\1.cfg,' \
#    | sed 's/^\(initrd .*\)$/\1\n}/' \
#    | sed 's/lock/}/' \
}
for i in `ls -1 menu*.lst` ;do
#    echo $i
    C $i >EFI/BOOT/$i
done

ну тогда вот https://yadi.sk/d/CEtSn95wkFl3BQ , можете скачать готовый
я наскоро делал, но должно работать

2 лайка

Спасибо!

Сработало! Осталось разобраться “Как?”, но это уже “my way” :slightly_smiling_face:

Спасибо, выбор MATE в графическом меню появился, работает :slight_smile:
И, насколько пока наблюдаю, настройки сети и особенно Wi-Fi там заметно проще и стабильнее, чем в Plasma/KDE. По крайнеё мере, в моём ноуте Toshiba U840 радиочип RTL8723AE подхватывается сразу и особо не глючит, а если и отрывается из-за помех – подключается сам и без танцев с бубном в NetManager.